Mise en place d'un USERFORM

elliotr

XLDnaute Junior
Bonjour à tous,

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.
 

Pièces jointes

  • fichier test2.xls
    64.5 KB · Affichages: 66
  • fichier test2.xls
    64.5 KB · Affichages: 66
  • fichier test2.xls
    64.5 KB · Affichages: 68
Dernière édition:

elliotr

XLDnaute Junior
Re : Mise en place d'un USERFORM

Oui exact, en cherchant j'ai trouvé l'astuce du glisser.

J'ai encore une question ! :)

J'ai terminer de coder l'ensemble du USER, mais je veux lui apporter plus de précision.

Voilà le code obtenu avec ton raisonnement:

Private Sub ComboBox1_Change()
With Sheets("Base de données")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox1.Text = .Cells(a, 1).Value Then
TextBox2.Text = .Cells(a, 11).Value
TextBox1.Text = .Cells(a, 12).Value
TextBox3.Text = .Cells(a, 29).Value
TextBox4.Text = .Cells(a, 30).Value
TextBox5.Text = .Cells(a, 31).Value
TextBox6.Text = .Cells(a, 32).Value
TextBox7.Text = .Cells(a, 4).Value
TextBox8.Text = .Cells(a, 10).Value
TextBox9.Text = .Cells(a, 39).Value
TextBox10.Text = .Cells(a, 7).Value
TextBox11.Text = .Cells(a, 8).Value
TextBox12.Text = .Cells(a, 33).Value
TextBox13.Text = .Cells(a, 34).Value
TextBox14.Text = .Cells(a, 36).Value
TextBox15.Text = .Cells(a, 40).Value
TextBox16.Text = .Cells(a, 2).Value
TextBox17.Text = .Cells(a, 41).Value
TextBox18.Text = .Cells(a, 43).Value
End If
Next a
End With

End Sub


