|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 3 ![]() |
Bonjour à tous,
J'ai créé il y a peu un Projet VBA dans le but de rechercher des données dans un tableau suivant plusieurs critères de recherche. Le projet en est au début. Me voici donc avec mon UserForm1 et deux modules. Je débute en VBA donc le programme peut choquer dans la forme. Le UseForm: Code :
Code :
Code :
Dans le cas ci-dessus (ou l'ensemble est partitionné) la partie qui bloque est au moment ou le programme sort de la dernière boucle "Du module génerateur de ComboBox" et retourne dans le UseForm. A ce moment là le programme se lance, le UseForm s'ouvre normalement mais le menu déroulant de la comBoBox est vide comme si la ComBox avait perdu toutes ces entrés lors du retour au UseForm. Plus clairement c'est ce qui arrive lorsqu'une variable n'est pas déclarée pour l'ensemble d'un projet et qu'on veut la récupèrer dans un module différent du module de déclaration. Pareil ici la ComboBox ne semble exister que dans le module ou elle a été généré. J'espère que quelqu'un pourra me dire comment rendre la ComboBox dispo en dehors du "module génerateur de ComboBox" ou bien même s'il y a une erreur dans le code. Merci à tous |
||||||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2008 Messages : 5 848 ![]() |
Bonjour
Tu peux travailler directement avec le n° de colonne sans chercher la lettre correspondante. Ci-joint proposition adaptée à mettre dans le module de ton userform Code :
__________________
Cordialement. |
||
|
|
10
|
|
|
#3 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2008 Messages : 5 848 ![]() |
Sinon une autre méthode plus rapide qui utilise les variables tableaux et en plus on aura la possibilité de trier rapidement les items des CombobBox
(J'ai mis cette nouvelle proposition dans un nouveau post pour plus de clarté) Code :
__________________
Cordialement. |
||
|
|
10
|
|
|
#4 |
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 3 ![]() |
Merci mercatog d'avoir répondu si vite et si clairement,
Tout d'abord je tiens à dire qu'en suivant tes consignes (mettre les nouveaux codes "générateur de ComboBox" dans le UserForm avec "initialize") le code s’exécute sans broncher et me donne ce que j'attends de lui (c'est à dire l'initialisation de mon UserForm1 et le chargement de ma ou mes ComboBox), parfait. J'ai deux question maintenant Question 1 Je souhaite pousser un peu plus loin et aimerais comprendre pourquoi lorsque je sépare tes codes du UserForm en les mettant dans un module (par soucis de clarté) et en pensant à changer le "private" en "public" le code ne peux pas s'executer. J'ai cru comprendre que cela venait de la partie "Me.Controls" en ligne 37 dans le 1er code et en lignes 19 et 21 dans le 2nd. Que dois-je changer pour que ça marche? Remplacer "Me" par quelque chose du style "Forms![frm Produits]"? Question 2 Pour revenir à mon code un peu obsolète j'aimerais tout de même comprendre pourquoi la ComboBox se "décharge" en sortie de fonction. N'y a t-il pas moyen de contrer le problème? |
|
|
00
|
|
|
#5 | ||||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2008 Messages : 5 848 ![]() |
Pour mettre le code dans un module public (afin de l'appeler par plusieurs userform)
Code :
Code :
__________________
Cordialement. |
||||
|
|
10
|
|
|
#6 |
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 3 ![]() |
Parfait! Je n'ai absolument rien à ajouter!
Le code est encore un peu compliqué pour moi mais je compte bien encore me pencher dessus pour vraiment me l'approprier. Un grand merci mercatog
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com