Problème macros liées à des listes déroulantes en cascade
Bonjour,
J'aimerais créer une feuille Excel de remarques qui puissent se remplir semi-automatiquement avec l'aide de listes déroulantes en cascade.
Les listes comportent 3 niveaux : CATEGORIE > SUJET > REMARQUE (chacun dans une feuille séparée)
Les tableaux de listes dynamiques ont été créés et nommés. J'essaye de créer des macros (une pour chaque niveau) permettant de renvoyer la liste déroulante correspondante dans une cellule sélectionnée. J'ai déjà créée la première macro permettant de choisir la catégorie souhaitée dans la cellule sélectionnée en cliquant sur le bouton "AJOUTER CATEGORIE".
Maintenant j'aimerais faire une macro permettant de renvoyer les "SUJET" de la catégorie choisit précédemment (l'utilisateur devrait juste sélectionner une cellule et appuyer sur le bouton "AJOUTER SUJET" pour lancer la macro).
J'ai essayé d'utiliser la fonction INDIRECT mais les tutoriels que j'ai trouvés utilisent cette fonction uniquement pour renvoyer une liste associée à une certaine cellule. Dans mon cas, j'aimerais que l'utilisateur puisse choisir une "CATEGORIE" dans n'importe quelle cellule de la feuille et ensuite choisir un "SUJET" associé à la catégorie précédemment choisie dans n'importe quelle cellule. L'utilisateur devrait également être capable de renvoyer différents "SUJET" dans différentes cellules associées à la même "CATEGORIE".
J'ai ensuite essayé de faire une macro détectant la première cellule remplie (étant une "CATEGORIE") sur une ligne au-dessus de la cellule sélectionnée avant de lancer la macro pour ensuite lui faire renvoyer la liste associée à la valeur de la cellule détectée
Je souhaiterais faire également la même chose par la suite pour choisir une "REMARQUE" parmi les "SUJET" choisis précédemment.
Pourriez-vous m'aider à trouver une solution ? Peut-être que mon explication n'est pas très claire alors n'hésitez pas à me demander plus de renseignements si nécessaire. Je suis un débutant en Excel alors si possible restez dans la facilité. Vous trouverez ci-joint le tableau avec la feuille à compléter et les 3 feuilles de listes en pièces jointes. Merci d'avance.
Max
Bonjour
Tu n’utilises par la bonne méthode: il faut créer
une liste des Catégories (tu l'as mais on ne laisse pas de lignes vides dans un tableau
une liste Catégorie-Sujet avec une colonne Catégorie et une colonne Sujet qui permet d'avoir la sous-liste de sujets par catégorie (toujours sans ligne vide)
Une liste Catégorie-Sujet-Remarque avec les 3 colonnes Catégorie, Sujet, Remarque
Avec 365 tu peux te contenter de la 3ème liste : les 2 autres étant générables par PowerQuery à partir de cette liste
Ensuite pas besoin de code : une simple validation utilisant une formule nommée permet de dynamiquement afficher la liste déroulante de 2ème ou 3ème niveau
Bonjour et bienvenu sur le forum
Salut 78chris
Toutes tes données ont été converti en tableau structuré (pas besoin de changer les formules si tu ajoutes des données)
Ci joint ma solution (par macro)
A+ François
Bonjour à tous,
Une autre façon de faire SANS VBA dans l'onglet A COMPLETER2
Procédure à suivre :
1 Transformer toutes les bases de données en Tableaux structurés (TS) indépendants (Pour ce faire il vaut mieux insérer une colonne vide entre les TS)
2 Adapter leur nom en "T_" suivi du nom des données Exemple :
Catégorie : T_LISTE_CATEGORIES
Sujet : T_TRAVAUX
Remarques : T_PGC
Le "T_" est là pour permettre de distinguer dans la liste des noms les TS (ceci est une idée personnelle et donc pas obligatoire - à toi de voir mais c'est une habitude que j'ai prise pour me faciliter la vie)
3 réserver une ligne "vide" en entête de façon à ce que, quand on clique pour afficher la liste déroulante, elle commence par le début de la liste
Attention : si tu veux trier un tableau soit tu n'inclus pas cette ligne car comme elle est vide elle ira se mettre derrière ce qui n'est pas le but soit, avant de trier, tu mets un "espace" dans la cellule ; tu tries et l'espace permet de situer en première position la ligne et ensuite tu effaces l'espace pour remettre la cellule à vide.
4 Onglet A COMPLETER2 :
- dans la cellule C4 insérer une liste déroulante avec comme formule :
=INDIRECT("T_LISTE_CATEGORIES")
- dans la cellule C6 insérer une liste déroulante avec comme formule :
=INDIRECT("T_"&$C$4) où C4 contient le nom de la catégorie et la liste présentera uniquement les Sujets de la catégorie
- dans la cellule C8 insérer une liste déroulante avec comme formule :
=INDIRECT("T_"&$C$6) où C6 contient le Sujet et la liste présentera uniquement les Remarques du Sujet
J'ai déjà adapter une grande partie de cette procédure mais je n'ai pas terminé d'une part car c'est relativement long à mettre en place mais aussi pour te permettre à t'exercer pour les MAJ futures.
Ce qui a été réalisé :
- Le TS Catégories
- Tous les TS Sujets
Tous les TS Remarques sont faits (uniquement ceux avec un titre - ceux sans titre doivent encore être créés sous forme de TS) avec insertion d'une colonne vide entre chacun d'eux
L'adaptation des noms pour les Remarques sont partiellement adaptés (tous ceux dont le titre est en "Blanc donc ceux en noir doivent encore être adaptés si tu ne sais pas faire contacte moi). Donc ceux en noir n'apparaîtront pas dans la liste.
Voilà, j'espère que cette solution t'aidera.
Si la solution t'intéresse et que mes explications ne sont pas claires contacte moi (ou si tu veux que j'achève le paramétrage)
Bonne continuation
Chris
Bonjour à tous,
Tout d'abord, merci à vous de m'avoir répondu aussi rapidement. Vous m'avez tous proposé de bonne idées différentes. Cependant, j'aurais besoin de plus de précisions si possible.
78chris, je n'ai quasiment jamais utilisé PowerQuery avant, est-ce que tu pourrais me donner plus de détails sur la méthode à employer une fois la 3ème liste (avec les 3 colonnes) faite ?
fanfan38, ta méthode fonctionne comme ce que je souhaitais obtenir !!
Cependant, est-ce qu'il serait possible d'ajouter dans la même colonne une deuxième cellule de catégorie puis de nouveaux sujets et remarques liés à cette nouvelle cellule ?
De plus, est-ce que tu pourrais m'expliquer ce que tu as fait concrètement ? Je vois que la formule dans validation des données se met à jour automatiquement selon la sélection faite mais je ne comprends pas vraiment comment tout ça fonctionne.
Aussi, est-ce que mes anciennes listes ont toujours un rôle dans le fonctionnement ou est-ce qu'il est possible de les retirer ? Une fois le fichier terminé, je ne serais plus la personne le mettant à jour, j'essaye donc de le simplifier au maximum pour les futurs utilisateurs.
Enfin, les espaces vides avaient été laissés pour que les futurs utilisateurs puissent rajouter eux-mêmes des données au tableau. S'il faut les retirer je mettrais des "X" à la place. Comment est-ce que je pourrais redéfinir les plages de tous les tableaux créés ?
CHRIS1945, tes explications sont très claires, je vois comment tout cela fonctionne.
Cependant, je retrouve le même soucis que j'avais à la base, les cellules de SUJET et REMARQUE renvoient à une cellule fixe (ici C4 puis C6), le fichier serait fonctionnel mais avec une structure non adaptable (les utilisateurs seraient obligés de remplir telle information dans telle cellule du tableau).
J'aimerais pouvoir faire en sorte qu'ils puissent afficher des données des listes dans les cellules qu'ils souhaitent. Est-ce que tu connaitrais un moyen de remédier à ce problème avec ta méthode ?
Merci d'avance.
Max
Bonjour
Tu peux ajouter autant de catégorie que souhaité. Idem pour les sujets et les remarques.
Par contre, comme on te l'a tous dit avec des tableaux structurés.
J'ai gardé les plages nommées que tu avais faite mais tu peux aussi utiliser, comme le propose chris45 (Salut), la fonction indirect et le nom du tableau...
En fait j'utilise l'évènement change de la feuille et l'adresse de la cellule changée…
A+ François
D'accord je continuerai avec les tableaux structurés, par contre comment rajouter une deuxième catégorie ? Une erreur se produit lorsque je déplace les cellules que tu as déjà rempli.
J'ai regardé comment fonctionne l'évènement que tu as utilisé mais je n'arrive pas vraiment à comprendre comment il fonctionne dans le fichier. Tu pourrais m'expliquer ? Encore une fois je suis vraiment un débutant, je n'avais jamais utilisé d'évènement avant.
Merci d'avance
Max
Bonjour
Peux tu donner un exemple de ce que tu veux
A+ François
Bonjour,
Tu trouveras ci-joint le fichier modifié. J'ai rajouté une deuxième catégorie TRAVAUX sur la même feuille (A COMPLETER) à partir de la ligne 50. Est-ce qu'il serait possible de lier les cellules en dessous de TRAVAUX automatiquement ?
J'ai également déplacée une des cellules de SUJET que tu avais liée. Une erreur se produit. Est-ce qu'il serait possible de régler ce problème pour que les utilisateurs puissent changer l'emplacement des cellules à compléter comme il le souhaite ?
Dans ta feuille d'évènement CHANGE, il y a les 2 parties renvoyant les formules saisies à certaines cellules que je ne comprends pas complètement (voir détails ci-joint). Est-ce que tu pourrais m'expliquer comment cela fonctionne ?
Merci d'avance.
Max
Bonjour
J'ai simplifié et détaillé la macro
Je reste à ta disposition pour toute explication
A+ François
Merci beaucoup !
Grâce à ton fichier et à la méthode qu'à donné CHRIS1945, j'ai pu aboutir au résultat que je voulais
Par contre, il reste un petit problème. J'ai liée des macros à des formes pour en faire des boutons d'exécution de macro mais j'ai une inconsistance avec leur fonctionnement.
Lorsque j'ai terminé mon fichier, je l'ai séparé en 2 et j'ai gardé l'original. Depuis les 3 fichiers ont ce problème.
Lorsque je clique dessus, des fois la macro se lance sans problème mais des fois je passe à travers pour sélectionner la cellule d'en dessous (pareil avec les listes déroulantes parfois). Est-ce que quelqu'un aurait une idée de l'origine du problème ?
Je joins l'un des fichiers problématiques en pièce jointe (composé d'une feuille à compléter avec des remarques et d'autres feuilles avec des tableaux structurés).
Merci d'avance.
Max