[déplacé VB.NET -> VBA] Boucle d'une combobox

limitouz Messages postés 23 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 20 mai 2011 - 15 janv. 2010 à 23:07
limitouz Messages postés 23 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 20 mai 2011 - 16 janv. 2010 à 13:01
Bonsoir!
Je suis un débutant en vb je viens d'essayer une ligne de code sur des combo qui marche très bien, mais vu j'ai plusieurs combo à programmer j'aimerai
une itération ou une boucle pour l'ensemble voici le code
If ComboBox1.Value = Range("Feuil1!B3") Then
TextBox5.Value = Range("Feuil1!C3")
End If
If ComboBox1.Value = Range("Feuil1!B4") Then
TextBox5.Value = Range("Feuil1!C4")
End If
If ComboBox1.Value = Range("Feuil1!B5") Then
TextBox5.Value = Range("Feuil1!C5")
End If

Sachant que j'ai 10 ligne 3 à 13
Les textbox sont en face des combobox sur une userform!

Merci d'avance de votre aide

23 réponses

Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
15 janv. 2010 à 23:18
salut

select case ComboBox1.Value
case Range("Feuil1!C3") : TextBox5.Value = Range("Feuil1!C3") 
case Range("Feuil1!B4") : TextBox5.Value = Range("Feuil1!C4") 
...
case else : '....
end select


ou bien

If ComboBox1.Value = Range("Feuil1!B3") Then
TextBox5.Value = Range("Feuil1!C3")
elseIf ComboBox1.Value = Range("Feuil1!B4") Then
TextBox5.Value = Range("Feuil1!C4")
elseIf ComboBox1.Value = Range("Feuil1!B5") Then
TextBox5.Value = Range("Feuil1!C5")
End If



Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie
0
limitouz Messages postés 23 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 20 mai 2011
15 janv. 2010 à 23:32
Merci Claiyah
ça marche, mais je suis obligé d'appuis sur une commonbutton pour afficher la valeur sur le textbox, ne serait il pas possible d'afficher automatiquement la valeur des que je choisis la valeur de la combobox

encore merci
0
limitouz Messages postés 23 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 20 mai 2011
16 janv. 2010 à 00:00
Excuser moi quelqu'un aurait il une idée pour compresser tous cela avec un itération ou une boucle? attention aux yeux c moche!
Private Sub CommandButton6_Click()
Select Case ComboBox1.Value
Case Range("Feuil1!B3"): TextBox5.Value = Range("Feuil1!C3")
Case Range("Feuil1!B4"): TextBox5.Value = Range("Feuil1!C4")
Case Range("Feuil1!B5"): TextBox5.Value = Range("Feuil1!C5")
Case Range("Feuil1!B6"): TextBox5.Value = Range("Feuil1!C6")
Case Range("Feuil1!B7"): TextBox5.Value = Range("Feuil1!C7")
Case Range("Feuil1!B8"): TextBox5.Value = Range("Feuil1!C8")
Case Range("Feuil1!B9"): TextBox5.Value = Range("Feuil1!C9")
Case Range("Feuil1!B10"): TextBox5.Value = Range("Feuil1!C10")
End Select
Select Case ComboBox2.Value
Case Range("Feuil1!F3"): TextBox6.Value = Range("Feuil1!G3")
Case Range("Feuil1!F4"): TextBox6.Value = Range("Feuil1!G4")
Case Range("Feuil1!F5"): TextBox6.Value = Range("Feuil1!G5")
Case Range("Feuil1!F6"): TextBox6.Value = Range("Feuil1!G6")
Case Range("Feuil1!F7"): TextBox6.Value = Range("Feuil1!G7")
Case Range("Feuil1!F8"): TextBox6.Value = Range("Feuil1!G8")
Case Range("Feuil1!F9"): TextBox6.Value = Range("Feuil1!G9")
Case Range("Feuil1!F10"): TextBox6.Value = Range("Feuil1!G10")
End Select
Select Case ComboBox3.Value
Case Range("Feuil1!I3"): TextBox7.Value = Range("Feuil1!J3")
Case Range("Feuil1!I4"): TextBox7.Value = Range("Feuil1!J4")
Case Range("Feuil1!I5"): TextBox7.Value = Range("Feuil1!J5")
Case Range("Feuil1!I6"): TextBox7.Value = Range("Feuil1!J6")
Case Range("Feuil1!I7"): TextBox7.Value = Range("Feuil1!J7")
Case Range("Feuil1!I8"): TextBox7.Value = Range("Feuil1!J8")
Case Range("Feuil1!I9"): TextBox7.Value = Range("Feuil1!J9")
Case Range("Feuil1!I10"): TextBox7.Value = Range("Feuil1!J10")
End Select
Select Case ComboBox4.Value
Case Range("Feuil1!L3"): TextBox8.Value = Range("Feuil1!M3")
Case Range("Feuil1!L4"): TextBox8.Value = Range("Feuil1!M4")
Case Range("Feuil1!L5"): TextBox8.Value = Range("Feuil1!M5")
Case Range("Feuil1!L6"): TextBox8.Value = Range("Feuil1!M6")
Case Range("Feuil1!L7"): TextBox8.Value = Range("Feuil1!M7")
Case Range("Feuil1!B8"): TextBox8.Value = Range("Feuil1!M8")
Case Range("Feuil1!B9"): TextBox8.Value = Range("Feuil1!M9")
Case Range("Feuil1!B10"): TextBox8.Value = Range("Feuil1!M10")
End Select
End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 janv. 2010 à 00:42
For I = 3 to 10
  If combobox1.value Range("Feuil1!B" & i) then textbox5.value range("Feuil1!" & i)
