remplir un combobox

Jacques87

XLDnaute Accro
Bonjour à toutes et à tous,

Je reste perplexe devant un phénomène que je n'arrive pas à m'expliquer.

J'ai créé un UserForm contenant des textBox, des ComboBox et des CheckBox dont le but est de saisir des données afin de construire une base.
Je désire utiliser cet UserForm pour récupérer des enregistrements au cas où il faudrait modifier un élément de l'enregistrement récupéré. Donc, de façon tout à fait classique, mon code est du type suivant :

Load UserForm1
With WorkSheets(1) (feuille contenant ma base)
UserForm1.TextBox1.Value = .Cells(5,1) (par exemple)
UserForm1.Combobox1.Value = .Cells(5,2) (par exemple)
etc ...
End With
UserForm1.Show

Aucun problème pour les TextBox, ils prennent bien la valeur correspondante, quant aux combobox ils restent vierges.

Mais si je "déroule" mon code pas à pas, tout fonctionne à merveille.

Je ne comprends pas, pouvez vous m'expliquer le pourquoi de cette chose surprenante.

Merci et bonne journée à tous.
 

ERIC S

XLDnaute Barbatruc
Re : remplir un combobox

Bonjour

j'ai eu récemment un soucis avec des combobox sous 2003, je n'arrivais pas à récupérer fiablement les .value

le pb a été contourné comme suit :

mavaleur = ComboBox4.List(ComboBox4.ListIndex)

mais pour récupérer en vus de modifier, j'utilise

combobox4value = ....
sans pb. Par contre pour appeler l'Usf j'utilise

userform1.show

et je fais les chargements divers dans

Private Sub UserForm_Initialize()

Je n'ai pas d'autres infos sous le coude, joins un petit fichier
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : remplir un combobox

Bonjour Bernard, le Forum

Je viens de faire un Test avec un classeur Vierge, contenant un UserForm1, lequel contenant un TextBox1 et une ComboBox1.

La Feuille Index "1" Contenant en Cellule A5 "Test TextBox" et en Cellule B5 "Text ComboBox".

Je Mets ce Code dans un Module1 :

Code:
Sub Test()
Load UserForm1
With Worksheets(1)
    UserForm1.TextBox1.Value = .Cells(5, 1)
    UserForm1.ComboBox1.Value = .Cells(5, 2)
End With
UserForm1.Show
End Sub


Et je n'ai aucun souci !
La TextBox Contient Bien "Test TextBox" et la ComboBox1en Contient Bien : "Text ComboBox".


A mon avis tu as un sbinz entre la Feuille Index "1" ou bien la Cellule B5 qui ne contient rien... Ou alors tu as des paramètres en Mode Design sur cette ComboBox qui mettent le "Why" !


Bonne Journée
@+Thierry

EDITION !!!

A bonjour Eric, Je Précise Test fait vite fait sous Office 2000...
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : remplir un combobox

Bonjour Pascal, re Bernard, Eric, le Forum


Test concluant ré-effectué avec 2003 à l'instant....

Voir Fichier Joint

Bonne Journée les Gars !!!

@+Thierry
 

Pièces jointes

  • test_Bernard.zip
    10.3 KB · Affichages: 91

Jacques87

XLDnaute Accro
Re : remplir un combobox

bonjour à tous les trois,

Eric, il m'est difficile de joindre un "petit fichier", celui que j'utilise est trop lourd et le tronquer risquerait de shunter le problème (mon userform contient une centaine de textbox, combobox et autres). De plus ce fichier est celui d'un utilisateur du Forum et comme il contient des données confidentielles il me l'a envoyé dans ma boite.
Si dans le journée je ne trouve pas de solution j'essaierai ce soir de réduire ce fichier en y incluant des données bidons.

Thierry, en effet ton test marche correctement.
Ma feuille Index "1" et mes cellules A5, B5, etc ... ne sont pas à mettre en cause me semble-t-il vu que lors d'un lancement "pas à pas" du module tout se passe très bien.
Je vais jeter un oeil sur les paramètres des comboBox en Mode Design et te tiendrai au courant

Pascal, pour remplir mon combobox j'utilise des données stockées dans une feuille contenant une base de données. Le but de la manoeuvre est de pouvoir utiliser ce "méga" UserForm de 2 façons différentes
1) créer ma base en remplissant les controls de l'UserForm, et stocker cette base dans une feuille
2) récupérer tous les éléments d'un enregistrement lambda de la base afin d'en modifier un ou plusieurs renseignements. Et c'est là où ça m.... , sauf si je fais une récupération pas à pas.

Merci à tous les trois, je vais chercher dans la journée en espérant trouver le pourquoi de ce problème, sinon je souhaite de tout coeur que quelqu'un pourra me permettre de dormir tranquille ce soir, car j'ai horreur de rester sur un échec et ne pas comprendre ce phénomène.

Bonne journée
 

Jacques87

XLDnaute Accro
Re : remplir un combobox

Re,

Chose promise, chose due

Le problème que j'ai signalé précédemment est tout simplement du à une ligne de code écrite par la personne qui m'a demandé un petit coup de main. Cette ligne est "bien cachée" et comme je ne l'avais pas aperçue, et bien .... voila.

