Alimenter Listbox depuis plusieurs feuilles
LeDbutantVBAFou
-
danielc0 Messages postés 1858 Date d'inscription Statut Membre Dernière intervention -
danielc0 Messages postés 1858 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Mon nouveau problème!
J'ai le même tableau en feuille 2,3,4,5 et 6. (6 n'est pas la dernière feuille).
Ces feuilles correspond et porte le nom des années, 2019, 2020, 2021, 2022, 2023.
J'ai créer un Userform pour faire un "moteur de recherche" assez basic sur ces tableaux.
J'ai trouvé un code que j'ai adapté mais uniquement sur une feuille.
J'ai besoin que toutes les feuilles ci-dessus alimentes la listbox.
Le code que j'ai trouvé pour le moment:
D'avance merci pour votre aide.
Mon nouveau problème!
J'ai le même tableau en feuille 2,3,4,5 et 6. (6 n'est pas la dernière feuille).
Ces feuilles correspond et porte le nom des années, 2019, 2020, 2021, 2022, 2023.
J'ai créer un Userform pour faire un "moteur de recherche" assez basic sur ces tableaux.
J'ai trouvé un code que j'ai adapté mais uniquement sur une feuille.
J'ai besoin que toutes les feuilles ci-dessus alimentes la listbox.
Le code que j'ai trouvé pour le moment:
Dim f, choix(), Rng, Ncol
Private Sub UserForm_Initialize()
Set f = Sheets("2019")
Set Rng = f.Range("A11:G" & f.[a65000].End(xlUp).Row)
Ncol = Rng.Columns.Count
'---- entêtes ListBox
Me.ListBox1.ColumnCount = Ncol
Me.ListBox1.ColumnWidths = 35 & ";" & 80 & ";" & 110 & ";" & 60 & ";" & 60 & ";" & 150 & ";" & 60
'--
TblTmp = Rng.Value
For I = LBound(TblTmp) To UBound(TblTmp)
ReDim Preserve choix(1 To I)
For k = LBound(TblTmp) To UBound(TblTmp, 2)
choix(I) = choix(I) & TblTmp(I, k) & " * "
Next k
Next I
Me.ListBox1.List = Rng.Value
End Sub
Private Sub TextBox1_Change()
If Me.TextBox1 <> "" Then
mots = Split(Trim(Me.TextBox1), " ")
Tbl = choix
For I = LBound(mots) To UBound(mots)
Tbl = Filter(Tbl, mots(I), True, vbTextCompare)
Next I
If UBound(Tbl) > -1 Then
Dim b(): ReDim b(1 To UBound(Tbl) + 1, 1 To Ncol)
For I = LBound(Tbl) To UBound(Tbl)
a = Split(Tbl(I), "*")
For k = 1 To Ncol: b(I + 1, k) = a(k - 1): Next k
Next I
Me.ListBox1.List = b
' Me.Label1.Caption = UBound(Tbl) + 1
End If
Else
UserForm_Initialize
End If
End Sub
D'avance merci pour votre aide.
A voir également:
- Alimenter Listbox depuis plusieurs feuilles
- Comment faire un livret avec des feuilles a4 - Guide
- Regrouper plusieurs feuilles excel en une seule - Guide
- Bruler des feuilles de laurier - Guide
- Excel ne parvient pas à insérer les feuilles dans le classeur de destination ✓ - Forum Excel
- Pagination excel plusieurs feuilles ✓ - Forum Excel
1 réponse
Bonjour,
Essaie :
Cordialement.
Daniel
Essaie :
Dim f, choix(), Rng, Ncol Private Sub UserForm_Initialize() Dim Ctr As Long, X As Integer, Y As Integer 'car = Application.Transpose(Tbl) For i = 2 To 6 Set f = Sheets(i) Set Rng = f.Range("A11:G" & f.[a65000].End(xlUp).Row) For X = 1 To Rng.Rows.Count Me.ListBox1.AddItem f.Cells(Rng.Row - 1 + X, 1) For Y = 2 To 7 With Me.ListBox1 .List(.ListCount - 1, Y - 1) = f.Cells(Rng.Row - 1 + X, Y) End With Next Y Next X Next i Ncol = Rng.Columns.Count '---- entêtes ListBox Me.ListBox1.ColumnCount = Ncol Me.ListBox1.ColumnWidths = 35 & ";" & 80 & ";" & 110 & ";" & 60 & ";" & 60 & ";" & 150 & ";" & 60 '-- TblTmp = Rng.Value For i = LBound(TblTmp) To UBound(TblTmp) ReDim Preserve choix(1 To i) For k = LBound(TblTmp) To UBound(TblTmp, 2) choix(i) = choix(i) & TblTmp(i, k) & " * " Next k Next i End Sub Private Sub TextBox1_Change() If Me.TextBox1 <> "" Then mots = Split(Trim(Me.TextBox1), " ") Tbl = choix For i = LBound(mots) To UBound(mots) Tbl = Filter(Tbl, mots(i), True, vbTextCompare) Next i If UBound(Tbl) > -1 Then Dim b(): ReDim b(1 To UBound(Tbl) + 1, 1 To Ncol) For i = LBound(Tbl) To UBound(Tbl) a = Split(Tbl(i), "*") For k = 1 To Ncol: b(i + 1, k) = a(k - 1): Next k Next i Me.ListBox1.List = b ' Me.Label1.Caption = UBound(Tbl) + 1 End If Else UserForm_Initialize End If End Sub
Cordialement.
Daniel
Merci pour l'intérêt!!
Ton code alimente bien la liste avec toutes les feuilles TOP!
Mais par contre la fonction recherche ne fonctionne plus??
Une idée ?
Cordialement.
Daniel