zeltron
XLDnaute Occasionnel
Bonjour a tout le forum,
Tout d’abord, je souhaite préciser que ce nouveau fil est à défaut de relancer le fil d’il y a plusieurs mois que j’avais lancé et dont la question est du même sujet. Cependant, je n’ai pas réussi a retrouvé cet ancien fil dans lequel (de mémoire) BEBERE (que je remercie encore) m’avait apporté une solution. D’où ce nouveau fil, veuillez m’excusez pour cette redondance.
Voici mon :
J’ai un tableau ( sur la feuille « Essai »), ce tableau a 4 colonnes :
-Colonne A : noms
-Colonne B : valeurs
-Colonne C (contenant des formules matricielles) : indique par le chiffre « 1 » chaque lignes de la colonne B correspondant au nombre de + grandes valeurs recherchées.
-Colonne D (contenant des formules matricielles) : indique par le chiffre « 1 » chaque lignes de la colonne B correspondant au nombre de + petites valeurs recherchées.
Ce nombre de + grandes valeurs (en « F10 ») ou de + petites valeurs (en « F9 ») recherchées est saisi sur la feuille « Accueil ».
Ainsi si je saisi « 2 » en F10 sur la feuille Accueil, sur la feuille « essai » en colonne C s’affichera par un « 1 » toutes les lignes correspondant aux 2 + grandes de la colonne B. Si je saisi 1, s’affichera en colonne C toutes les lignes correspondants a la + grande valeur ect….
Cela marche impec grâce aux formules matricielles que Monique m’a fait découvrir (merci encore Monique)
Dès lors via un USF avec 2 optionbuttons :
-Optionbutton1 : « Afficher les noms ayant la + grande valeur »
-Optionbutton2 : « Afficher les noms ayant la + petite valeur »
Je souhaiterait qu’en fonction de l’optionbutton coché dans une listbox du USF s’affiche que les noms recherchés , exemple :
Si l’optionbutton1 est coché ( + grandes valeurs), la listbox affiche que les lignes qui ont « 1 » en colonne C
Si l’optionbutton2 est coché ( + petites valeurs), la listbox affiche que les lignes qui ont « 1 » en colonne D
Donc ma question est : comment faire un filtre dans une lisbox en fonction d’un critère d’une colonne, colonne qui peut variée ?
La solution m’avait été apporté par BEBERE dans un ancien file ( évoqué ci-dessus), cela concernait une listbox sur une feuille excel et non un usf.
J’ai essayé d’adapté le code, mais il met surligne en jaune la ligne suivante :
If Plage(L, C) = 1 Then
Je n voit pas pourquoi cela ne fonctionne pas.
Je vous mets la totalité du code de mon USF :
Private Sub OptionButton1_Click()
If OptionButton1 = True Then C = 3
Sheets("Accueil").Range("F10") = 1
Essai
End Sub
Private Sub OptionButton2_Click()
If OptionButton2 = True Then C = 4
Sheets("Accueil").Range("F9") = 1
Essai
End Sub
Private Sub Essai()
Dim L As Integer
Dim Plage As Variant
With Sheets("Essai")
L = .Range("A65536").End(xlUp).Row
Plage = .Range("A2" & L)
End With
ListBox1.Clear
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "35;50;30;30"
For L = 1 To UBound(Plage, 1)
If Plage(L, C) = 1 Then
With ListBox1
.AddItem Plage(L, 1)
.List(.ListCount - 1, 1) = Plage(L, 2)
.List(.ListCount - 1, 2) = Plage(L, 3)
End With
End If
Next L
End Sub
J’espère que vous pourrez m’aider.
Je vous mets également en pièce jointe le fichier.
Merci d’avance pour votre aide
Nb : et excusez moi encore pour cette redondance, cela n’est pas dans mon habitude, mais je n’ai pas réussi à retrouver l’ancien file
Cordialement
Zeltron
Tout d’abord, je souhaite préciser que ce nouveau fil est à défaut de relancer le fil d’il y a plusieurs mois que j’avais lancé et dont la question est du même sujet. Cependant, je n’ai pas réussi a retrouvé cet ancien fil dans lequel (de mémoire) BEBERE (que je remercie encore) m’avait apporté une solution. D’où ce nouveau fil, veuillez m’excusez pour cette redondance.
Voici mon :
J’ai un tableau ( sur la feuille « Essai »), ce tableau a 4 colonnes :
-Colonne A : noms
-Colonne B : valeurs
-Colonne C (contenant des formules matricielles) : indique par le chiffre « 1 » chaque lignes de la colonne B correspondant au nombre de + grandes valeurs recherchées.
-Colonne D (contenant des formules matricielles) : indique par le chiffre « 1 » chaque lignes de la colonne B correspondant au nombre de + petites valeurs recherchées.
Ce nombre de + grandes valeurs (en « F10 ») ou de + petites valeurs (en « F9 ») recherchées est saisi sur la feuille « Accueil ».
Ainsi si je saisi « 2 » en F10 sur la feuille Accueil, sur la feuille « essai » en colonne C s’affichera par un « 1 » toutes les lignes correspondant aux 2 + grandes de la colonne B. Si je saisi 1, s’affichera en colonne C toutes les lignes correspondants a la + grande valeur ect….
Cela marche impec grâce aux formules matricielles que Monique m’a fait découvrir (merci encore Monique)
Dès lors via un USF avec 2 optionbuttons :
-Optionbutton1 : « Afficher les noms ayant la + grande valeur »
-Optionbutton2 : « Afficher les noms ayant la + petite valeur »
Je souhaiterait qu’en fonction de l’optionbutton coché dans une listbox du USF s’affiche que les noms recherchés , exemple :
Si l’optionbutton1 est coché ( + grandes valeurs), la listbox affiche que les lignes qui ont « 1 » en colonne C
Si l’optionbutton2 est coché ( + petites valeurs), la listbox affiche que les lignes qui ont « 1 » en colonne D
Donc ma question est : comment faire un filtre dans une lisbox en fonction d’un critère d’une colonne, colonne qui peut variée ?
La solution m’avait été apporté par BEBERE dans un ancien file ( évoqué ci-dessus), cela concernait une listbox sur une feuille excel et non un usf.
J’ai essayé d’adapté le code, mais il met surligne en jaune la ligne suivante :
If Plage(L, C) = 1 Then
Je n voit pas pourquoi cela ne fonctionne pas.
Je vous mets la totalité du code de mon USF :
Private Sub OptionButton1_Click()
If OptionButton1 = True Then C = 3
Sheets("Accueil").Range("F10") = 1
Essai
End Sub
Private Sub OptionButton2_Click()
If OptionButton2 = True Then C = 4
Sheets("Accueil").Range("F9") = 1
Essai
End Sub
Private Sub Essai()
Dim L As Integer
Dim Plage As Variant
With Sheets("Essai")
L = .Range("A65536").End(xlUp).Row
Plage = .Range("A2" & L)
End With
ListBox1.Clear
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "35;50;30;30"
For L = 1 To UBound(Plage, 1)
If Plage(L, C) = 1 Then
With ListBox1
.AddItem Plage(L, 1)
.List(.ListCount - 1, 1) = Plage(L, 2)
.List(.ListCount - 1, 2) = Plage(L, 3)
End With
End If
Next L
End Sub
J’espère que vous pourrez m’aider.
Je vous mets également en pièce jointe le fichier.
Merci d’avance pour votre aide
Nb : et excusez moi encore pour cette redondance, cela n’est pas dans mon habitude, mais je n’ai pas réussi à retrouver l’ancien file
Cordialement
Zeltron