Rapport de message :*
 

Re: Créer une liste déroulante sous conditions

Titre du sujet : Re: Créer une liste déroulante sous conditions
par JeanMarie le 10/07/2011 08:29:41

Bonjour SylCoco, Didier, le forum

La liste de validation a un inconvénient, elle n'accepte pas "directement" une plage de données ne se trouvant pas sur la même feuille, ce qui est le cas dans ton explication, Mais on peut contourner ce problème en définisant une plage de cellules.

En version 2003, pour définir une plage il faut renseigner les deux champs de la boîte de dialogue du menu Insertion/Dénifir...
Dans la boîte de dialogue, tu indiques dans le champ en haut, le nom que tu veux y donner, dans le champ fait référence, tu indiques ici la plage de données (exemple =Feuil1!A2:A151).

Dans =Feuil1!A2:A151 la plage est invariable, elle n'est pas "dynamique", pour se faire on utilise soit la fonction INDIRECT ou la fonction DECALER.
On va utiliser la fonction DECALER, elle retourne une plage de données, dont la longueur et le haut de plage sont déterminées par calculs. Regarde dans les tutoriaux, je te laisse rechercher tu y trouveras des tonnes de choses.

Avant de continuer, lit le tutoriel.

Dans la boîtes de dialogue, j'ai nommé la plage "Communes", et dont la référence est :
=DECALER(Feuil1!$A$1;EQUIV(Feuil2!$A$1;Feuil1!$B:$B;0)-1;;NB.SI(Feuil1!$B:$B;Feuil2!$A$1))
après validation, il reste à déclarer cette plage dans la référence de la liste de validation
=Communes

Pour faire simple :
      - La fonction EQUIV, permet de retourner le n° de la ligne qui contient la valeur du premier argument, dans la plage du deuxième argument, elle va déterminer le positionnement de départ de la plage.
      - la fonction NB.SI, retourne le nombre de valeurs (2ème argument) contenues dans la plage du 1er argument, elle va déterminer la longueur de la plage.

Essaye avec le fichier joint pour l'adapter à ton fichier.

@+Jean-Marie