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

bluejames 8 Messages postés lundi 4 octobre 2004Date d'inscription 29 juillet 2009 Dernière intervention - 12 avril 2005 à 16:54 - Dernière réponse : bluejames 8 Messages postés lundi 4 octobre 2004Date d'inscription 29 juillet 2009 Dernière intervention
- 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
Afficher la suite 

5 réponses

jpleroisse 1788 Messages postés mardi 7 novembre 2000Date d'inscription 11 mars 2006 Dernière intervention - 12 avril 2005 à 18:57
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
bluejames 8 Messages postés lundi 4 octobre 2004Date d'inscription 29 juillet 2009 Dernière intervention - 13 avril 2005 à 10:15
0
Utile
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
bluejames 8 Messages postés lundi 4 octobre 2004Date d'inscription 29 juillet 2009 Dernière intervention - 13 avril 2005 à 10:59
0
Utile
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
jpleroisse 1788 Messages postés mardi 7 novembre 2000Date d'inscription 11 mars 2006 Dernière intervention - 13 avril 2005 à 15:45
0
Utile
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
bluejames 8 Messages postés lundi 4 octobre 2004Date d'inscription 29 juillet 2009 Dernière intervention - 13 avril 2005 à 15:52
0
Utile
OK je comprends mieux !!
Merci

Blue James

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.