XL 2013 Initialiser plusieurs ListBox dans un USF

7339simon

XLDnaute Nouveau
Bonjour à tous,

Je travaille actuellement sur un petit USF me permettant de gérer ma micro-entreprise mais là je me retrouve bloqué sur un point.

Document Cjoint

Comme vous le verrez sur le fichier ci-joint j'aimerais que mes 3 listbox contenus chacun dans une page soit alimenté dès l'ouverture de mon USF en allant chercher chacun des données dans les différentes sheet de mon tableur.

-ListBox1 = Sheet("Toto")
-ListBox2 = Sheet("lolo")
-ListBox3=Sheet("Velo")

J'ai réussi en fouillant sur ce forum pour le 1er ListBox mais je bloque pour les 2 autres, je vois pas comment faire pour dès l'initialisation de l'USF les 3 ListBox se chargent.

Merci d'avance pour ceux qui auront le temps d'y jeter un petit coup d'oeil.

Bonne journée à tous :)
 

Modeste

XLDnaute Barbatruc
Re : Initialiser plusieurs ListBox dans un USF

Bonjour,

Pas ouvert ton fichier (tu ne peux pas en déposer une version -éventuellement allégée- ici?)

Comment une ListBox pourrait-elle être alimentée par une feuille entière (soit plus de 17 milliards de cellules)!?
ListBox1 = Sheet("Toto") fonctionne chez toi :confused::confused::confused:
 

7339simon

XLDnaute Nouveau
Re : Initialiser plusieurs ListBox dans un USF

Bonjour,

Le fichier est allégé (moins de 40ko).

Pour ce qui est des milliard de possibilité j'ai défini une plage de cellule (.Range("a2:f" & f.[A65000].End(xlUp).Row))

Pour ce qui est du Sheet ==> Sheets("Toto"), c'était pour expliquer mon idée.

Merci d'avance
 

thebenoit59

XLDnaute Accro
Re : Initialiser plusieurs ListBox dans un USF

Bonjour Simon, bonjour Modeste.
Pour l'initialisation de tes Listbox :

Code:
Private Sub UserForm_Initialize()
Dim fToto As Worksheet, fLolo As Worksheet, fVelo As Worksheet

'--- On purge les LB
Me.ListBox1.Clear
Me.ListBox2.Clear
Me.ListBox3.Clear

'--- On définit les WS
Set fToto = Sheet1: Set fLolo = Sheet2: Set fVelo = Sheet3

'--- On enregistre les valeurs dans des tableaux
tToto = fToto.Range("a2:f4").Value
tLoto = fLolo.Range("a2:f4").Value
tVelo = fVelo.Range("a2:f4").Value

'--- On alimente les listsbox
Me.ListBox1.List() = tToto
Me.ListBox2.List() = tLoto
Me.ListBox3.List() = tVelo

End Sub
Adapte ton tableau avec une variable de dernière ligne s'il n'est pas fixe.
 

7339simon

XLDnaute Nouveau
Re : Initialiser plusieurs ListBox dans un USF

Merci pour ton aide,

Je ferais effectivement cette solution si je ne trouve pas d'idée pour garder mes combobox en filtre.

En effet comme dans ma ListBox1, j'ai mis 6 combobox au-dessus qui me permette de faire des filtre successifs. Cependant je ne vois pas comment faire pour continuer à utiliser ces filtres sur mes autres ListBox.

Encore merci.
 

Modeste geedee

XLDnaute Barbatruc
Re : Initialiser plusieurs ListBox dans un USF

Bonsour®
definir dynamiquement les noms de plages à utiliser :
ListeToto fait référence à :
=DECALER(toto!$A$1;0;0;NBVAL(toto!$A:$A);NBVAL(toto!$1:$1))
Listelolo fait référence à :
=DECALER(lolo!$A$1;0;0;NBVAL(lolo!$A:$A);NBVAL(lolo!$1:$1))
ListeVelo fait référence à :
=DECALER(velo!$A$1;0;0;NBVAL(velo!$A:$A);NBVAL(velo!$1:$1))


Code VB:
Private Sub UserForm_Initialize()
Me.ListBox1.RowSource =[ListeToto].Address
Me.ListBox2.RowSource =[ListeLolo].Address
Me.ListBox3.RowSource =[ListeVelo].Address
End Sub





Capture.JPG
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    36.3 KB · Affichages: 36

7339simon

XLDnaute Nouveau
Re : Initialiser plusieurs ListBox dans un USF

Benoit,

Oui ces filtres correspondent à mes catégories. Ce fichier servira à ajouter des nouvelles informations au fur à mesure de mon activité et à les consulter sous la forme d'une listbox avec si possible un filtrage au niveau des combobox pour m'y permettre d'y voir plus clair quand je consulterais les informations.

Merci Modeste pour ces informations je viens d'apprendre comment définir une plage de cellule en dehors de vba
 

thebenoit59

XLDnaute Accro
Re : Initialiser plusieurs ListBox dans un USF

Je te joins un exemple.
J'ai travaillé sur une Usf du même style, et je n'ai pas réussi à utiliser la fonction Tri de Boisgontier pour y parvenir :(
Alors j'ai opté pour une autre solution, le filtre avec classement en ordre croissant, enregistrement des valeurs visibles pour les insérer dans la listbox.
Si tu trouves une solution pour éviter le rangement automatique ça serait du bonheur, mais au pire, il suffira de retranscrire le tableau non filtrer (tToto) dans l'exemple, dans le champs avant la fermeture du fichier.
Je te donne l'exemple sur CB1, à toi d'adapter pour chaque et chacune des pages.
 

Pièces jointes

  • FCynTakqeMF_Initializer-userform-avec-plusieurs-listbox.xlsm
    30.3 KB · Affichages: 47

Statistiques des forums

Discussions
312 082
Messages
2 085 172
Membres
102 806
dernier inscrit
rle