[VBA excel] liste deroulante a nom variable
Fermé
JsJulieta
-
19 oct. 2006 à 12:04
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 - 26 oct. 2006 à 02:14
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 - 26 oct. 2006 à 02:14
A voir également:
- [VBA excel] liste deroulante a nom variable
- Liste déroulante excel - Guide
- Excel liste déroulante en cascade - Guide
- Supprimer liste déroulante excel - Forum Excel
- Supprimer une liste déroulante excel - Forum Word
- Google sheet liste déroulante - Accueil - Guide bureautique
13 réponses
J'aimerais bien t'aider mais je comprends pas exactement ton problème...
Quel est le résultat obtenu, quelles différence avec celui que tu veux, en quoi c'est genant etc
Quel est le résultat obtenu, quelles différence avec celui que tu veux, en quoi c'est genant etc
JsJulieta
Messages postés
6
Date d'inscription
jeudi 19 octobre 2006
Statut
Membre
Dernière intervention
25 octobre 2006
19 oct. 2006 à 15:29
19 oct. 2006 à 15:29
en fait si tu as en premiere colonne le mot X et puis 3 cellules suivantes sur la meme ligne contenant des infos sur X, je veux creer dans une autre feuille une cellule avec X dedans et a cote une cellule avec liste deroulante comprenant le contenu des 3 cellules precedentes.
pour cela je cree sous vba une liste avec les 3 cellules et je leur attribue un nom, a savoir celui contenu dans la premiere colonne (par exemple X) :
a = Cells(i, 1).Value
ActiveWorkbook.Names.Add Name:=a, RefersToR1C1:= _
"=result!R2C2:R2C4"
je veux creer une liste deroulante pour chacune des premieres cellules, donc creer pour chaque ligne une liste sous vba avec comme nom le contenu de la premiere cellule (le nom de cette liste variera donc pour chaque ligne).
Le probleme est que si la variable a = le contenu de chaque premiere cellule, et qu ensuite la liste doit prendre le nom contenu dans a, eh bien ca bug
Name:=a VBA comprend pas et j arrive pas a trouver la bonne syntaxe
aurai tu une idee?
pour cela je cree sous vba une liste avec les 3 cellules et je leur attribue un nom, a savoir celui contenu dans la premiere colonne (par exemple X) :
a = Cells(i, 1).Value
ActiveWorkbook.Names.Add Name:=a, RefersToR1C1:= _
"=result!R2C2:R2C4"
je veux creer une liste deroulante pour chacune des premieres cellules, donc creer pour chaque ligne une liste sous vba avec comme nom le contenu de la premiere cellule (le nom de cette liste variera donc pour chaque ligne).
Le probleme est que si la variable a = le contenu de chaque premiere cellule, et qu ensuite la liste doit prendre le nom contenu dans a, eh bien ca bug
Name:=a VBA comprend pas et j arrive pas a trouver la bonne syntaxe
aurai tu une idee?
J'avoue que là je vois pas trop le problème...
Met un point d'arret juste avant ta ligne name:=a, et avec la fenetre d'execution VB (affichage fenetre d'execution) regarde ce que contient a en tapant : " ? a" et entrée.
essaye aussi en déclarant ta variable au tout début de ton code
dim a as string
Met un point d'arret juste avant ta ligne name:=a, et avec la fenetre d'execution VB (affichage fenetre d'execution) regarde ce que contient a en tapant : " ? a" et entrée.
essaye aussi en déclarant ta variable au tout début de ton code
dim a as string
autre chose...
il semble que t'oublies d'incrémenter les valeurs des listes à ce niveau
il semble que t'oublies d'incrémenter les valeurs des listes à ce niveau
RefersToR1C1:= _ "=result!R2C2:R2C256"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
JsJulieta
Messages postés
6
Date d'inscription
jeudi 19 octobre 2006
Statut
Membre
Dernière intervention
25 octobre 2006
19 oct. 2006 à 16:52
19 oct. 2006 à 16:52
quand je met le point d arret, a contient "X" (avec les guillemets, normal c est une chaine de caractere) ce qui en theorie est normalement reconnu par la commande Name, enfin c est ce que je croyais!
en fait niveau syntaxe ca devrait etre marque comme ca: Name:="X"
Mais comme le nom varie a chaque fois, je suis obligee de preciser que le nom est egal a la variable a et donc de retirer les guillemets. et si je les mets, il croit que le nom de la liste est a chaque fois le mot "a"
en ce qui concerne la variable, pas de souci elle est bien definie au debut comme une chaine de caractere.
pour: "il semble que t'oublies d'incrémenter les valeurs des listes à ce niveau
RefersToR1C1:= _
"=result!R2C2:R2C256"
il y a en effet une erreur. je croi q les chiffres qui font reference a l emplacement des cellules sont une reference fixe (designe l'emplacement dans la feuille) et pas relative (emplacement par rapport a la cellule selectionnee). du coup ca me fai un probleme supplementaire, car mes chiffres doivent varier en meme temps que je passe a la ligne suivante...
en fait niveau syntaxe ca devrait etre marque comme ca: Name:="X"
Mais comme le nom varie a chaque fois, je suis obligee de preciser que le nom est egal a la variable a et donc de retirer les guillemets. et si je les mets, il croit que le nom de la liste est a chaque fois le mot "a"
en ce qui concerne la variable, pas de souci elle est bien definie au debut comme une chaine de caractere.
pour: "il semble que t'oublies d'incrémenter les valeurs des listes à ce niveau
RefersToR1C1:= _
"=result!R2C2:R2C256"
il y a en effet une erreur. je croi q les chiffres qui font reference a l emplacement des cellules sont une reference fixe (designe l'emplacement dans la feuille) et pas relative (emplacement par rapport a la cellule selectionnee). du coup ca me fai un probleme supplementaire, car mes chiffres doivent varier en meme temps que je passe a la ligne suivante...
Il semblerait que le problème se situe bien au niveau des guillemets...
Je suppose que si tu mets le nom de la liste en dur ca marche... A ce moment là il faut essayer de bidouiller sur ca.
Pour créer ta macro tu as utilisé l'enregistreur?
Sinon pour ton 2ème problème, tu peux passer utiliser l'autre syntaxe 'un truc genre R[2]C[2] qui veut dire la ligne courante + 2, la colonne courante +2 (un truc du genre, ca fait 2 ans que j'ai pas fait de VB excel) ou alors tu te sert de ton i... A mon avis les 2 doivent marcher.
Je regarderai demain pour otn nom de variable
Bonne soirée et bon courage
Je suppose que si tu mets le nom de la liste en dur ca marche... A ce moment là il faut essayer de bidouiller sur ca.
Pour créer ta macro tu as utilisé l'enregistreur?
Sinon pour ton 2ème problème, tu peux passer utiliser l'autre syntaxe 'un truc genre R[2]C[2] qui veut dire la ligne courante + 2, la colonne courante +2 (un truc du genre, ca fait 2 ans que j'ai pas fait de VB excel) ou alors tu te sert de ton i... A mon avis les 2 doivent marcher.
Je regarderai demain pour otn nom de variable
Bonne soirée et bon courage
JsJulieta
Messages postés
6
Date d'inscription
jeudi 19 octobre 2006
Statut
Membre
Dernière intervention
25 octobre 2006
19 oct. 2006 à 17:31
19 oct. 2006 à 17:31
ok ca marche pour les references de liste je vai utiliser ce que tu m a conseille
pour creer le programme, je me suis efectivement base sur l enregistrement de la macro, mais bon ca a pas toujours du bon.. si tu veu modifier un truc, eh ben ca marche plus!
en tou k merci pour ton aide, je vai continuer a m arracher les cheveux sur le probleme encore un peu pour aujourd hui.
Bonne soiree a toi aussi, tiens moi au courant si tu as du nouveau
merci
pour creer le programme, je me suis efectivement base sur l enregistrement de la macro, mais bon ca a pas toujours du bon.. si tu veu modifier un truc, eh ben ca marche plus!
en tou k merci pour ton aide, je vai continuer a m arracher les cheveux sur le probleme encore un peu pour aujourd hui.
Bonne soiree a toi aussi, tiens moi au courant si tu as du nouveau
merci
Re bonjour!
J'ai un peu regardé chez moi vite fait et j'ai pas eu le meme problème que toi.
Avec le meme code (à peu près)...
J'ai bien réussi à créer 2 listes. Le contenu était le meme mais ca c'est normal car j'ai laissé les références fixes comme toi.
La seule chose qui change par rapport à toi c'est ma déclaration de variables faite avec dim, et la ligne avec workbook machin que j'ai pas.
Sinon ta ligne rows(i).select est inutile je pense...
Préviens moi si jamais ca marche
Bon courage
J'ai un peu regardé chez moi vite fait et j'ai pas eu le meme problème que toi.
Avec le meme code (à peu près)...
J'ai bien réussi à créer 2 listes. Le contenu était le meme mais ca c'est normal car j'ai laissé les références fixes comme toi.
La seule chose qui change par rapport à toi c'est ma déclaration de variables faite avec dim, et la ligne avec workbook machin que j'ai pas.
Sinon ta ligne rows(i).select est inutile je pense...
Préviens moi si jamais ca marche
Bon courage
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
858
20 oct. 2006 à 10:51
20 oct. 2006 à 10:51
Bonjour,
sans trop approfondir ton pb (au passage, un fichier joint aurait facilité la compréhension!), je pense que la solution repose sur l'utilisation de la fonction INDIRECT() que tu positionnes dans la définition de ta liste de validation.
donc a priori pas besoin de code pour cela.
voici un exemple : https://www.cjoint.com/?kukZuvllyr
A+
sans trop approfondir ton pb (au passage, un fichier joint aurait facilité la compréhension!), je pense que la solution repose sur l'utilisation de la fonction INDIRECT() que tu positionnes dans la définition de ta liste de validation.
donc a priori pas besoin de code pour cela.
voici un exemple : https://www.cjoint.com/?kukZuvllyr
A+
JsJulieta
Messages postés
6
Date d'inscription
jeudi 19 octobre 2006
Statut
Membre
Dernière intervention
25 octobre 2006
25 oct. 2006 à 16:51
25 oct. 2006 à 16:51
merci pour ces reponses, je vai essayer de suite!
JsJulieta
Messages postés
6
Date d'inscription
jeudi 19 octobre 2006
Statut
Membre
Dernière intervention
25 octobre 2006
25 oct. 2006 à 16:52
25 oct. 2006 à 16:52
merci pour ces reponses, je vai essayer de suite!
JsJulieta
Messages postés
6
Date d'inscription
jeudi 19 octobre 2006
Statut
Membre
Dernière intervention
25 octobre 2006
25 oct. 2006 à 16:56
25 oct. 2006 à 16:56
merci pour ces reponses, je vai essayer de suite!
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
858
26 oct. 2006 à 02:14
26 oct. 2006 à 02:14
Bonsoir,
une solution plus complète et sans macro :
tu définis un nom disons "test" avec :
test=DECALER(Feuil1!$A$1;EQUIV(Feuil1!$B$4;Feuil1!$A$1:$A$1000;0)-1;1;1;NBVAL(INDEX(Feuil1!$1:$1000;EQUIV(Feuil1!$B$4;Feuil1!$A$1:$A$1000;0);0))-1)
où B4 contient une première liste de validation pour choisir le premier niveau de nom.
tu mets en C4 une validation liste =test et le tour est joué.
si tu veux un fichier, regarde https://www.cjoint.com/?kAcoesVkze
cordialement
une solution plus complète et sans macro :
tu définis un nom disons "test" avec :
test=DECALER(Feuil1!$A$1;EQUIV(Feuil1!$B$4;Feuil1!$A$1:$A$1000;0)-1;1;1;NBVAL(INDEX(Feuil1!$1:$1000;EQUIV(Feuil1!$B$4;Feuil1!$A$1:$A$1000;0);0))-1)
où B4 contient une première liste de validation pour choisir le premier niveau de nom.
tu mets en C4 une validation liste =test et le tour est joué.
si tu veux un fichier, regarde https://www.cjoint.com/?kAcoesVkze
cordialement