Bonjour, pour que cela soit très clair, j'ai illustrer ma problématque sur un fichier word en pièce jointe.
En vous remerciant d'avance.
Version imprimable
Bonjour, pour que cela soit très clair, j'ai illustrer ma problématque sur un fichier word en pièce jointe.
En vous remerciant d'avance.
Bonjour,
Pas mal du tout ton petit fichier Word pour expliquer clairement ton problème ! :king: Mais c'est pas tout le monde qui télécharge, fais attention à cela.
Pour ce qui est de ton problème, j'ai un petit bout de code à te proposer:
Ce que tu appelles "ListBox" ets en réalité des ComboBox sous VBA (Liste déroulante)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Option Explicit Dim i As Byte Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) For i = 2 To 5 If Cells(i, 1) = TextBox1.Text Then ComboBox1.AddItem Cells(i, 2) Next ComboBox1.ListIndex = 0 End Sub Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) For i = 2 To 5 If Cells(i, 3) = TextBox2.Text Then ComboBox2.AddItem Cells(i, 4) Next ComboBox2.ListIndex = 0 End Sub
Crée un userform avec 2 textbox et 2 combobox. Dans la feuille vierge de ton classeur mets ton tableau de correspondance des codes a partir de la cellule A1. Teste le tout et dis nous si cela correspond à ton attente! :roll:
Cordialement,
Lyonel
Merci beaucoup. Dans le principe sa fonctionne. Mais j'ai plusieurs petites questions, mais je vais y aller une par une.
A quoi sert ce bout de code?
Code:ComboBox1.ListIndex = 0
J'essaye de comprendre pour pouvoir l'étendre ensuite et broder autour pour complexifier un peu l'astuce.Code:ComboBox2.ListIndex = 0
En tout cas c'est génial merci
Ca permet juste d'afficher le code correspondant. Sinon il est ajouté dans la liste déroulante mais n'apparait pas à l'écran... Enlève l'instruction et lance l'userform. Tu comprendras surement tout de suite le rôle de cette ligne ! :mouarf:
Non mais je te demandé sa parce que de temps en temps, sa se bloque sur ce bout de code et j'ai le message suivant:
Mais je pense que c'est parce que la valeur saisie n'est pas correcte. Il faudrais donc que je fasse un test et que si la valeur n'est pas correcte alors sa me mette une msgBox? Je vais regarder sa.Citation:
Impossible de définir la propriété ListIndex. Valeur de propriété non valide
Par contre comment je peut faire pour que je puisse essayer plusieurs valeurs dans mes txtBox? Parce que actuelement, si je met par exemple "A1" dans ma txtBox1 sa va bien me mettre "AAAA" dans la combobox1. En revanche si j'efface "A1" et que j'essaye "A2" sa ne me réactualise pas ma combobox?
Il faut peut être changer l'evement? J'ai essayer sur evenement Change, mais sa ne fonctionne pas...
Merci
Il existe une méthode tel que le refreshQuery en Exel?
Où je ne sais pas, mais je vois vraiement pas comment faire et c'est vrai que c'est embettant, parecque si la personne se trompe elle ne peut plus revenir en arrière.
J'ai essayé sa, mais la syntaxe ne doit pas être correcte? :mouarf:
Et pour ce qui est du test si la valeur tapée est correcte, j'ai plusieurs choses, dont sa, mais c'est pareil je n'ai pas la bonne syntaxe:Code:
1
2
3
4
5 Private Sub TextBox1_Change() Me.ComboBox1.Refresh End Sub
Parce que ce que je souhaite faire, c'est afficher une msgBox si la valeur de la textbox n'est pas trouvée lors de la boucle. La actuelement avec ce code sa me met "Next sans For".Code:
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) For i = 2 To 6 If Cells(i, 1) = TextBox1.Text Then ComboBox1.AddItem Cells(i, 2) Next ComboBox1.ListIndex = 0 Else MsgBox ("Veuillez entrer un code valide") Exit Sub End If End Sub
Bonjour,
Ce code :
est plutôt surprenant !Code:
1
2
3
4
5
6
7
8
9
10 For i = 2 To 6 If Cells(i, 1) = TextBox1.Text Then ComboBox1.AddItem Cells(i, 2) Next ComboBox1.ListIndex = 0 Else MsgBox ("Veuillez entrer un code valide") Exit Sub End If End Sub
ton else et ton EndIf viennent après le Next alors que la condition If est dans la boucle !!! 8O
Re et merci. Ba en fait je voudrais que si la valeur entrée dans la textBox n'est pas trouvée lors de la boucle, j'ai une msgBox qui m'indique que ma valeur entrée est incorrecte et donc qu'il faut que j'en essaye une autre.
Donc j'ai mis sa après le next pour que sa fasse ma boucle avant? Pourquoi ce n'est pas sa?
Sinon j'ai essayé sa:
Mais le souci que je rencontre, c'est que lors de l'execution de la boucle la valeur de la textBox ne sera égale à une des cellules testées qu'une fois alors sa ne marche pas.Code:
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) For i = 2 To 6 If Cells(i, 1) = TextBox1.Text Then ComboBox1.AddItem Cells(i, 2) Else MsgBox ("Veuillez entrer un code valide") Exit Sub End If Next ComboBox1.ListIndex = 0 End Sub
Ce qu'il faudrait tester c'est si on ne rencontre jamais le contenu de la textbox 1 lors de la boucle que l'on met le message.
pas sûr de t'avoir bien compris :
Serait-ce ceci, que tu veux faire ?
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) dim bon as boolean For i = 2 To 6 If Cells(i, 1) = TextBox1.Text Then ComboBox1.AddItem Cells(i, 2) bon = true End If Next If not bon then msgbox "pas bon" exit sub else combo1.lisdtindex = 0 end if End Sub
Re et merci c'est exactement sa que je voulais.
En revanche je me permets de revenir sur tes paroles
J'ai essayé de comprendre je te rassure, mais comme mon statut l'indique je suis débutant et donc je n'ai pas toute la logique.Citation:
on n'essaye pas des trucs pour essayer ! On réfléchit et on n'essaye que ce qui parait LOGIQUE et COHERENT
Je fait du vba très rarement, mais ce que je fait actuelement est vital pour mon entreprise.
En esperant entrainer ta compréhension. :D
Pour ce qui est de cette question:
Aurais tu des pistes?Citation:
Par contre comment je peut faire pour que je puisse essayer plusieurs valeurs dans mes txtBox? Parce que actuelement, si je met par exemple "A1" dans ma txtBox1 sa va bien me mettre "AAAA" dans la combobox1. En revanche si j'efface "A1" et que j'essaye "A2" sa ne me réactualise pas ma combobox?
Merci beaucoup pour ton aide
Pour ceux qui rejoignent la conversation:
Grâce à ce code:
je réussi à attribuer une valeur à une combobox en inscrivant un code dans une textBox dans un UserForm. Le problème que je rencontre c'est que si je rentre une valeur dans ma textBox et que je souhaite la modifier par la suite, cela ne met plus à jour ma combobox.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim bon As Boolean For i = 2 To 6 If Cells(i, 1) = TextBox1.Text Then ComboBox1.AddItem Cells(i, 2) bon = True End If Next If Not bon Then MsgBox "La valeur entrée pour ce champ est incorrecte" Exit Sub Else ComboBox1.ListIndex = 0 End If End Sub
Donc je ne sais pas comment faire.
Merci pour d'éventuelles pistes
Comment vider une ComboBox avant le la re-remplir...;)
Ouvre ton aide en ligne sur la méthode Clear.