En fait, je vais rajouter une ou deux Combobox pour affiner le tri (là en l'occurence on tri par le code): je veux donner l'option de pouvoir trier par le numéro de compte ou par autre chose. Donc je vais recopier le code du premier combobox et l'ajuster à l'autre.

Par contre à quel moment commencer la codification pour la combobox 2 dans le code que je t'ai recopié ?
Après next a ? Apres End with ?
 

elliotr

XLDnaute Junior
Re : Mise en place d'un USERFORM

J'ai essayé ça:

Private Sub ComboBox1_Change()
With Sheets("Base de données")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox1.Text = .Cells(a, 1).Value Then
TextBox2.Text = .Cells(a, 11).Value
TextBox1.Text = .Cells(a, 12).Value
TextBox3.Text = .Cells(a, 29).Value
TextBox4.Text = .Cells(a, 30).Value
TextBox5.Text = .Cells(a, 31).Value
TextBox6.Text = .Cells(a, 32).Value
TextBox7.Text = .Cells(a, 4).Value
TextBox8.Text = .Cells(a, 10).Value
TextBox9.Text = .Cells(a, 39).Value
TextBox10.Text = .Cells(a, 7).Value
TextBox11.Text = .Cells(a, 8).Value
TextBox12.Text = .Cells(a, 33).Value
TextBox13.Text = .Cells(a, 34).Value
TextBox14.Text = .Cells(a, 36).Value
TextBox15.Text = .Cells(a, 40).Value
TextBox16.Text = .Cells(a, 2).Value
TextBox17.Text = .Cells(a, 41).Value
TextBox18.Text = .Cells(a, 43).Value
End If
Next a
End With
End Sub
Private Sub ComboBox2_Change()
With Sheets("Base de données")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox2.Text = .Cells(a, 1).Value Then
TextBox2.Text = .Cells(a, 11).Value
TextBox1.Text = .Cells(a, 12).Value
TextBox3.Text = .Cells(a, 29).Value
TextBox4.Text = .Cells(a, 30).Value
TextBox5.Text = .Cells(a, 31).Value
TextBox6.Text = .Cells(a, 32).Value
TextBox7.Text = .Cells(a, 4).Value
TextBox8.Text = .Cells(a, 10).Value
TextBox9.Text = .Cells(a, 39).Value
TextBox10.Text = .Cells(a, 7).Value
TextBox11.Text = .Cells(a, 8).Value
TextBox12.Text = .Cells(a, 33).Value
TextBox13.Text = .Cells(a, 34).Value
TextBox14.Text = .Cells(a, 36).Value
TextBox15.Text = .Cells(a, 40).Value
TextBox16.Text = .Cells(a, 2).Value
TextBox17.Text = .Cells(a, 41).Value
TextBox18.Text = .Cells(a, 43).Value
End If
Next a
End With
End Sub


Mais ça ne fonctionne pas :(
 

mikachu

XLDnaute Occasionnel
Re : Mise en place d'un USERFORM

la modification à faire est au niveau de :

If ComboBox2.Text = .Cells(a, 1).Value Then

la ligne vérifie la 1ère colonne .cells(a, 1)

Le compte client est en colonne AE ? (titre de colonne = numéro?)
Si c'est le cas, il s'agit de la colonne 31, tu remplace donc
If ComboBox2.Text = .Cells(a, 1).Value Then par If ComboBox2.Text = .Cells(a, 31).Value Then

A chaque fois, tu regarde la colonne que tu veux ajouter dans le tri est tu remplace dans la ligne que je t'ai donné
 

mikachu

XLDnaute Occasionnel
Re : Mise en place d'un USERFORM

du coups ça donne ça:

VB:
Private Sub ComboBox1_Change()
With Sheets("Base de données")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox1.Text = .Cells(a, 1).Value Then
TextBox2.Text = .Cells(a, 11).Value
TextBox1.Text = .Cells(a, 12).Value
TextBox3.Text = .Cells(a, 29).Value
TextBox4.Text = .Cells(a, 30).Value
TextBox5.Text = .Cells(a, 31).Value
TextBox6.Text = .Cells(a, 32).Value
TextBox7.Text = .Cells(a, 4).Value
TextBox8.Text = .Cells(a, 10).Value
TextBox9.Text = .Cells(a, 39).Value
TextBox10.Text = .Cells(a, 7).Value
TextBox11.Text = .Cells(a, 8).Value
TextBox12.Text = .Cells(a, 33).Value
TextBox13.Text = .Cells(a, 34).Value
TextBox14.Text = .Cells(a, 36).Value
TextBox15.Text = .Cells(a, 40).Value
TextBox16.Text = .Cells(a, 2).Value
TextBox17.Text = .Cells(a, 41).Value
TextBox18.Text = .Cells(a, 43).Value
End If
Next a
End With
End Sub


Private Sub ComboBox2_Change()
With Sheets("Base de données")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox2.Text = .Cells(a, 31).Value Then
TextBox2.Text = .Cells(a, 11).Value
TextBox1.Text = .Cells(a, 12).Value
TextBox3.Text = .Cells(a, 29).Value
TextBox4.Text = .Cells(a, 30).Value
TextBox5.Text = .Cells(a, 31).Value
TextBox6.Text = .Cells(a, 32).Value
TextBox7.Text = .Cells(a, 4).Value
TextBox8.Text = .Cells(a, 10).Value
TextBox9.Text = .Cells(a, 39).Value
TextBox10.Text = .Cells(a, 7).Value
TextBox11.Text = .Cells(a, 8).Value
TextBox12.Text = .Cells(a, 33).Value
TextBox13.Text = .Cells(a, 34).Value
TextBox14.Text = .Cells(a, 36).Value
TextBox15.Text = .Cells(a, 40).Value
TextBox16.Text = .Cells(a, 2).Value
TextBox17.Text = .Cells(a, 41).Value
TextBox18.Text = .Cells(a, 43).Value
End If
Next a
End With
End Sub
 

elliotr

XLDnaute Junior
Re : Mise en place d'un USERFORM

du coups ça donne ça:

VB:
Private Sub ComboBox1_Change()
With Sheets("Base de données")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox1.Text = .Cells(a, 1).Value Then
TextBox2.Text = .Cells(a, 11).Value
TextBox1.Text = .Cells(a, 12).Value
TextBox3.Text = .Cells(a, 29).Value
TextBox4.Text = .Cells(a, 30).Value
TextBox5.Text = .Cells(a, 31).Value
TextBox6.Text = .Cells(a, 32).Value
TextBox7.Text = .Cells(a, 4).Value
TextBox8.Text = .Cells(a, 10).Value
TextBox9.Text = .Cells(a, 39).Value
TextBox10.Text = .Cells(a, 7).Value
TextBox11.Text = .Cells(a, 8).Value
TextBox12.Text = .Cells(a, 33).Value
TextBox13.Text = .Cells(a, 34).Value
TextBox14.Text = .Cells(a, 36).Value
TextBox15.Text = .Cells(a, 40).Value
TextBox16.Text = .Cells(a, 2).Value
TextBox17.Text = .Cells(a, 41).Value
TextBox18.Text = .Cells(a, 43).Value
End If
Next a
End With
End Sub


Private Sub ComboBox2_Change()
With Sheets("Base de données")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox2.Text = .Cells(a, 31).Value Then
TextBox2.Text = .Cells(a, 11).Value
TextBox1.Text = .Cells(a, 12).Value
TextBox3.Text = .Cells(a, 29).Value
TextBox4.Text = .Cells(a, 30).Value
TextBox5.Text = .Cells(a, 31).Value
TextBox6.Text = .Cells(a, 32).Value
TextBox7.Text = .Cells(a, 4).Value
TextBox8.Text = .Cells(a, 10).Value
TextBox9.Text = .Cells(a, 39).Value
TextBox10.Text = .Cells(a, 7).Value
TextBox11.Text = .Cells(a, 8).Value
TextBox12.Text = .Cells(a, 33).Value
TextBox13.Text = .Cells(a, 34).Value
TextBox14.Text = .Cells(a, 36).Value
TextBox15.Text = .Cells(a, 40).Value
TextBox16.Text = .Cells(a, 2).Value
TextBox17.Text = .Cells(a, 41).Value
TextBox18.Text = .Cells(a, 43).Value
End If
Next a
End With
End Sub





Effectivement, un oubli qui fait la différence...


Je suis sur mon troisième et DERNIER (sisi :) ) Combobox.
Par contre cette fois celui-ci va trier par banques.
Il y aura donc plusieurs comptes pour UN seul résultat.
J'en déduis donc malgré mon niveau débutant qu'il faut une Listbox et non une Textbox je suppose ?
Si oui , quel est le code à inscrire ? En attendant une réponse je vais essayer de trouver
 

elliotr

XLDnaute Junior
Re : Mise en place d'un USERFORM

Car la troisième Combobox trie par banques.

Donc pour une banque il y aura plusieurs choix.
J'ai donc rajouté un onglet au USERFORM qui ne pourra pas me détailler compte par compte tous les TextBox puisque choix multiple.
Donc dans l'onglet supplémentaire j'ai placé la combobox 3 et en dessous une listbox qui devrait m'écrire toutes les lignes de la base de données où le nom de la banque apparaît
 

elliotr

XLDnaute Junior
Re : Mise en place d'un USERFORM

Je ne comprend pas ce que tu veux afficher dans ta listbox... peux-tu réexpliquer ?

A mon avis, ça va plutot se passer avec un listbox1.additem mais je n'ai pas trop compris ce que tu veux

Ma base de données va de la colonne A à AQ
En fait, j'ai une Combobox qui trie par banque.
SI par exemple je selectionne banque 1, je voudrais que dans la Listbox apparaisse toutes les lignes de A à AQ qui correspondent à un compte de 1

Donc si 1 apparaît dans la ligne, elle s'ajoute à la liste.
De façon à voir combien il y a de comptes pour telle banque (exemple: pour BNP ça recopie 13 lignes, il y a donc 13 comptes, et avec les détails)
 

mikachu

XLDnaute Occasionnel
Re : Mise en place d'un USERFORM

Essaye ça (en vérifiant le nom de ta listbox et dis moi si c'est ce que tu veux

VB:
Private Sub ComboBox3_Change()
listbox1.clear
With Sheets("Base de données")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox3.Text = .Cells(a, 39).Value Then
ListBox1.AddItem .Cells(a, 39).Value 
end sub
 

elliotr

XLDnaute Junior
Re : Mise en place d'un USERFORM

Essaye ça (en vérifiant le nom de ta listbox et dis moi si c'est ce que tu veux

VB:
Private Sub ComboBox3_Change()
listbox1.clear
With Sheets("Base de données")
For a = 1 To .Range("A65536").End(xlUp).Row
If ComboBox3.Text = .Cells(a, 39).Value Then
ListBox1.AddItem .Cells(a, 39).Value 
end sub

Ca ne fonctionne pas, la première ligne devient jaune
 

elliotr

XLDnaute Junior
Re : Mise en place d'un USERFORM

quel est le code erreur ?
la listbox est bien listbox1 ?


Ca fonctionne c'est bon, il fallait rajouter les end if, end with et next a.

Par contre
ListBox1.AddItem .Cells(a, 39).Value
n'affiche que la valeur de la colonne 39. Comment faire en sorte que TOUTES les données de la ligne apparaissent dans le tableau ? (de 1 à 43)
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 051
Messages
2 105 057
Membres
109 242
dernier inscrit
zaboul2