Listes en cascade

Dolichotis Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,


Je voudrais faire des listes en cascade sur Excel 2003 (en vba) : c'est-à dire que si le choix de Liste1 est Elément7 alors j'aurai une liste spécialement pour cet élément.
Enfin, plus exactement j'ai trouvé des exemples mais je voudrais comprendre comment ça marche (voilà pourquoi je suis ici ;) ) pour l'adapter à mon problème.

Exemple :

Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Range("B2:B7"), Target) Is Nothing And Target.Count = 1 Then
      Target.Offset(0, 1) = Range(Target)(1)
   End If
End Sub


Je sais qu'on me dira de regarder dans l'aide en ligne d'Excel mais je ne l'ai pas ! Est-ce qu'on pourrait m'expliquer à quoi correspond Intersect, . count, etc (dans le contexte) ?

Je vous remercie de votre aide,

5 réponses

m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 
Bonjour,

Je ne vois pas de listes en cascades dans ton exemple.
Il s'agit juste d'une macro événementielle qui fonctionne lorsqu'on modifie une cellule comprise dans la plage B2:B7

m@rina
0
Dolichotis Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour Marina,

Et que fait cette macro exactement ?
Je l'ai trouvé sur un site pour faire des listes en cascade mais il me manque l'explication pour l'adapter à mon problème.

L'idée c'est selon la valeur (texte) d'une cellule située dans une plage de cellules (exemple : C10:C1000), qu'on me propose dans une cellule correspondante (exemple : E10:E1000) une liste spécifique.
Si tu as une méthode à m'expliquer, je suis preneuse !

Exemple :
j'ai "pomme" en C15 on me propose "verte, jaune, rouge" en E15
j'ai "voiture" en C16 on me propose "renoir,cageot, citron" en E16

Merci !
0
m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 

Je suppose que tu parles du classeur de Jacques Boisgontier...
Est ce que tu as fait exactement ce qu'il dit ? As-tu créé toutes tes listes ? Les as-tu nommées ?

m@rina
0
Dolichotis Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour Marina,

Oui c'est de ceux de JacquesBoisgontier dont je parle. J'ai nommé mes listes.
La macro ne fait pas les listes en cascade ?
En fait, il indique des instructions excel et les instructions vba concernent uniquement la macro... sans commentaires ! J'aimerais bien comprendre à quoi correspond chaque instruction !

Encore merci pour ton aide Marina !
0
m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 
Bonjour,

Je pense que tu n'as pas tout lu ! Tout est expliqué... Les classeurs de Jacques sont toujours extrêmement clairs !
Je suppose que tu parles du premier onglet qui expliquer comment faire des listes en cascades : en fonction de la donnée choisie dans une cellule, la cellule d'à côté propose une liste qui en découle ?

Les listes sont faites via la fonction de validation. Je copie-colle :
==============
Listes en cascade avec noms de champ et Indirect()
La liste des qualifications en C2 dépend du service choisi en B2

1 - Nommer Service le champ E2:E4 (Sélection E2:E4 puis Insertion/Nom/Définir)

2 - Nommer Etudes le champ G2:G5 (doit avoir le nom du contenu de E2)
3 - Nommer Compta le champ G8:G10 (doit avoir le nom du contenu de E3)
4 - Nommer Fabric le champ G13:G15 (doit avoir le nom du contenu de E4)

5 - Sélectionner B2:B7
6 - Données/Validation :
Choisir Liste puis =service dans Source

7 - Sélectionner C2:C7
8- Données/Validation
Choisir Liste puis =indirect(b2)
Indirect(B2) Pointe sur le champ nommé (Etudes,Compta,Fabric)

-Les listes nommées peuvent être sur un autre onglet
==============

On ne peut pas être plus c:lair ! Les macros, quant à elles, sont à peine utiles ! elles sont là pour un résultat plus pro, à savoir lorsqu'on modifie la données dans la première colonne, on a un sendkey down qui ouvre directement la liste et la seconde cellule affiche directement le choix. C'est tout !
Le mieux, pour copier-coller les 2 macros : clic droit sur l'onglet, Visualiser le code... Tu colles de la même façon dans ton classeur en modifiant les références des plages.

m@rina
0
Dolichotis Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   3
 
Je vais regarder de nouveau. Je pensais qu'il donnait une façon en passant par excel et une autre par une macro...

Merci Marina !
0
Rrradassse
 
Bonsoir,

l'étape "1 - Nommer Service le champ E2:E4 (Sélection E2:E4 puis Insertion/Nom/Définir) " n'explique pas où est "insertion/nom/définir". J'ai essayé en nommant mes liste par selectiond e la liste puis écriture en direct dans la zone nom... et ca ne marche pas :( quand je nomme la source "=indirect(B2) "La source est reconnue comme erronnée"
En regardant la fonction de plus près, il me semble qu'il manque quelquechose (la plage dans laquelle on doit chercher)... j'ai tenté de la mettre avant et après (--> indirect(B2;plage) et indirect(plage;B2) ) et rien n'a marché...

Auriez-vous un exemple simple à partager?

Merci beaucoup,


Rrradassse
0
Raymond PENTIER Messages postés 58990 Date d'inscription   Statut Contributeur Dernière intervention   17 355
 
Euh, oui ! Mais de quoi parles-tu brusquement, 5 ans après la fin de cette discussion ?
0
Rrradassse
 
Bonjour Raymond,

L'explication de JacquesBoisgontier, bien qu'âgée, n'est pas claire chez moi et je n'ai pas la réponse (je ne veux pas de VBA dans mon fichier). Excel n'a pas fait de progrès de ce coté là depuis 5 ans semble-t-il et moi j'ai grandi et j'ai cette problématique des listes déroulantes en cascades aujourd'hui :).

M@rina a souvent été très claire dans ses explications et m'a souvent aidée à résoudre mes problèmes sur Word (5 ans après ;) alors je tente la question... :)

Cordialement,


Rrrady
0
Raymond PENTIER Messages postés 58990 Date d'inscription   Statut Contributeur Dernière intervention   17 355
 
Plutôt que de solliciter "un exemple simple" anonyme, il vaut bien mieux envoyer TON fichier, sur lequel on pourra travailler efficacement.
Utilise https://www.cjoint.com/ pour créer le lien, que tu viendras coller ici.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour Dolichotis, M@rina

Pour le fun, ci joint une liste de validation dynamique très astucieuse VBA (une seule validation de données et utilisation d'une variable de type static !) réalisée par Thierry P. (pseudo: Ti) et André sur un autre forum

Pour apprendre et comprendre, je l'avais commentée pour moi (il y a certainement des trucs que j'avais mal pigé, comme d'hab)

donc, Doilchotios, si ca t'intéresse...

https://www.cjoint.com/?hel7OEfsJH

Il ya aussi une liste de validation très intéressante réalisée par notre ami Gbinforme à voir dans l'onglet "astuces-bueautique" de ce forum.

Michel
0
Dolichotis Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour michel,

Ça a l'air d'être exactement comme je veux faire, je vais regarder plus précisément ! C'est bien les commentaires pour comprendre !

Je te remercie !
0