Effacer contenu combobox [Fermé]

Messages postés
60
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
23 décembre 2010
- - Dernière réponse : ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 24 avril 2014 à 07:14
J'ai des comboBox dont j'ai rentrée une liste de valeur qui s'affiche des que j'active le userfom.
J'ai rentrée valeur par valeur:
ComboBox8.AddItem "Aucune"
ComboBox8.AddItem "0,4"
ComboBox8.AddItem "0,9"
ComboBox8.AddItem ">0,9"
Alors quand je lance la première fois le userfom tout ça fiche. Ensuite si je veux cacher le userform (avec hide parce que je n'ai pas trouver comment le fermer) et que ensuite je le fait de nouveau afficher (avec show), ma liste se double. Et oui forcement parce que j'ajoute ma liste de valeur des que j'active le userform! Alors comment faire?
Peut on efface le contenu des combobox lors du "hide" ou la desactivation du userform. Ou peut etre si je trouvais comment fermer completement le userform au lieu de le cacher il n'y aurai pas de probleme.
J'ai essaie d'effacer le contenu des combobox avec clear, avec remove item.... Sans succes...
Si vous pouvez m'aider... encore!
Merci d'avance
Afficher la suite 

15 réponses

Meilleure réponse
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
3
Merci
Initialize est appelé à la première ouverture du UserForm. Si tu utilises UnLoad pour le fermer, Initialize sera rappelé à la réouverture. Si tu utilises Hide pour le cacher, Initialize ne sera pas activé puisque déjà initialisé et toujours en mémoire.

Activate est appelé à l'ouverture du UserForm, mais aussi lorsque tu donnes le focus à celui-ci. Si tu avais plusieurs UserForms et que tu passais d'un à l'autre, cet événement serait activé à chaque fois.

MPi

Dire « Merci » 3

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

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

Messages postés
169
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
7 avril 2008
2
1
Merci
Salut

L'évènement Load c'est en VB pour une Form. En VBA on utilise l'évènement Initialize, ce qui donne

Private Sub UserForm1_Initialize()
Charger_Combobox ' appelle la macro de chargement des combobox
En sub

Et voilà

Pour revenir sur l'utilisation de Me, sache que Me représente l'objet contenant le code.
En VBA, on le limitera aux modules de classe et aux userforms.

Me est donc un raccourci qui renvoie l'objet que tu codes. c'est pourquoi tu peux remplacer le nom du Userform par Me dans son module de code.

Pour finir, lorsque tu effectues un grand nombre d'actions sur un objet (par exemple des additem sur un combobox), on préfère utiliser l'instruction With "nom objet" / End With pour éviter de recharger à chaque fois ton objet et donc ralentir l'exécution du code. Ce qui donne :

With combobox8
    .clear 'On efface par précaution
    .additem "Aucune"
    .additem 0.4
    .additem 0.9
    .additem ">0,9"
End With

Voilà, sur ce, code comme tu le veux mais si il existe des conventions, c'est pas pour rien. Et vu que t'es pas une pro, ce serait bien d'écouter les conseils que tu viens chercher ici.

[mailto:K@lobit K@lobit] < Ne pas clicker ici < Mais ici
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
1
Merci
Bonjour, ez64
Evite s'il te plait de déterrer un vieux sujet, au demeurant résolu, pour finalement dire une inexactitude .
Mettre à -1 la propriété Listindex d'une combobox ne l'efface pas. Cela ne fait qu'en effacer la zone d'édition (et en conséquence : désélectionner (pas l'effacer) l'article qui aurait pu avoir fait l'objet d'une sélection)

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
60
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
23 décembre 2010
0
Merci
Je ne savais pas comment fermer la fenetre donc déjà ça le unload ça va bien me servir!
Et en faisant ça ça marche.
Alors jmjmarques ce n'est pas que je veux pas faire comme tu propose mais ce que je pense que comme ça c'est plus simple. Quand l'utilisateur veux aller sur ce userform ça le charge et quand il a fini ça le décharge et si il veut y retourner une nouvelle fois  ça se recharge sans bug.
Enfin bon apres si tu penses qu'une variable booléenne est mieux , j'essaie...
Merci!

PS: désolée jmjmarques mais c'est pas que je veux en faire qu'a ma tete comme tu m'as dit mais je fais comme je peux! Je ne suis pas une pro!
Messages postés
60
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
23 décembre 2010
0
Merci
Je charge le combobox quand dans l'évenement Activate de l'userform.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
Voilà donc la raison popur laquelle ta combobox s'incrémente : l'événement activate se déclence chaque fois que tu "montre" ton userform (y compris après l'avoir caché).

Solution (une parmi d'autres) :
tout en faut (avant toute procédure) de ton code :

Private toto as boolean

Et, dans ton événement activate :

If not toto then
  ---- chargement de ta combobox
  toto = not toto
end if

Une autre solution consisterait à te servir de l'événement Load plutôt qu'Activate, mais je n'aime pas trop...

Une dernière solution consisterait à ne charger ta ComboBox que si elle est vide, en utilisant cette condition :

If combobox1.liscount = 0 then
   ----chargement des articles
end if
Messages postés
60
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
23 décembre 2010
0
Merci
Alors j'essayé la première et j'ai pas reussi.
La deuxieme, moi j'ai pas l'évenement load pour un userform.
Alors j'ai essayé la dernière qui marche bien.
Alors merci bien!
Messages postés
60
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
23 décembre 2010
0
Merci
Merci pour les conseils.
Quelle est la différence entre Initialize et Activate? Qu'est ce qui est le mieux? par exemple pour charger des combobox?
Et est ce que ces fonctions sont propres à VBA. C'est à dire que si moi je lance mon programme de n'importe où est ce que ça fonctionnera toujours?
Pour le "Me" j'avais pas tout suivi. Merci pour l'expliquation!
Et pour le "with", j'ai remis comme il faut dans mon programme!
Encore merci!
Messages postés
60
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
23 décembre 2010
0
Merci
Ok. Donc pour charger les combobox par exemple il est préférable de le faire avec initialize comme ça ça m'évite de vérifier si la combobox est déjà chargé et ça évite les bug. Non?
Merci!!
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
C'est mon avis.

MPi
Messages postés
60
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
23 décembre 2010
0
Merci
Ok. J'ai tout mis dans des "initialize".
Merci beaucoup!
Messages postés
4
Date d'inscription
jeudi 7 août 2008
Statut
Membre
Dernière intervention
24 avril 2014
0
Merci
pour effacer le combo:

Combo1.ListIndex = -1
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58
-1
Merci
pour le fermer :
Unload UserForm2
ou
Unload Me

Pour effacer:
ComboBox8.Clear
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
-1
Merci
Tiatia63 : si je t'explique maintenant comment utiliser une variable booléenne, pour arriver à tes fins sans passer par le Clear, vas-tu là aussi te sentir "agressée" ?


Si oui : oublie


Si non : précise-nous l'événement de UserForm1 utilisé pour alimenter ta combobox
Fais et réponds comme tu le sens...
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
-1
Merci
C'est juste, vois-tu Tiatia63, qu'il en va dans ce domaine comme dans tous les autres. Il vaut mieux se former d'emblée aux bons gestes que d'avoir à corriger plus tard des habitudes trop bien ancrées.
On peut y aller, si tu le souhaites, mais tu n'as pas répondu à une question d'importance : dans quel événement de ton userform1 charges-tu cette combobox ? (l'événement Load ou l'événement Activate, ou encore un autre, et lequel ?)