Utilisation ComboBox

cs_marou76 Messages postés 13 Date d'inscription mercredi 1 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010 - 7 déc. 2010 à 10:41
rv83toulon Messages postés 68 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 25 avril 2013 - 8 déc. 2010 à 14:10
Bonjour à tous,

Mon probléme est le suivant :

J'ai une combobox qui contient toute les valeurs d'une colonne, et je souhaite afficher dans une zone de texte les données contenu dans la cellule de colonne qui suit à la même ligne que l'élément séléctionné dans la combobox.

Merci de votre aide.

6 réponses

rv83toulon Messages postés 68 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 25 avril 2013
7 déc. 2010 à 15:54
Bonjour, marou76
il manque beaucoup d'éléments pour t'apporter une bonne réponse comme :
-le nom de la colonne (A,B,C ???)
-si tu utilise un userform ou non ???
-si dans ta combobox ou dans ta colonne il y a des doublons etc...

J'ai donc supposé que ta combobox est dans un userform, qu'elle s'appelle combobox1, que le textbox s'appelle textbox1, que la colonne avec laquelle tu remplis la combobox est la colonne A, ce qui donne ce code a mettre dans l'événement Change de la combobox :
Private Sub ComboBox1_Change()
'je donne à la variable vval la valeur du combobox
vval = Me.ComboBox1.Value

'je fais une recherche de la valeur dans la colonne A
'adapte le numero de colonne à tes besoins
Set vrech = Columns("A:A").Find(vval)

'Si la valeur existe alors je donne à la textbox1
'la valeur de la cellule directement à droite
If Not vrech Is Nothing Then Me.TextBox1 = vrech.Offset(0, 1)

End Sub

Voilà tiens moi au courant, merci.
@+
0
cs_subaqua Messages postés 69 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 20 juin 2011
7 déc. 2010 à 20:11
Si j'ai bien compris, tu as une liste déroulante (imaginons les villes françaises) et tu souhaites, lorsqu'on sélectionne une ville (prenons par ex. Lyon), que la population s'affiche dans une zone de texte (donc dans mon exemple 1.5 M).

J'ai trouvé un jour ce code que j'utilise depuis pour ce type de pb :

Dans Form_load, tu enrichis ta liste :
combo.AddItem "Paris"
combo.ItemData(combo.NewIndex) = "13M"
etc ....(Lyo, Marseille, ...)

Ensuite :

private sub combo_change

textbox1.text= CStr(combo.ItemData(combo.ListIndex))

end sub

C'est fini.
0
cs_marou76 Messages postés 13 Date d'inscription mercredi 1 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010
8 déc. 2010 à 09:11
Bonjour Subaqua,

C'est vraiment gentil de ta part de prendre le temps de me répondre.

J'ai essayé la premiére solution que tu m'as proposé mais elle ne fonctionne pas.
Concernant la seconde, elle ne semble pas adaptée à mon probléme, puisque je travail sur la base d'un long long long fichier Excel comportant les données que je souhaite traiter. Je souhaite en faciliter sa lecture à l'aide d'un userform.

Ce userform est constitué d'une combobox (que j'ai rempli avec la premiére colonne : nom des villes par exemple) et de plusieurs textbox que je souhaite voir se remplir une fois la ville selectionnée (population, taux de chomage ... par exemple).
Dans mon fichier excel supposons que le nom des villes sont à la colonne A et que toutes les autres informations sont dans les colonnes qui suivent B, C, D ... sur la même ligne.


Par exemple :
A B C
Villes Population Taux de chomage ...

Cela fait un moment que je cherche une solution sans rien ne trouver.
J'éspére que tu vas pouvoir m'aider avec les informations complémentaires que je t'ai apportées.
Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

Cordialement.
0
rv83toulon Messages postés 68 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 25 avril 2013
8 déc. 2010 à 10:01
Bonjour,
J'ai essayé la premiére solution que tu m'as proposé mais elle ne fonctionne pas.

La solution que j'ai mise fonctionne parfaitement dans le cas que j'ai évoqué et devrais fonctionnée avec le tiens, à condition d'avoir tous les éléments.

-ta combobox s'appelle bien combobox1 ? sinon adapte le nom
maintenant si tu as plusieurs textbox fait comme ceci, remplace:
If Not vrech Is Nothing Then Me.TextBox1 = vrech.Offset(0, 1)
par:
If Not vrech Is Nothing Then
Me.TextBox1 = vrech.Offset(0, 1)
Me.TextBox2 = vrech.Offset(0, 2)
Me.TextBox3 = vrech.Offset(0, 3)
'ETC...
End If


j'ai mis un exemple ici

@+
0

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

Posez votre question
cs_marou76 Messages postés 13 Date d'inscription mercredi 1 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010
8 déc. 2010 à 10:51
C'est encore moi,

j'ai essayé d'adapter ta solution à mon cas mais rien n'y fait, cela ne fonctionne pas.

Voici un extrait du fichier sur lequel je travail, avec le type de userform que je souhaite obtenir.

Si tu peux y jeter un oeil je t'en serais vraiment reconnaissant. C'est ici

Merci Beaucoup.
0
rv83toulon Messages postés 68 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 25 avril 2013
8 déc. 2010 à 14:10
Re,
tu n'as pas dit que tu avais des cellules fusionnées, , je comprend mieux avec ton fichier.
dans le code de l'userform:
Dim plage1 As Range, plage2 As Range, plage3 As Range


Private Sub UserForm_Initialize()

Set plage1 = Sheets("Feuil1").Range("B5:B31")
Set plage2 = Sheets("Feuil1").Range("B38:B40")
Set plage3 = Sheets("Feuil1").Range("B45:B48")

  For Each c In plage1
  Me.ComboBox1.AddItem c.Value
  Next c
  
  For Each c In plage2
  Me.ComboBox2.AddItem c.Value
  Next c
 
  For Each c In plage3
  Me.ComboBox3.AddItem c.Value
  Next c

End Sub

ensuite toujours dans le code de l'userform les codes pour chaque combobox:
combobox1:
Private Sub ComboBox1_Change()
'je donne à la variable vval la valeur du combobox
vval = Me.ComboBox1.Value

For Each c In plage1
If c = vval Then
Me.TextBox1 = c.Offset(0, 1)
Exit For
End If
Next c

End Sub
combobox2:
Private Sub ComboBox2_Change()
'je donne à la variable vval la valeur du combobox
vval = Me.ComboBox2.Value

For Each c In plage2
If c = vval Then
Me.TextBox2 = c.Offset(0, 1)
Exit For
End If
Next c

End Sub
combobox3 :
Private Sub ComboBox3_Change()
'je donne à la variable vval la valeur du combobox
vval = Me.ComboBox3.Value

For Each c In plage3
If c = vval Then
Me.TextBox3 = c.Offset(0, 1)
Exit For
End If
Next c

End Sub



@+
0
Rejoignez-nous