Pour être sur que chacun des controles de son userform soit vierge à l'ouverture de ce dernier, il a ajouté dans l'évènement "UserForm_Activate" une ligne (parmi de nombreuses autres lignes) par controle ( .... listindex = -1).
Donc quand je lançais ma procédure en fin de tâche il effectuait ce "nettoyage" car en fin de procédure je demandais l'ouverture de l'UserForm.
Par contre ,"pas à pas", comme je m'arrêtais en fin de ma procédure, et n'appelant pas l'évènement "UserForm_Activate", j'obtenais bien ce que je voulais.

Voila, voila, je vais pouvoir dormir tranquille.
comme quoi on peut parfois perdre du temps à cause de petites choses insignifiantes.

Encore merci à chacun d'entre vous d'avoir consacré un peu de votre temps pour essayer d'élucider ma question;
Et bonne journée, malgré le mauvais temps (ce qui est le cas chez moi).
 

jeanpierre

Nous a quitté
Repose en paix
Re : remplir un combobox

Bonjour ce fil et à toi particulièrement Jacques,

Je vois que tu travailles à répondre à une question posée,

Je t'en pose une autre : pourras-tu mettre un fichier expurgé du "confidentiel" avec le résultat de tes cogitations ?

En effet, je travaille de mon coté sur une autre question posée ici, mais j'ai perdu mes repères et références, mes propres travaux, avec un PC qui vient de me lacher et comme la période est plutôt vacances.... pas facile de se faire dépanner.

Je suis sur la chose depuis 3 ou 4 jours, mais j'ai un peu de mal, d'autant que mes recherches sur le forum, aboutissent souvent sur un message qui m'indique que je n'ai pas les autorisations......

Ceci dit, je reste persuadé que l'utilisation de VBA, dans la question posée, sera plus lourde et indigeste à utiliser que certaines fonctions d'Excel. mais, bon, il faut que l'essai soit, ou puisse être, fait.

Si tu peux acceder à ma demande, je t'en remercie.

Bonne fin de journée.

Jean-Pierre
 

Les grenouilles

XLDnaute Nouveau
Re : remplir un combobox

Salut

Pour ma part je code les combobox :


Private Sub ouverture UserFormEtat_Click()
Load userform
UserForm.combobox.RowSource = "Feuille1!A1:A10" & Ligne
etc...
BoiteModification.Show

End Sub

Comme ça tu n'es pas obligé d'avoir tes données sur la même feuille ! ;)
 

Jacques87

XLDnaute Accro
Re : remplir un combobox

Bonjour Jean Pierre,

Pas de problème, je me chargerai d'expurger les données confidentielles et j'allègerai le fichier en ne laissant que la partie concernée par la question.
Je ferai tout cela dans la journée et dès que ce sera prêt je te le ferai parvenir.


Bonjour les grenouilles,

Bien sûr, je procède de la même façon (à une petite chose près) pour alimenter un combobox et ainsi permettre à l'utilisateur de faire son choix dans la liste que j'impose. Mais dans la question posée (et résolue) mon but n'était pas celui la. Je désire récupérer des données enregistrées afin de pouvoir éventuellement les modifier. Ainsi je veux qu'à l'ouverture de mon userform, tel combobox doit contenir telle valeur directement liée à l'enregistrement à modifier.
Un exemple valant mieux qu'un grand discours tu verras mon fichier expurgé. De plus, comme je l'ai dit, mon problème était du au fait que le "demandeur" avait imposé à chaque, ouverture de l'userform, que les combobox soient vierges (ListIndex = -1), et je ne l'avais pas vu.

remarque : j'ai dit à une petite chose près : en effet j'évite l'instruction "RowSource" qui selon moi n'est pas souple dans certain cas, je préfère remplir ma liste avec l'instruction "AddItem". Enfin cela n'engage que moi.

Bonne journée à tous les deux.
 

Jacques87

XLDnaute Accro
Re : remplir un combobox

Bonjour Pascal,

On m'avait toujours dit que c'était de bon matin que les grands esprits (boaf) se rencontraient ...... (lol)

heureux de savoir que tu partages mon idée sur l'utilisation du "RowSource", mais je n'en doutais pas.

Je te souhaite une bonne journée
Bien amicalement
 

Jacques87

XLDnaute Accro
Re : remplir un combobox

Jean Pierre,

Me voici de nouveau
Je te fais parvenir non pas le fichier expurgé, car cela aurait été trop long et je craignais laisser des données confidentielles par mégarde (la personne que j'aide aurait pu m'en vouloir). Par contre j'ai reconstruit rapidement un autre fichier à l'identique (je n'ai pas fignolé la présentation).

J'ai ajouté 2 ou 3 lignes de commentaires dans la procédure évennementielle "UserForm1_Activate" afin d'expliquer la raison pour laquelle j'ai perdu mon temps hier. De plus j'ai fait du copier coller pour 90% du code, c'est pourquoi il peut être brouillon et en particulier utiliser des instructions que je bannies ("RowSource" poar exemple)

Fais moi part de tes remarques et réflexions

Bon courage
A bientôt
 

jeanpierre

Nous a quitté
Repose en paix
Re : remplir un combobox

Bonjour Jacques87, bonjour le forum,

Je viens de récupérer ton fichier.

Un grand Merci en tous cas,

Me reste qu'a m'y coller.

Merci Jacques.

Je ne sais pas encore si cela va répondre à mes interrogations sur la chose dans l'esprit de la question posée, mais à priori, celà répond bien, en partie, à ce que j'ai, désesperémmant recherché.

Donc, un GRAND MERCI.

Je te souhaite, à toi et au forum, une bonne journée.

Jean-Pierre
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 019
Membres
104 006
dernier inscrit
CABROL