VBA - Valeur TextBox en fonction de 2 ComboBox [Résolu]

Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
- - Dernière réponse : 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
Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
211
1
Merci
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

Dire « Merci » 1

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

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

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
211
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
1
0
Merci
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
Commenter la réponse de Nat44200
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
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.
Commenter la réponse de 4u4me4us
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
30 octobre 2011
0
Merci
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.
Commenter la réponse de cs_GG72
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
211
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
1
0
Merci
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
Commenter la réponse de Nat44200
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
1
0
Merci
J'ai oublie de copier mon c, donc quand je marque Worksheet("Inputs"), cela met l'erreur 438
Commenter la réponse de Nat44200
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
30 octobre 2011
0
Merci
Peux-tu nous redonner l'intégralité de ton code qui te donne cette erreur 438.

Attention:
Worksheets("Inputs")
et non
Worksheet("Inputs")
Commenter la réponse de cs_GG72
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
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!!
Commenter la réponse de 4u4me4us
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
1
0
Merci
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
Commenter la réponse de Nat44200