Je vous joins en pièce jointe le "fichier test" pour que vous puissiez suivre ma demande pas à pas sans trop perdre de temps.
J'ai donc un fichier excel avec un très grand tableau (colonne A à AQ, et ligne 1 à 476).
Le but étant de créer un USERFORM que j'ai déjà mis en place: il suffit de cliquer sur le bouton FORMULAIRE pour le faire apparaître.
En effet, chacune des colonnes de mon tableau correspondent à des données sur des comptes bancaires, des sociétés, etc....
Ma demande:
Dans l'onget "Compte bancaire" du USERFORM il y a une liste modifiable : le Code.
Le but est de sélectionner le code voulu et que dans tous les champs vides de TOUS les onglets du USERFORM apparaîssent les données correspondants au code choisi.
Exemple: Si on sélectionne le code 23, il faudra que dans l'onglet compte bancaire se remplissent tous les champs de la ligne du code 33 (soit les infos de la ligne 24) mais que les infos correspondantes des autres onglets (société, agence bancaire) se remplissent aussi.
Pour compte bancaire , les infos correspondent aux colonnes D, K, J, L, AC, AD, AE, AF
Pour agence bancaire, les nfos correspondent aux colonnes F, G, H, AG, AH, AJ
etc, etc...
A chaque fois que je sélectionnes un code, les données doivent se rafraichir (automatiquement ou à l'aide d'un bouton, peu importe même si l'automatisation reste plus agréable).
Mon soucis est donc lié à la mise en place des macros, car je n'y connais rien et j'aurai besoin d'une aide d'utilisateurs confirmés/experts.
La "feuil1" est une base de données ?
Tu veux remplir les différentes cases de ta userform en fonction de la base de données quand tu sélectionne le code ?
La "feuil1" est une base de données ?
Tu veux remplir les différentes cases de ta userform en fonction de la base de données quand tu sélectionne le code ?
Bon j'ai regardé le fichier en détails, je ne pige rien. (Désolé je ne connais pas le VBA donc un peu chaud).
Les deux premières cases que tu as faites marchent bien et il faut donc remplir les autres.
Mais le seul endroit où je trouve du "code" c'est en double cliquant dans les textbox . Là j'ai :
Private Sub ComboBox1_Change()
With Sheets("feuil1")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox1.Text = .Cells(a, 1).Value Then
TextBox2.Text = .Cells(a, 2).Value
TextBox1.Text = .Cells(a, 11).Value
'et ainsi de suite
End If
Next a
End With
End Sub
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub
Private Sub ComboBox1_Change()
With Sheets("feuil1")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox1.Text = .Cells(a, 1).Value Then
TextBox6.Text = .Cells(a, 29).Value
TextBox2.Text = .Cells(a, 11).Value
'et ainsi de suite
End If
Next a
End With
End Sub
With Sheets("feuil1")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox1.Text = .Cells(a, 1).Value Then
...
End if
vérifie chaque ligne afin de savoir si la valeur de la combobox existe dans la feuille
TextBox6.Text = .Cells(a, 29).Value
TextBox2.Text = .Cells(a, 11).Value
Si c'est le cas, alors les valeurs seront recopiées dans les textbox
De ton coté, la seule chose que tu as à rajoputer est TextBoxXX.Text = .Cells(a, YY).Value
en remplaçant les XX et YY
Par exemple: Pour le code guichet, il s'agit de la textbox5 et de la folonne 30 du tableau (colonne AD)
Du coup ça donne Textbox5.Text = Cells(a, 30).Value
à ajouter en dessous de Textbox1.Text... du coup le code devient:
VB:
Private Sub ComboBox1_Change()
With Sheets("feuil1")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox1.Text = .Cells(a, 1).Value Then
TextBox6.Text = .Cells(a, 29).Value
TextBox2.Text = .Cells(a, 11).Value
Textbox5.Text = .Cells(a, 30).Value
'et ainsi de suite
End If
Next a
End With
End Sub
Private Sub ComboBox1_Change()
With Sheets("feuil1")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox1.Text = .Cells(a, 1).Value Then
TextBox6.Text = .Cells(a, 29).Value
TextBox2.Text = .Cells(a, 11).Value
'et ainsi de suite
End If
Next a
End With
End Sub
With Sheets("feuil1")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox1.Text = .Cells(a, 1).Value Then
...
End if
vérifie chaque ligne afin de savoir si la valeur de la combobox existe dans la feuille
TextBox6.Text = .Cells(a, 29).Value
TextBox2.Text = .Cells(a, 11).Value
Si c'est le cas, alors les valeurs seront recopiées dans les textbox
De ton coté, la seule chose que tu as à rajoputer est TextBoxXX.Text = .Cells(a, YY).Value
en remplaçant les XX et YY
Par exemple: Pour le code guichet, il s'agit de la textbox5 et de la folonne 30 du tableau (colonne AD)
Du coup ça donne Textbox5.Text = Cells(a, 30).Value
à ajouter en dessous de Textbox1.Text... du coup le code devient:
VB:
Private Sub ComboBox1_Change()
With Sheets("feuil1")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox1.Text = .Cells(a, 1).Value Then
TextBox6.Text = .Cells(a, 29).Value
TextBox2.Text = .Cells(a, 11).Value
Textbox5.Text = .Cells(a, 30).Value
'et ainsi de suite
End If
Next a
End With
End Sub
Ahhhhh ! Donc en fait je dois rajouter autant de ligne correspondant au nombre de textbox c'est bien ça ?
Et pour chaque numéro de textbox j'assigne les valeurs qu'il faut.
C'est bien ça ?
Par contre mon fichier original comporte des vrais codes.
Y a-t-il donc qqch à changer pour appliquer la macro à ce fichier ?
Et est ce que je peux exporter le USERFORM du fichier test vers l'autre fichier en changeant les données du code si il le faut ?