Listes en cascade

Johnnyjohn

XLDnaute Nouveau
J'ai crée 3 listes déroulantes "en cascade" : par exemple:

-En A1 on a une liste déroulante FRUIT / LEGUME / PRODUIT LAITIER...

-Si on choisit FRUIT, alors en B1 on a le menu déroulant associé POMME / POIRE / PECHE...

-Et si on choisit POMME en B1 alors en C1 on a le choix GOLDEN / ROYAL GALA / GRANNY SMITH ...


Pour ce faire, en B1 j'ai utilisé la formule =INDIRECT (A1) dans le menu "Validation / Liste" (et en C1 j'ai mis =indirect(B1))

Ca marche très bien mais il y a un petit souci : Après avoir sélectionné FRUIT en A1, puis POMME en B1 et enfin GOLDEN en C1; on a la possibilité de changer A1, mais B1 et C1 restent inchangés. On se retrouve donc avec (par exemple) :
PRODUIT LAITIER (en A1); POMME (en B1) et GOLDEN (en C1); ce qui ne va pas !

Quelqu'un connait-il une façon de corriger ce défaut ?
Merci de votre aide
 

abcd

XLDnaute Barbatruc
Re : Listes en cascade

Bonjour et soit le bienvenu sur ce forum,

Les erreurs en informatique se situent, dans plus de 99% des cas, entre le clavier et la chaise.

Si tu remplaces le moteur essence de ta voiture par un moteur diesel et que tu oublies de vidanger le réservoir pour remplacer l'essence par du diesel, tu auras forcement des problèmes.

La seule méthode que je connaisse est de placer une MFC sur les deux dernières cellules qui attribue une police blanche (= même couleur que celle de la cellule) ou un motif rouge (pour attirer l'attention) lorsque la donnée qui s'y trouve ne correspond pas à la donnée de la cellule précédente.

abcd
 

Johnnyjohn

XLDnaute Nouveau
Re : Listes en cascade

Pour la MFC: quelle formule utiliser ?

Toutes les listes du classeur sont nommées (liste "FRUITS", liste "POMME", etc...)

Ainsi, les choix proposés dans la cellule A1 correspondent à des noms de listes; c'est également le cas en B1.

J'avais pensé utiliser une formule EQUIV pour aller chercher C1 dans la liste dont le nom figure en B1: si C1 n'est pas dans la liste (résultat NA), mettre en rouge par exemple.

Mais je n'arrive pas à rédiger la formule: on ne peut pas utiliser le contenu d'une cellule pour désigner une liste dans une formule:
Si on a "POMME" en B1 et si on écrit EQUIV(C1;B1...), Excel cherche C1 dans B1 au lieu de chercher C1 dans la liste POMME !!!

Quant au VBA, je préfère ne pas me lancer là dedans parce que le tableau sera accessible à différents utilisateurs dont je ne maitrise pas le niveau de sécurité vis à vis des macros. Cependant ca sera peut etre la seule solution...

Merci!
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Listes en cascade

Bonjour,

Voir MFC en PJ

=NB.SI(INDIRECT(SUBSTITUE(A2;" ";"_"));$B$2)=0

Remarques:

-Il faut utiliser =INDIRECT(SUBSTITUE(A2;" ";"_")) (noms avec espaces comme produit laitier e.g.)

-La technique classique des listes en cascade utilise les noms de champs et la fonction=Indirect()
La maintenance des noms de champs en cas d'ajout/suppression peut devenir fastidieuse lorsque le nombre de champs devient important.
En outre, les listes en cascade ne supportent pas les champs dynamiques.


JB
Formation Excel VBA JB
 

Pièces jointes

  • Exemple%20JohnnyJohn(1).xls
    23.5 KB · Affichages: 301
Dernière édition:

abcd

XLDnaute Barbatruc
Re : Listes en cascade

Bonjour,

Une façon de faire en pièce jointe.
Vois les formules en MFC (menu Format / Mise en forme conditionnelle).
L'option retenue est un motif et une police rouge, mais cela peut être modifié.

Mais il y avait un problème préalable.

Lorsqu'une plage de cellules est nommée du nom d'une chaine de caractères contenant au moins une espace, Excel remplace automatiquement cette espace par un trait de soulignement (_), par exemple HARICOTS VERTS devient HARICOTS_VERTS.

De ce fait la fonction INDIRECT vers une cellule contenant cette chaine de caractères avec espace(s) ne fonctionne pas.
Les formules des listes de validation ont été modifiées en conséquence.

Dis-moi si cela te convient.

abcd
 

Pièces jointes

  • JohnnyJohn V1.zip
    5.4 KB · Affichages: 230
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 596
Membres
103 252
dernier inscrit
Ersar