Liste deroulante en cascade dans VBA
Bonjour le forum, bonne fêtes de pâques.
Je reviens vers vous, après des heures d'essai, pour résoudre un problème concernant la réalisation de liste déroulante en cascade dans VBA
Ci-après le code en question, j'ai une erreur sur la partie : Formula1:="=INDIRECT(SUBSTITUTE(A6,"" "",""_""))"
Sub listederoulante()
With Worksheets("Feuil1").Range("A6").Validation
.Delete
.Add Type:=xlValidateList, _
Formula1:="=Liste"
.IgnoreBlank = True
.InCellDropdown = True
End With
With Worksheets("Feuil1").Range("B6").Validation
.Delete
.Add Type:=xlValidateList, _
Formula1:="=INDIRECT(SUBSTITUTE(A6,"" "",""_""))"
.IgnoreBlank = True
.InCellDropdown = True
End With
End Sub
Je vous remercie d'avance pour votre aide.
Bonne journée.
Salut Lechiffre,
Si après 12 heures d'attente tu n'as pas de réponse sur notre Forum, c'est peut-être car tu n'as pas joint de fichier à ta demande
Cordialement.
Bonsoir Yvouille, bonsoir le forum,
En effet, j'ai pas joint de fichier à ma demande car j'importe les données de liste déroulante dans un autre classeur, cependant si ça peut aider un intervenant pourquoi pas.
Ci-joint un fichier test.
Merci d'avance le forum.
Cordialement,
Salut,
Pour ma part, j’arrive très souvent à aider les membres si j’ai tous leurs outils à disposition et que je peux tester leur macro à améliorer/corriger dans des conditions réelles. Dans ton cas, je n’ai pas trop l’envie de tenter de comprendre comment tu importes les données de cet autre fichier si tu ne veux pas me le fournir aussi, avec un ou deux mots d’explication (par exemple est-ce que tes deux fichiers sont ouverts conjointement lorsque tu lances la macro d’importation ?).
Cordialement.
Re bonsoir Yvouille,
Merci pour votre réponse, je procède comme suit pour mes listes déroulantes :
1- j'importe les données servant à établir les listes déroulantes dans des fichiers Excel fermés, ( dans ce fichier Excel : la colonne A contient les grandes familles de choix et les autres colonnes, ca va jusqu'à la colonne K ( de B à K) les sous familles de choix).
2- je copie ces données dans un autre fichier Excel que j'ouvre aussi avec cette même macro.
3- je nomme les champs pour les listes déroulantes.
4-Je me positionne dans validation de données pour obtenir mes liste en saisissant la formule : INDIRECT(SUBSTITUE( N° cellule ; " ";"_")), puis je valide ( un message d'erreur s'affiche lors de cette deuxième validation, je ne saurais l'interpréter correctement).
Comme je fais cette opération plusieurs fois par jour, je souhaiterais l'automatiser.
Si je peux vous fournir plus d'information, j'y répondrai sans faute.
J'ai parcouru le forum sur ce sujet mais je n'arrive pas à résoudre ce problème.
Je pense que le problème vient du fait que lors de la validation de données ( pour la liste en cascade ) étant que la cellule dépendante est vide, mais je ne suis pas sur.
Merci encore.
Cordialement,
Pardon, j'ai oublié un détail,
Les deux fichiers sont fermés quand je lance la macro.
Lorsque j’ai dit que je ne pouvais (ou ne voulais) pas me lancer dans la compréhension de ton problème sans avoir tous les outils à disposition, je parlais de tous tes fichiers concernés. Apparemment tu travailles – selon ce que j’ai compris de tes explications – avec trois fichiers différents ; merci de les fournir.
Ton étape 1 semble être une macro que tu lances. Dans quels fichiers se trouve-t-elle et comment la lances-tu (depuis un bouton sur une feuille ?) ?
Etape 3 : comment fais-tu cela ? Merci de préciser dans quel fichier tu te trouves alors, sur quelle feuille.
Etape 4 : Dans quel fichier ? Sur quelle feuille ?
NB : probablement pas de réponse avant le week-end.
Amicalement.
Bonjour Yvouille, bonjour le forum,
Je vais essayer d’être un peu plus précis.
Je travaille sur 3 fichiers, les listes déroulantes dans le fichier1 sont obtenues une fois la macro est lancée.
Avant le lancement de cette macro, les fichiers 1 et 2 sont fermés, je lance donc la macro qui se trouve dans le fichier3 : elle ouvre le fichier 1 puis elle ouvre le fichier2, elle copie des données de liste déroulante du fichier2 et colle ces données dans la feuille2 du fichier 1. Elle définit les noms dans le menu Formule, puis crée les listes déroulantes dans le fichier1.
Pour la Première liste déroulante en cellule J12 (pas de problème), cependant elle s’arrête à la deuxième liste en K12 en saisissant la formule INDIRECT (SUBSTITUE(…)). (Liste en cascade).
Je précise que mon problème concerne la partie du code ou il y a la formule :
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=INDIRECT(SUBSTITUE(J12;"" "";""_""))"
J’espere que j’ia rien oublié.
Ci-joint les 3 fichiers.
Merci le forum.
Cordialement.
Salut,
Les fichiers que tu me fournis ne m’aident que moyennement, puisqu’il y a une partie du code dont tu as remplacé les textes par des points. Mais de toute façon, si ces textes font références à l’arborescence de ton ordinateur, ça ne me sert pas à grand-chose.
Pense que lorsque tu as un problème concernant plusieurs fichiers, si tu les places tous dans le même dossier de ton arborescence et que tu fais références à leur emplacement à l’aide de l’instruction ThisWorkbook.Path (soir le ‘’Chemin d’accès de ce fichier’’), je peux utiliser cette référence sur mon ordinateur également. Par contre, lorsque tu dis que ton fichier est par exemple au chemin suivant, ça ne passe pas chez moi : Workbooks.Open Filename:= "C:\.........\.........\.......\Fichier2_données_liste_déroulante.xlsx".
Mais je commence quand même il me semble à voir un tout petit peu plus clair dans ton problème et peut-être que je vais pouvoir t’aider d’une autre manière. Je vois que tu as enregistré deux macros pour la saisie de validation de données et éventuellement que si tu me fournissais un ‘’Fichier obtenu’’ dans lequel deux listes de validation fonctionnaient (si nécessaire suite à une saisie manuelle), je pourrais peut-être t’indiquer comment le faire également par macro, soit t’indiquer pourquoi l’enregistrement de ta macro ne te permet pas de reproduire cette étape de ton travail. En d’autres mots – sur la base d’un fichier fonctionnant - je vais voir comment reproduire cela en macro.
A te relire.
Bonsoir Yvouille, merci pour votre réponse,
Ci-joint un fichier ou la saisie manuelle fonctionne.
Par contre pour le chemin d'accès, si cela pourra vous aider, je vous donnerais mon chemin d'accès.
Je l'ai supprimé pour ne pas vous induire en erreur.
Merci pour l'intérêt que vous portez a mon poste.
Cordialement,
Bon dimanche.
Salut,
Lorsqu’un membre pose une question, on ne peut pas savoir d’où vient le problème et dans des cas comme le tien où ça se joue sur plusieurs fichiers, l’erreur peut venir à tous les niveaux, raison pour laquelle je t’ai demandé ta constellation complète. Par exemple je voulais comprendre et contrôler si le blocage que tu indiquais venait d’une instruction antérieure.
Ayant reçu tous tes fichiers, j’ai constaté que dans ton cas le problème ne devait venir que du passage indiqué en tout premier et j’ai pensé pouvoir t’aider en ayant en plus à disposition un fichier qui fonctionnait manuellement.
Je t’ai encore indiqué – mais uniquement d’une manière générale, puisque dans ton cas c’était devenu inutile –que si tu as des macros avec des passages faisant référence à des chemins qui sont propres à ton arborescence, il fallait essayer d’utiliser à la place l’instruction ThisWorkbook.Path qui fonctionne sur toutes les machines (et qui peut également faciliter grandement l’écriture de tes codes dans certaines situations).
Ceci étant dit, je dois t’avouer que je suis dépassé par ton problème
https://forum.excel-pratique.com/excel/liste-de-validation-en-vba-t92315.html
Cordialement.
Bonjour Yvouille, bonjour le forum,
Avant de clôturer ce poste, sur vos conseils, je tiens à vous remercier du temps que vous avez consacré à mon problème.
Grand merci Yvouille.
Cordialement,