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
Configuration: Windows XP Internet Explorer 6.0

13 réponses

  1. 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
  2. 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
  3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. Nana
     
    Slt,

    Je vais t'embeter ms le lien du fichier ne fonctionne pas.
    0
  8. 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
  9. 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
  10. 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
  11. 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
  12. Nana
     
    Merci de ta patience,

    je vais voir ce que ça donne...
    0
  13. 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
  14. 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