next


devrait par exemple (pas testé, mais...) pouvoir remplacer :
Select Case ComboBox1.Value
Case Range("Feuil1!B3"): TextBox5.Value = Range("Feuil1!C3")
Case Range("Feuil1!B4"): TextBox5.Value = Range("Feuil1!C4")
Case Range("Feuil1!B5"): TextBox5.Value = Range("Feuil1!C5")
Case Range("Feuil1!B6"): TextBox5.Value = Range("Feuil1!C6")
Case Range("Feuil1!B7"): TextBox5.Value = Range("Feuil1!C7")
Case Range("Feuil1!B8"): TextBox5.Value = Range("Feuil1!C8")
Case Range("Feuil1!B9"): TextBox5.Value = Range("Feuil1!C9")
Case Range("Feuil1!B10"): TextBox5.Value = Range("Feuil1!C10")
End Select 


Et il y a encore mieux à faire, mais là, je vais au lit ...

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 janv. 2010 à 00:44
gaffe (correction)
For I = 3 to 10
  If combobox1.value Range("Feuil1!B" & i) then textbox5.value range("Feuil1!C
" & i)
next


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
limitouz Messages postés 23 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 20 mai 2011
16 janv. 2010 à 00:46
Merci ucfoutu! dsolé je sais ke c tro tard! bonne nuit!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 janv. 2010 à 00:47
Dis(-moi si fonctionne (pas testé).
Si oui, tu vas voir à quoi je vais résumer (demain) tes 40 lignes de code (un max de 8 devraient suffire pour tout çà !

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
limitouz Messages postés 23 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 20 mai 2011
16 janv. 2010 à 00:52
heu ça marche pas erreur 1004 la methode range ne marche pas! je vais trop abuser de votre temps on verra demain si vous voulez bien!
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
16 janv. 2010 à 01:01
tu met le code dans combo_change et t'aurais plus besoin d'un bouton pour appliquer ton code
(je sais pas si combo_change existe dans vba)

Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie
0
limitouz Messages postés 23 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 20 mai 2011
16 janv. 2010 à 01:41
Merci CLaiyah le combo_change existe bien sur vb et marche super bien, encor merci
il me reste juste à attendre la boucle ke m'a promis ucfoutu pour demain et je seré comblé.

Bonne nuit les gars!
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 janv. 2010 à 01:54
salut,

en même temps, maintenant que tu as l'exemple pour 1 combo, tu l'as pour tous...

le tout dans la même boucle

[hr]
0
limitouz Messages postés 23 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 20 mai 2011
16 janv. 2010 à 01:58
pcpt l'exemple de ucfoutu ne marche pas pour l'instant tu n'aurais pas une solutions à proposer please?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 janv. 2010 à 02:26
... il a juste oublié une lettre, y'a pas mort d'homme :)

private sub SetValues
dim i as integer
For i = 3 to 10
  If combobox1.value Range("Feuil1!B" & i) then textbox5.value range("Feuil1!C" & i)
  If combobox2.value Range("Feuil1!F" & i) then textbox6.value range("Feuil1!G" & i)
  If combobox3.value Range("Feuil1!I" & i) then textbox7.value range("Feuil1!J" & i)
  If combobox4.value Range("Feuil1!L" & i) then textbox8.value range("Feuil1!M" & i)
next
end sub


à supposer que ce soit juste une erreur de copier/coller dans ton Case ComboBox4 (voir tes 4 dernières lignes)
0
limitouz Messages postés 23 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 20 mai 2011
16 janv. 2010 à 02:29
merci je vais essayer !
0
limitouz Messages postés 23 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 20 mai 2011
16 janv. 2010 à 02:45
ohhhhhhhhhhhhhh pcpt merci 1000 fois sa marche tré tré bien! merci à vous tous!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 janv. 2010 à 08:53
Re...
à limiteur : tu aurais dû voir que j'avais corrigé cet oubli de la lettre c ...
De bon matin (juuste pour rigoler...):
Devrait fonctionner, mais je ne le conseille pas vraiment (casse-tête si maintenance plus tard) :
 toto = "BFILCGJM"
  For Q = 1 To Len(toto \ 2)
    For i = 3 To 10
      If Controls("combobox" & Q).Value Range("Feuil1!" & Mid(toto, Q, 1) & i) Then Controls("textbox" & Q + 4).Value Range("Feuil1!" & Mid(toto, Q + 4, 1) & i)
        Exit For ' (pour ne poas continuer inutilement la boucle I que ce Q)
    Next
  Next


1) Regarde le exit for (il est là pour raccourcir la boucle pense à le rajouter dans l'autre code également.
2) le mot Controls (partout) est à utiliser si sur userform (si sur feuille : il sera à remplacer par un autre mot, selon le type des contrôles insérés (tant en ce qui concerne les textboxes que les comboboxes)
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 janv. 2010 à 08:56
et zut (voilà ce que c'est que de ferapper à pain levée
If Controls("combobox" & Q).Value = Range("Feuil1!" & Mid(toto, Q, 1) & i) Then 
        Controls("textbox" & Q + 4).Value = Range("Feuil1!" & Mid(toto, Q + 4, 1) & i)
        Exit For ' (pour ne poas continuer inutilement la boucle I que ce Q)
end if ' <<<<<<===== oublié ici



____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 janv. 2010 à 11:24
pas d'exit for dans l'autre boucle non
0
limitouz Messages postés 23 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 20 mai 2011
16 janv. 2010 à 12:20
Merci! vos boucle marcheent très bien. Mais j'ai un autre soucis avec une autre boucle, je veux afficher les valeurs de combo et de text sur ma facture(feuil2) mais j'arrive pas à faire une boucle, j'ai fait un copié collé bete et méchant mais c'est moche! voici le code
Private Sub CommandButton5_Click()
Dim Facture As String
Sheets("Facture").Range("B12").Value = TextBox1.Value
Sheets("Facture").Range("B13").Value = TextBox2.Value
Sheets("Facture").Range("B14").Value = TextBox3.Value
Sheets("Facture").Range("A19").Value = ComboBox1.Value
Sheets("Facture").Range("A20").Value = ComboBox2.Value
Sheets("Facture").Range("A21").Value = ComboBox3.Value
Sheets("Facture").Range("A22").Value = ComboBox4.Value
Worksheets("Facture").Select
UserForm1.Hide
MsgBox ("Veuillez bien verifier votre Facture")
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 janv. 2010 à 12:34
une seule solution : arrêter de copier/coller bêtement
le dernier code proposé par ucfoutu te montre comment utiliser la collection CONTROLS par leur nom

à savoir que ce n'est ici pas la peine de boucler de toute manière, il vaut mieux parfois avoir plus de lignes sinon tu ne t'y retrouveras jamais....

(sans compter qu'une boucle un aussi un coup, tout comme d'utiliser certaines méthodes et fonctions)
0
Rejoignez-nous