3 combobox en chaine avec VBA sous Excel

Grognouff -  
 Grognouff -
Bonjour,
voila j'essai de créer 3 combobox sous Excel ou les valeurs affichées dans le seconde sont dépendantes du choix fait dans la premiere et les valeurs affichées dans la troisième dependent du choix fait parmi les valeurs de la seconde.
Pour la première combox, je n'ai que deux valeurs "indoor" ou "outdoor", j'ai donc créé deux cellules avec chacune une valeur et dans les propriétes de la combobox1 (Listfillrange) j'ai choisi la plage des deux cellules où sont inscrites les valeurs.

Pour la seconde combobox, j'aimerai qu'elle me donne le choix entre "indoorexo1" ou "indoorexo2" si j'ai choisi "indoor" dans la premiere et "outdoorexo1" ou "outdoorexo2" si j'ai choisi "outdoor" dans la premiere.
C'est la que ca se complique, parce que en plus j'aimerai que ca ne soit pas en dur dans le programme. Mais que ce soit suivant des cellules contenant "indoorexo1""indoorexo2""outdoorexo1""outdoorexo2".
J'ai donc essayé le code suivant :

Private Sub ComboBox2_Change()
If ComboBox1.Text = "Indoor" Then
ActiveSheet.ComboBox2.Clear
ActiveSheet.ComboBox2.ListFillRange = "Feuil1!B9:B11"
Else
ActiveSheet.ComboBox2.Clear
ActiveSheet.ComboBox2.ListFillRange = "Feuil1!B14:B16"
End If
End Sub

Mais cela me créé une erreur quand je clique sur mon choix parmi les deux proposées sur la combobox2 et de plus si je change de choix dans la combobox1, rien ne se passe dans le combox2 ( ca ne marche qu'une fois en fait).

Pour la troisieme combox, ben j'en suis pas là mais l'idée c'est d'avoir deux variantes pour chaque "indoorexo1""indoorexo2""outdoorexo1""outdoorexo2".

Si une bonne ame prend le temps de lire mon long message et m'aider à résoudre ce gros souci (je suis peu calé en programmation), je l'en remercie par avance.

Grognouff
Configuration: Windows XP
Firefox 3.0.11

3 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    L'utilisation n'est pas la même. Tout dépend de ce que l'on cherche à faire. Un formulaire peut aider à la saisie de données par exemple ou rendre la saisie obligatoire. Les propriétés et l'utilisation n'est pas tout à fait la même.

    ListFillRange est une propriété en lecteur seulement. On fixe sa valeur dans la liste de propriétés. On ne peut pas la modifier par le code.

    Voilà ce que je te propose de faire:

    Private Sub Worksheet_Activate()
        ComboBox1.Clear
        ComboBox1.AddItem Range("B9").Value     'Cellule contenant Indoor
        ComboBox1.AddItem Range("B10").Value    'Cellule contenant Outdoor
    End Sub 
    
    Private Sub ComboBox1_Change()
        ComboBox2.Clear
        
        If ComboBox1.Text = Range("B9").Value Then
            ComboBox2.AddItem Range("B14").Value     'Cellule contenant Indoorexo1
            ComboBox2.AddItem Range("B15").Value     'Cellule contenant Indoorexo2
        End If
        If ComboBox1.Text = Range("B10").Value Then
            ComboBox2.AddItem Range("B16").Value    'Cellule contenant Outdoorexo1
            ComboBox2.AddItem Range("B17").Value    'Cellule contenant Outdoorexo2
        End If
        
    End Sub


    Bon courage

    ;o)
    1
    1. Grognouff
       
      Bonjour Polux et Merci pour ton aide.

      J'ai compris comment faire et vais pouvoir finir mon projet.

      IL me reste une petite question :
      Pourquoi pour que ca marche je dois d'abord cliquer sur la feuil2 et puis revenir sur la feuil1 pour que la premiere combobox se remplisse?

      Y a t'il un moyen pour que ca marche sans faire cette petite manip?


      Merci

      Grognouff
      0
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Où sont tes combo ? sur un Userform ou sur une feuille ?

    0
  3. Grognouff
     
    Bonsoir,

    merci de repondre si vite.

    Directement sur la feuille.

    Question supplémentaire : quel est l'interet de l'un par rapport à l'autre?

    Merci

    Grognouff
    0