Bonjour,
J'ai récupérer un fichier de boisgontierjacques qui permet de filtrer des colonnes via des listbox et qui renvoie le résultat dans la listbox1
le fichier étant super bien, j'ai adapté le code en fonction de mes besoins .
Cependant, certaines instructions dans le code ne conviennent pas à mon projet , c'est pourquoi je reviens vers vous pour demander de l'aide (car novice en VBA)
1) Je souhaiterai savoir s'il est possible de modifier la largeur des colonnes de la ListBox 1 car il me faut afficher 14 colonnes et je souhaite les afficher sans avoir à utiliser le scrolBar
2) Le code envoie toutes les colonnes dans la ListBox1 et dans mon projet il me faut afficher que certaines colonnes (B, C, G, H, ...............AG)
(peut-on le faire sans utiliser une seconde ListBox, c'est à dire récupérer certaines colonnes de la listBox1 et les copier vers une ListBoxX ? )
3) N'ayant pas tout compris sur le code, peut-on me "décoder" les lignes et me les expliquer de façon simple
Je vous joint le fichier de Mr boisgontierjacques qui m'a servit de modèle.
Merci pour votre aide
V:OICI MON CODE :
J'ai récupérer un fichier de boisgontierjacques qui permet de filtrer des colonnes via des listbox et qui renvoie le résultat dans la listbox1
le fichier étant super bien, j'ai adapté le code en fonction de mes besoins .
Cependant, certaines instructions dans le code ne conviennent pas à mon projet , c'est pourquoi je reviens vers vous pour demander de l'aide (car novice en VBA)
1) Je souhaiterai savoir s'il est possible de modifier la largeur des colonnes de la ListBox 1 car il me faut afficher 14 colonnes et je souhaite les afficher sans avoir à utiliser le scrolBar
2) Le code envoie toutes les colonnes dans la ListBox1 et dans mon projet il me faut afficher que certaines colonnes (B, C, G, H, ...............AG)
(peut-on le faire sans utiliser une seconde ListBox, c'est à dire récupérer certaines colonnes de la listBox1 et les copier vers une ListBoxX ? )
3) N'ayant pas tout compris sur le code, peut-on me "décoder" les lignes et me les expliquer de façon simple
Je vous joint le fichier de Mr boisgontierjacques qui m'a servit de modèle.
Merci pour votre aide
V:OICI MON CODE :
VB:
Dim f, NbCol, NomTableau, TblBD()
Private Sub UserForm_Initialize()
Inséré les valeurs des différentes colonnes dans les ListBox
NomTableau = "Tableau7"
TblBD = Range(NomTableau).Value
NbCol = UBound(TblBD, 2)
Set D = CreateObject("scripting.dictionary")
For i = LBound(TblBD) To UBound(TblBD)
D(TblBD(i, 7)) = ""
Next i
Me.ChoixListBox1.List = D.keys
Set D = CreateObject("scripting.dictionary")
For i = LBound(TblBD) To UBound(TblBD)
D(TblBD(i, 8)) = ""
Next i
Me.ChoixListBox2.List = D.keys
Set D = CreateObject("scripting.dictionary")
D.comparemode = vbTextCompare
For i = LBound(TblBD) To UBound(TblBD)
D(TblBD(i, 12)) = ""
Next i
Me.ChoixListBox3.List = D.keys
Set D = CreateObject("scripting.dictionary")
D.comparemode = vbTextCompare
For i = LBound(TblBD) To UBound(TblBD)
D(TblBD(i, 13)) = ""
Next i
Me.ChoixListBox4.List = D.keys
Set D = CreateObject("scripting.dictionary")
D.comparemode = vbTextCompare
For i = LBound(TblBD) To UBound(TblBD)
D(TblBD(i, 17)) = ""
Next i
Me.ChoixListBox5.List = D.keys
Set D = CreateObject("scripting.dictionary")
D.comparemode = vbTextCompare
For i = LBound(TblBD) To UBound(TblBD)
D(TblBD(i, 18)) = ""
Next i
Me.ChoixListBox6.List = D.keys
Set D = CreateObject("scripting.dictionary")
D.comparemode = vbTextCompare
For i = LBound(TblBD) To UBound(TblBD)
D(TblBD(i, 22)) = ""
Next i
Me.ChoixListBox7.List = D.keys
Set D = CreateObject("scripting.dictionary")
D.comparemode = vbTextCompare
For i = LBound(TblBD) To UBound(TblBD)
D(TblBD(i, 23)) = ""
Next i
Me.ChoixListBox8.List = D.keys
Set D = CreateObject("scripting.dictionary")
D.comparemode = vbTextCompare
For i = LBound(TblBD) To UBound(TblBD)
D(TblBD(i, 26)) = ""
Next i
Me.ChoixListBox9.List = D.keys
Set D = CreateObject("scripting.dictionary")
D.comparemode = vbTextCompare
For i = LBound(TblBD) To UBound(TblBD)
D(TblBD(i, 29)) = ""
Next i
Me.ChoixListBox10.List = D.keys
Set D = CreateObject("scripting.dictionary")
D.comparemode = vbTextCompare
For i = LBound(TblBD) To UBound(TblBD)
D(TblBD(i, 33)) = ""
Next i
Me.ChoixListBox11.List = D.keys
Me.ListBox1.ColumnCount = NbCol
Me.ListBox1.List = TblBD
End Sub
Private Sub ChoixListBox1_change()
Affiche
End Sub
Private Sub ChoixListBox2_change()
Affiche
End Sub
Private Sub ChoixListBox3_change()
Affiche
End Sub
Private Sub ChoixListBox4_change()
Affiche
End Sub
Private Sub ChoixListBox5_change()
Affiche
End Sub
Private Sub ChoixListBox6_change()
Affiche
End Sub
Private Sub ChoixListBox7_change()
Affiche
End Sub
Private Sub ChoixListBox8_change()
Affiche
End Sub
Private Sub ChoixListBox9_change()
Affiche
End Sub
Private Sub ChoixListBox10_change()
Affiche
End Sub
Private Sub ChoixListBox11_change()
Affiche
End Sub
Sub Affiche() 'FONCTION POUR FILTRER PUIS AFFICHER LES DONNEES DANS LA LISTBOX 1
Set dchoisis1 = CreateObject("Scripting.Dictionary")
For i = 0 To Me.ChoixListBox1.ListCount - 1
If Me.ChoixListBox1.Selected(i) Then dchoisis1(Me.ChoixListBox1.List(i, 0)) = ""
Next i
Set dchoisis2 = CreateObject("Scripting.Dictionary")
For i = 0 To Me.ChoixListBox2.ListCount - 1
If Me.ChoixListBox2.Selected(i) Then dchoisis2(Me.ChoixListBox2.List(i, 0)) = ""
Next i
Set dchoisis3 = CreateObject("Scripting.Dictionary")
For i = 0 To Me.ChoixListBox3.ListCount - 1
If Me.ChoixListBox3.Selected(i) Then dchoisis3(Me.ChoixListBox3.List(i, 0)) = ""
Next i
Set dchoisis4 = CreateObject("Scripting.Dictionary")
For i = 0 To Me.ChoixListBox4.ListCount - 1
If Me.ChoixListBox4.Selected(i) Then dchoisis4(Me.ChoixListBox4.List(i, 0)) = ""
Next i
Set dchoisis5 = CreateObject("Scripting.Dictionary")
For i = 0 To Me.ChoixListBox5.ListCount - 1
If Me.ChoixListBox5.Selected(i) Then dchoisis5(Me.ChoixListBox5.List(i, 0)) = ""
Next i
Set dchoisis6 = CreateObject("Scripting.Dictionary")
For i = 0 To Me.ChoixListBox6.ListCount - 1
If Me.ChoixListBox6.Selected(i) Then dchoisis6(Me.ChoixListBox6.List(i, 0)) = ""
Next i
Set dchoisis7 = CreateObject("Scripting.Dictionary")
For i = 0 To Me.ChoixListBox7.ListCount - 1
If Me.ChoixListBox7.Selected(i) Then dchoisis7(Me.ChoixListBox7.List(i, 0)) = ""
Next i
Set dchoisis8 = CreateObject("Scripting.Dictionary")
For i = 0 To Me.ChoixListBox8.ListCount - 1
If Me.ChoixListBox8.Selected(i) Then dchoisis8(Me.ChoixListBox8.List(i, 0)) = ""
Next i
Set dchoisis9 = CreateObject("Scripting.Dictionary")
For i = 0 To Me.ChoixListBox9.ListCount - 1
If Me.ChoixListBox9.Selected(i) Then dchoisis9(Me.ChoixListBox9.List(i, 0)) = ""
Next i
Set dchoisis10 = CreateObject("Scripting.Dictionary")
For i = 0 To Me.ChoixListBox10.ListCount - 1
If Me.ChoixListBox10.Selected(i) Then dchoisis10(Me.ChoixListBox10.List(i, 0)) = ""
Next i
Set dchoisis11 = CreateObject("Scripting.Dictionary")
For i = 0 To Me.ChoixListBox11.ListCount - 1
If Me.ChoixListBox11.Selected(i) Then dchoisis11(Me.ChoixListBox11.List(i, 0)) = ""
Next i
n = 0: Dim Liste()
For i = LBound(TblBD) To UBound(TblBD)
tmp = TblBD(i, 7)
tmp2 = TblBD(i, 8)
tmp3 = TblBD(i, 12)
tmp4 = TblBD(i, 13)
tmp5 = TblBD(i, 17)
tmp6 = TblBD(i, 18)
tmp7 = TblBD(i, 22)
tmp8 = TblBD(i, 23)
tmp9 = TblBD(i, 26)
tmp10 = TblBD(i, 29)
tmp11 = TblBD(i, 33)
If (dchoisis1.exists(tmp) Or dchoisis1.Count = 0) _
And (dchoisis2.exists(tmp2) Or dchoisis2.Count = 0) _
And (dchoisis3.exists(tmp3) Or dchoisis3.Count = 0) _
And (dchoisis4.exists(tmp4) Or dchoisis4.Count = 0) _
And (dchoisis5.exists(tmp5) Or dchoisis5.Count = 0) _
And (dchoisis6.exists(tmp6) Or dchoisis6.Count = 0) _
And (dchoisis7.exists(tmp7) Or dchoisis7.Count = 0) _
And (dchoisis8.exists(tmp8) Or dchoisis8.Count = 0) _
And (dchoisis9.exists(tmp9) Or dchoisis9.Count = 0) _
And (dchoisis10.exists(tmp10) Or dchoisis10.Count = 0) _
And (dchoisis11.exists(tmp11) Or dchoisis11.Count = 0) Then
n = n + 1
ReDim Preserve Liste(1 To NbCol, 1 To n)
For k = 1 To NbCol
Liste(k, n) = TblBD(i, k)
Next k
End If
Next i
If n > 0 Then Me.ListBox1.Column = Liste Else Me.ListBox1.Clear
End Sub