VBA - Valeur TextBox en fonction de 2 ComboBox

Résolu
Nat44200 Messages postés 24 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 24 août 2011 - 15 août 2011 à 11:05
Nat44200 Messages postés 24 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 24 août 2011 - 15 août 2011 à 16:32
Bonjour a tous,

Voila mon probleme:
Dans un USF sous Excel j'ai cree deux ComboBox (ComboBox2 et ComboBox3) et une TextBox6.
Dans une Feuille Excel, j'ai un Tableau a double entree.

Voici mon tabelau:

Ang S SE/SW E/W
30° 49% 48% 46%
45° 49% 48% 45%
60° 48% 47% 44%

Je vais chercher les valeurs de mes ComboBox dans ce tableau. ComboBox2 vas chercher les donnees a la verticale (les degre) et ComboBox3 a l'horizontale (l'orientation).
Dans ma TextBox6 je voudrais faire apparaitre la valeur correspondant a la jonction de la valeur des 3 ComboBox.

Par exemple si je selectionne dans ma ComboBox2 45° et dans ma ComboBox3 SE/SW je voudrais que dans ma TextBox6 apparaisse 48%.

Je ne sais du tout ou placer le code et quel est-il. Je peux ajouter un bouton dans ma USF si besoin ou autre chose.

Merci de vos reponses

11 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 août 2011 à 16:01
Tu te noies dans un verre d'eau !

voilà comment remplir :
With Worksheets("Inputs")
  Me.ComboBox2.List = .Range("D3:D" & .Range("D65536").End(xlUp).Row).Value
  Me.ComboBox3.List = WorksheetFunction.Transpose(.Range("E2:G2").Value)
End With

et voilà ton code pour afficher dans tune textbox textbox1 :
Private Sub ComboBox2_Change()
  dis_moi Worksheets("Inputs")
End Sub

Private Sub ComboBox3_Change()
  dis_moi Worksheets("Inputs")
End Sub


Private Sub dis_moi(F As Worksheet)
  If ComboBox2.ListIndex -1 Or ComboBox3.ListIndex -1 Then Exit Sub
  TextBox1.Text = F.Cells(ComboBox2.ListIndex + 3, ComboBox3.ListIndex + 5).Value
End Sub

Cà, c'est avec ton exemple (lignes commençant en 3 et colonnes commençant en E) !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 août 2011 à 11:18
Bonjour,
1) relis-toi
j'ai cree deux ComboBox (ComboBox2 et ComboBox3)

et
Dans ma TextBox6 je voudrais faire apparaitre la valeur correspondant a la jonction de la valeur des 3 ComboBox.

2) comment alimentes-tu la combo combobox2 et la combo combobox3 ? manuellement ? ou autre (et comment) ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Nat44200 Messages postés 24 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 24 août 2011 1
15 août 2011 à 11:26
Desole pour l'erreur de frappe, j'ai bien 2 ComboBox.

voici mon code pour alimenter mes combo

With Worksheets("Inputs")
Me.ComboBox2.List = .Range("D3:D" & .Range("D65536").End(xlUp).Row).Value
End With

With Worksheets("Inputs")
Me.ComboBox3.AddItem (Sheets("Inputs").Range("E2").Value)
Me.ComboBox3.AddItem (Sheets("Inputs").Range("F2").Value)
Me.ComboBox3.AddItem (Sheets("Inputs").Range("G2").Value)
End With

J'ai alimente la ComboBox2 grace a une liste car comme vous pouvez le lire precedement , il s'agit des donnees a la verticale. Et j'ai alimente la ComboBox3 par AddItem car il s'agit des donnees a l'horizontale et que la je ne voyais pas comment faire autrement. C'est deux codes fonctionnent bien, reste plus qu'a remplir la Textbox.

Merci d'avoir repondu rapidement
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
15 août 2011 à 11:30
Voici l'algo (grossier) que je te propose.

Il faut que tu trouve l'événement "changment" de tes combobox. Un truc style "_QuandChangement".
Dans chaqu'un des événements tu mais un code qui récup. la ligne (Lettre) et la collone (Numérot) (je pense a find).

Tu fais une fonction qui sera appelle de puis les comboboxe qui prends en paramètre la ligne ou la cololne et qui affiche la valeur dans le TextBox6.

C'l'idéé grlobal que j'ai. Après y'a plus qu'à comme disait l'autre.
0

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

Posez votre question
cs_GG72 Messages postés 94 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 30 octobre 2011
15 août 2011 à 13:55
Bonjour,

C'est toujours moi.

En utilisant la propriété ListIndex de tes Combobox, tu devrais pouvoir t'en sortir, non?

Sinon, pour améliorer ton code:
Puisque tu utilises l'instruction With, tu peux écrire ceci
With Worksheets("Inputs") 
Me.ComboBox3.AddItem .Range("E2").Value 
Me.ComboBox3.AddItem .Range("F2").Value) 
Me.ComboBox3.AddItem .Range("G2").Value) 
End With 


Bon courage.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 août 2011 à 14:16
Bé ...!:
que ferait donc ceci ? :


 Me.ComboBox2.List = Range("D3:D" & Range("D65536").End(xlUp).Row).Value
   Me.ComboBox3.List = WorksheetFunction.Transpose(Range("E2:G2").Value)


C'est le tout premier pas. Le reste est vraiment simple, en utilisant tout simplement les index des articles choisis dans l'une et l'autre des deux combos !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Nat44200 Messages postés 24 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 24 août 2011 1
15 août 2011 à 15:05
Bonjour a tous,

merci de vos reponses. Gerard ta soultion etait plus simplifiee que la mienne mais celle que ma propose ucfoutu est encore plus simplifie. Le seul probleme que je rencontre dans cette formule c'est qu'elle appel les cellules de la feuille active et donc quand je veux appeler les valeurs qui sont dans ma feuille "Inputs", soit en mettant Worksheet("Input") soit comme je suis dans le with sans mettre le nom de la feuille (pareil que pour la comboBox2), je me retrouve avec l'erreur 438.

Pour ma TextBox6, je vais comme vous me l'avez conseille, chercher du cote des index des articles ou du "find". Je vous retiens au courant de mon avance sur ce point.

Merci a vous
0
Nat44200 Messages postés 24 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 24 août 2011 1
15 août 2011 à 15:07
J'ai oublie de copier mon c, donc quand je marque Worksheet("Inputs"), cela met l'erreur 438
0
cs_GG72 Messages postés 94 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 30 octobre 2011
15 août 2011 à 16:05
Peux-tu nous redonner l'intégralité de ton code qui te donne cette erreur 438.

Attention:
Worksheets("Inputs")
et non
Worksheet("Inputs")
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
15 août 2011 à 16:22
ucfoutu, tu as appeller ta sub "dis_moi" c exactement le nom de ma boite mail durant 10sec. g u un "écrant bleu" dans ma tête!!
0
Nat44200 Messages postés 24 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 24 août 2011 1
15 août 2011 à 16:32
Ok comme tu dis "Tu te noies dans un verre d'eau", je fais pas mal de fautes de frappe aujourd'hui , la fatigue du WE .

Du coup en retestant le premier code de ucfoutu, c'est correct.

Et le code pour ma TextBox marche a merveille.


Merci beaucoup a vous pour vos responses rapides


Bonne journee et a une prochaine fois sur le forum
0
Rejoignez-nous