Créer une liste déroulante sur VA Excel

Nana -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,

Je voudrais créer une liste déroulante pour l'intégrer à une macro.
Aussi, si je choisis un critère 1 dans une colonne, je voudrais que la colonne suivante j'ai la liste de critère 2 correspondant à mon critère 1 conformément à la base de données qui se trouve sur une autre feuille et de même que dans ma troisième colonne, on me propose une liste de critère 3.
sachant que je veux que ma liste de choix se réduise dans les différentes listes que je choisisse le critère 1, 2 ou 3.
je suis une grde débutante pour les macros... Quelqu'un pourrait m'aider?? Quelles solutions sont possibles?

MErci d'avance
A voir également:

13 réponses

melanie1324
 
Bonjour,

Fais ensorte que ta première liste soit alimentée.

tu crées ta liste déroulante. Comme il en existe deux sortes, tu fais propriété (si quand tu fais un cliques droit tu n'as pas propriété, tu fais affichage ou edition, barre d'outils, controles de formulaires ou controles activex, et tu cliques sur le bouton qui a une règle, équerre et un crayon, quand tu mets ta souris, ca te mets mode création et il faut que tu sois en mode création)

Regarde le nom de liste déroulante (name) : c soit listbox1 soit combobox1.

Tu peux les renommer.

Tu fermes les propriétés et tu fais recliques droit et visualiser le code.

La tu tapes :

Sub listbox1_Click()

'listbox1 = le nom de ta listbox
'si c'est combobox1 tu remplaces lisbox apr combobox

if listbox1.value = 1 then

ListBox2.Clear
ListBox2.AddItem "élément liste2 n°1" 'listbox2 étant ta deuxième liste déroulante.
listbox2.additem "élément liste2 n°2 " 'tu fais listbox2.additem autant que tu as d'éléments

end sub

Je sais que comme ca ca n'a pas l'air simple. Mais si tu veux, demain, je te mettrais un fichier en ligne qui te le montreras si tu n'as pas compris.
0
Nana
 
Merci pour ta réponse, dsl de répondre tardivement ms submergée de taff; je n'ai pas tout compris ms je vais essayer...

Ya pas un moyen de charger les différentes solutions directement au lieu de les écrire dans le code items par items.. et autres question, si je commence ponfiltre dans la liste 3 estce que les autres listes sont filtrées automatiquement par la suite.

Je veux bien que tu m'envoie un fichier d'exemple.

Merci
0
melanie1324
 
Bonjour,

je t'ai fait deux fichiers.
Le premier est en ajoutent des items :
http://www.cijoint.fr/cjlink.php?file=cj200909/cijtLvU57z.xls

le second est via une liste :
http://www.cijoint.fr/cjlink.php?file=cj200909/cijX0LM94N.xls

Dans les deux cas, le code se trouve :
Outils/Macro, visual basic editor.
A gauche, clique sur feuille1.

Si tu as des questions!!
0
Nana
 
Merci de ta réponse.

j'avais en tête ce code mais en fait je devrais si j'ai compris écrire toutes les valeurs/items de mes listes déroulantes qui sont très nombreuses. Y-a-til un moyen de charger automatiquement les valeurs d'une liste déroulante dans le code sans écrire une ligne par valeur ac AddItems ?

J'espère être plus ou moins claire.

Merci d'avance.
0

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

Posez votre question
melanie1324
 
Bonjour,

C'est ce que j'ai mis dans le second fichier :
http://www.cijoint.fr/cjlink.php?file=cj200909/cijX0LM94N.xl­s
0
Nana
 
Slt,

Je vais t'embeter ms le lien du fichier ne fonctionne pas.
0
Nana
 
La je suis larguée...

Je voudrais charger une vingtaine de valeurs pour alimenter ma liste box d'après une petite base. Je crois que c'est une fonction RowSource.
Et après comme j'avais dit, que la liste déroulante 2 n'affiche que lesles valeurs qui correspondantes à la sélection de la liste déroulante 2, sans pour autant écrire tous les items car les choix peuvent être importants a chaque fois et mon code sera imbuvable.

S 'il vs plait renvoyez mois un fichier ac le code ou m'écrire étape par étape en commençant par la création simple d'une listbox ou combobox. Je n'y connais vraiment rien...

MeRRRRCCIII MILLLE FOIIIISSSS
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
Bonjour,

Il manque des infos pour que l'on puisse te répondre.

Où sont tes listboxes ou comboboxes ? sur une feuille, sur une UserForm ?

Où sont les items à charger ?

Quels sont les critères de sélection pour ta 2ème liste déroulante ? Où sont les items pour l'alimenter ?

etc ...

;o)

0
Nana
 
Ma combobox est dans un Userform!!!

C bon grâce à la propriété du combobox "RowSource" j'ai pu charger mes items, qui se trouve sur une feuille excel dans une 1ere liste déroulante. Pour critère 1 il y a 10 choix possibles de critères 2 puis qd tu choisi ton critère 2, il ya encore 5 choix possible de critères 3 etc.. je veux qu'au fur et a mesure de mes sélection mes liste de choix suivantes diminuent en fonction du critères précédentes.
G une base de donnée de 600 ligne qui reprend toutes les combinaisons possibles.

J'espere que c'est plus clair. Merci d'avance
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
Ok,

Je vais donc admettre qu'en "A1:A7" du premier onglet tu as les items du combox1, par exemple :
B
J
M
N
R
T
V

Et que dans la colonne B du premier onglet tu as les items potentiels de la combox2, par exemple :
Rouge
Bleu
Marron
Vert
Noir
Blanc
Jaune
Violet
Rose
Turquoise

On veut que s'affiche dans la combobox2, tous les items ayant la même initiale que celle sélectionnée dans la combobox1, par exemple :
Si V dans la combobox1 alors Vert et Violet dans la combobox2.

On va donc faire ça :

Private Sub UserForm_Initialize()    'J'initialise la combo1 à l'ouverture de l'UF.
Sheets(1).Activate

    ComboBox1.RowSource = "A1:A7"
    
End Sub

'A chaque changement de selection de la combo1
Private Sub ComboBox1_Change()
Dim lig As Long

    ComboBox2.Clear    'J'efface le contenu de la combo2
    lig = 1  'pour commencer à la première ligne à tester
    'Je parcours la colonne B tant qu'une ligne est renseignée
    While Sheets(1).Range("B" & lig).Value <> ""
        'Si l'initiale est égale à la valeur de la combo1
        If Mid(Sheets(1).Range("B" & lig).Value, 1, 1) = ComboBox1.Text Then
            'Je remplis la combo2
            ComboBox2.AddItem Range("B" & lig).Value
        End If
    lig = lig + 1    'je passe à la ligne suivante
    Wend
    
End Sub


Voilà, à toi d'adapter ça.

Bon courage

;o)
0
Nana
 
Merci de ta patience,

je vais voir ce que ça donne...
0
Nana
 
Jarrive pas a faire fonctionner le code, ma combobox2 ne s'alimente pas dutt. Je dois lui mettre ne rowsource les données possibles pr ttes les critères 1 et qu'après ac la macro kil fasse le tri...

Je vois pas l'issue javoue...
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
???

Peux-tu faire un effort pour écrire stp.

Le code que je t'ai donné fonctionne. L'as-tu testé ? Si oui, qu'est-ce qui ne fonctionne pas ?

;o)
0