Utiliser clear pour une collection de combobox

Résolu
bluejames Messages postés 8 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 29 juillet 2009 - 12 avril 2005 à 16:54
bluejames Messages postés 8 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 29 juillet 2009 - 13 avril 2005 à 15:52
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

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
12 avril 2005 à 18:57
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
bluejames Messages postés 8 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 29 juillet 2009
13 avril 2005 à 10:15
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
0
bluejames Messages postés 8 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 29 juillet 2009
13 avril 2005 à 10:59
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
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
13 avril 2005 à 15:45
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bluejames Messages postés 8 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 29 juillet 2009
13 avril 2005 à 15:52
OK je comprends mieux !!
Merci

Blue James
0
Rejoignez-nous