Créer une liste déroulante sur VA Excel

Fermé
Nana - 1 sept. 2009 à 17:38
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 18 sept. 2009 à 18:35
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

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
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
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
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
Bonjour,

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

Je vais t'embeter ms le lien du fichier ne fonctionne pas.
0
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 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 197
16 sept. 2009 à 13:54
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
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 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 197
16 sept. 2009 à 16:18
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
Merci de ta patience,

je vais voir ce que ça donne...
0
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 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 197
18 sept. 2009 à 18:35
???

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