Utiliser clear pour une collection de combobox [Résolu]

Signaler
Messages postés
8
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 juillet 2009
-
Messages postés
8
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 juillet 2009
-
Bonjour
Je développe en VBA, en utilisant ADO à partir d'Excel pour chercher des data dans une base Access.
Mon pb est le suivant :
Dans un controle MultiPage posé sur un UserForm, en fonction d'un critère choisi par l'utilsateur, je remplis une vingtaine de combobox à partir de tables Access correspondantes.
Jusque là tout va bien. Le pb est qu'en fonction d'un autre choix de l'utilisateur, les combobox ne sont pas toutes remplies. Or il ne "vide" pas celle qui l'étaient sur la recherche précédente.
Donc je veux vider avant tte nouvelle recherche chaque combobox, ce qui se fait très facilement en tapant nomcombobox.clear
Seulement, j'aimerais éviter de taper le nom de chaque combobox pour la vider mais plutot proposer une boucle type For Each element In Collection...
Et là cela ne marche pas, je n'arrive pas à accéder à la collection des combobox de mon controle multipage. Je ne sais pas quel code taper pour le faire.
Si quelqu'un a une idée, je suis preneur !!!
Merci beaucoup.

Blue James

5 réponses

Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
23
Place la propeiété TAG de tes Combobox à 1.
Ensuite place ce code.Tu devras peut-être changer le nom du UserForm.

Public Sub LockTheControl(blocked As Boolean)
Dim indx As Integer
On Error Resume Next
For indx = 0 To UserForm1.Controls.Count - 1
If (UserForm1.Controls(indx).Tag = "1") Then
If (TypeOf UserForm1.Controls(indx) Is ComboBox) Then
If (blocked) Then
UserForm1.Controls(indx).Clear
End If
End If
End If
Next indx
End Sub

Private Sub CommandButton1_Click()
LockTheControl True
End Sub
.
jpleroisse
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 106 internautes nous ont dit merci ce mois-ci

Messages postés
8
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 juillet 2009

Merci beaucoup !
Ca marche.
Il y a juste un truc que je pige pas : quelle utilité d'envoyer le booleen "True" et de le tester dans la mesure où si j'appelle la procédure, c'est que je veux que le clear soit réalisé !!
En passant j'ai élargi la procédure à d'autres controles présent dans mon userform (textbox, checkbox...)
Merci encore !
Blue James
Messages postés
8
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 juillet 2009

Juste encore une chose. Pour que le code fonctionne avec d'autres controles, il faut rajouter :

If (TypeOf UserForm1.Controls(indx) Is MsForms.CheckBox)...
If (TypeOf UserForm1.Controls(indx) Is MsForms.TextBox)...

ce qui ne semble pas nécessaire pour le combobox (mais là je ne sais pas pourquoi !!)

Blue James
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
23
J'ai extrais cette partie de code d 'un code que j'ai fais dans une appli. ou je place la propriété booléenne à True pour colorer l'intérieur de mes Textbox en jaune au moment de l'écriture et je la place à False pour les remettres en blanc au moment de la validation.
Voila pourquoi j' ai une propriété booléenne.

jpleroisse
Messages postés
8
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 juillet 2009

OK je comprends mieux !!
Merci

Blue James