[VBA sous excel]

Fermé
ksa - 10 août 2008 à 16:32
 Utilisateur anonyme - 11 août 2008 à 21:17
Bonjour,

j'ai deux listes déroulantes dans un formulaire et je souhaite que l'une affiche des valeurs en fonction de la valeur sélectionnée sur l'autre.

par exemple la première aurais pour valeur sélectionnée "Septembre" et les valeurs disponibles dans le second champ seraient 01/09/08, 02/09/08, 03/09/08....

la première liste déroulante fonctionne très bien mais la deuxième ne me renvoi pas les valeurs en fonction de la liste 1...

en voici le code:

Private Sub ComboBox2_DropButtonClick()

Sheets("Feuille1").Select

a = 2 'la boucle commence à la colonne 2
Do Until Cells(2, a).Value = "" 'la boucle se répète tant que les cases contiennent des valeurs.

If ComboBox1.Value = Cells(2, a).Value Then 'les mois sont listés dans des cellules et si la valeur de la liste 1 est identique à celle d'une cellule parcourue alors
ComboBox2AddItem Cells(3, a).Value 'on ajoute a la liste 2 les jours correspondants au mois sélectionné.

End If

a = a + 7 'la boucle lit les 1 case sur 7

Loop

End Sub

avec ce code la liste est vide.

merci de m'éclairer.
A voir également:

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 718
11 août 2008 à 14:52
bonjour

Ton code devrait fonctionner mais tes données sont disposées de façon un peu particulière semble-t-il car c'est curieux que tu sautes 7 colonnes.

En changeant ton 7 par un 1, tu obtiendras peut-être quelque chose : il me semble que c'est plus logique comme procédure.
1
En fait mes données sont situées dans une cellule formée par 6 cellules fusionnées, donc pour parcourir ces données je doit utiliser les coordonnées de la première des 7 cellules, soit k = k +7.

Pas d'autres solutions ?
0
désolé, c'est a = a+7 mais le principe est le même
0
Utilisateur anonyme
11 août 2008 à 21:17
Bonjour,

suggestion :

la structure de contrôle :

Do Until blablabla
...DoEvents
Loop

est plutôt difficile à travailler

essayer :

While Cells(2, a).Value <> ""
...DoEvents
Wend

Lupin
1