Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Filtre dans une ListBox

25 réponses
Avatar
DAVID
Bonsoir

J'essai de faire apparaitre dans une ListBox le résultat d'un filtre.

Merci de m'aider une nouvelle fois !!

J'ai essayé avec ce bout de code mais bon ...erreur "impossible de définir
la propriété RowsSource"

Private Sub Filtrer_Click()
Dim a As Single
Dim b As Single
a = CDate(Text1)
b = CDate(Text2)

Dim Filtre As Integer
Dim Plage As Range
Liste1.RowSource = Sheets("Feuil1").Range("A65536").End(xlUp).Row
Liste1.ListIndex = -1
Set Plage = Sheets("Feuil1").Range("A1:J" & Liste1.RowSource)
Plage.AutoFilter Field:=1, Criteria1:=">=" & a, Operator:=xlAnd,
Criteria2:="<=" & b

End Sub

10 réponses

1 2 3
Avatar
Daniel.C
Bonjour.
Pour un filtre en colonne A :

Me.ListBox1.Clear
Set plage = [_filterdatabase].Offset(1)
Set plage = plage.Resize(plage.Rows.Count -
1).SpecialCells(xlCellTypeVisible)
For Each c In plage
Me.ListBox1.AddItem c.Value
Next

Adapte ce code à ton cas particulier. Si tu as des problèmes, dis-le.
Cordialement.
Daniel


Bonsoir

J'essai de faire apparaitre dans une ListBox le résultat d'un filtre.

Merci de m'aider une nouvelle fois !!

J'ai essayé avec ce bout de code mais bon ...erreur "impossible de définir la
propriété RowsSource"

Private Sub Filtrer_Click()
Dim a As Single
Dim b As Single
a = CDate(Text1)
b = CDate(Text2)

Dim Filtre As Integer
Dim Plage As Range
Liste1.RowSource = Sheets("Feuil1").Range("A65536").End(xlUp).Row
Liste1.ListIndex = -1
Set Plage = Sheets("Feuil1").Range("A1:J" & Liste1.RowSource)
Plage.AutoFilter Field:=1, Criteria1:=">=" & a, Operator:=xlAnd,
Criteria2:="<=" & b

End Sub


Avatar
DAVID
Bonjour Daniel

J'ai essayé avec ton code mais je n'y arrive pas à l'appliquer dans mon
projet.
Avec mon code, ca filtre bien, mais ca "reviens" pas vers la listeBox
Je vais avoir besoin de filtrer plus que ca (5 colonnes A C I J) donc ça vas
se compliquer !!

Merci de ton aide
David



Voici mon code :

Private Sub CmdFiltrer_Click()
Dim L As Integer
Dim Plage As String
FiltreDate
L = Sheets("HISTOCARBU").Range("A65536").End(xlUp).Row
Plage = Sheets("HISTOCARBU").Range("A2:J" & L).Address
LstResultat.RowSource = "HISTOCARBU!" & Plage
End Sub
Private Sub FiltreDate()
Dim L As Integer
Dim Plage As Range
Dim DD As Single
Dim DF As Single
DD = CDate(TxtDateDebut)
DF = CDate(TxtDateFin)
L = Sheets("HISTOCARBU").Range("A65536").End(xlUp).Row
Set Plage = Sheets("HISTOCARBU").Range("A1:J" & L)
Plage.AutoFilter Field:=1, Criteria1:=">=" & DD, Operator:=xlAnd,
Criteria2:="<=" & DF
End Sub
Avatar
Daniel.C
OK, j'étais à côté de la plaque. Essaie le code suivant (la llistbox
comporte deux colonnes) :

Private Sub CmdFiltrer_Click()
Dim L As Integer
Dim Plage As String
FiltreDate
L = Sheets("HISTOCARBU").Range("A65536").End(xlUp).Row
Plage = Sheets("HISTOCARBU").Range("A2:J" & L).Address
Var = "HISTOCARBU!" & Plage
Me.Lstresultat.Clear
Set Plage1 = [_filterdatabase].Offset(1)
Set Plage1 = Plage1.Resize(Plage1.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
With Me.Lstresultat
.Clear
For Each c In Plage1
.AddItem c.Value
.List(.ListCount - 1, 2) = c.Offset(, 1)
Next
End With
End Sub
Private Sub FiltreDate()
Dim L As Integer
Dim Plage As Range
Dim DD As Single
Dim DF As Single
DD = CDate("1/1/10")
DF = CDate("31/1/10")
'DD = CDate(TxtDateDebut)
'DF = CDate(TxtDateFin)
L = Sheets("HISTOCARBU").Range("A65536").End(xlUp).Row
Set Plage = Sheets("HISTOCARBU").Range("A1:J" & L)
Plage.AutoFilter Field:=1, Criteria1:=">=" & DD, Operator:=xlAnd,
Criteria2:="<=" & DF
End Sub

Daniel

Bonjour Daniel

J'ai essayé avec ton code mais je n'y arrive pas à l'appliquer dans mon
projet.
Avec mon code, ca filtre bien, mais ca "reviens" pas vers la listeBox
Je vais avoir besoin de filtrer plus que ca (5 colonnes A C I J) donc ça vas
se compliquer !!

Merci de ton aide
David



Voici mon code :

Private Sub CmdFiltrer_Click()
Dim L As Integer
Dim Plage As String
FiltreDate
L = Sheets("HISTOCARBU").Range("A65536").End(xlUp).Row
Plage = Sheets("HISTOCARBU").Range("A2:J" & L).Address
LstResultat.RowSource = "HISTOCARBU!" & Plage
End Sub
Private Sub FiltreDate()
Dim L As Integer
Dim Plage As Range
Dim DD As Single
Dim DF As Single
DD = CDate(TxtDateDebut)
DF = CDate(TxtDateFin)
L = Sheets("HISTOCARBU").Range("A65536").End(xlUp).Row
Set Plage = Sheets("HISTOCARBU").Range("A1:J" & L)
Plage.AutoFilter Field:=1, Criteria1:=">=" & DD, Operator:=xlAnd,
Criteria2:="<=" & DF
End Sub


Avatar
DAVID
Merci

"Erreur non répertoriée" à cette ligne
Me.LstResultat.Clear

si je l'enlève
"Objet requis" à cette ligne
Set Plage1 = [_filterdatabase].Offset(1)
Avatar
Daniel.C
Ca doit venir d'une différence de disposition des données. Regarde mon
classeur test :
http://www.cijoint.fr/cjlink.php?file=cj201001/cij5znlZbg.xls
Daniel

Merci

"Erreur non répertoriée" à cette ligne
Me.LstResultat.Clear

si je l'enlève
"Objet requis" à cette ligne
Set Plage1 = [_filterdatabase].Offset(1)


Avatar
michdenis
Bonjour,

"Erreur non répertoriée" à cette ligne
Me.LstResultat.Clear

****Si tu utilises une plage de cellule comme RowSource
de ton listbox, la commande génère ce type d'erreur.
Ton listbox est lié à la plage de cellules, tu ne peux pas
le vider sans vider d'abord ta plage de cellules !!!

si je l'enlève
"Objet requis" à cette ligne
Set Plage1 = [_filterdatabase].Offset(1)

***** La plage "_FilterDataBase" (Plage nommée par Excel lors d'un filtre)
Existe (est créée) seulement après la première exécution d'un filtre
Cette plage n'existe pas lors de la première exécution
Si cette plage nommée n'existe pas, évidemment une erreur est générée.
Avatar
michdenis
J'ajoute un détail à propos de "_FilterDataBase"

Si l'on utilise cette plage nommée par Excel comme
plage où le filtre suivant devrait être exécuté, il y a
un problème si de nouvelles entrées se sont ajoutées
entre temps...La plage nommée "_FilterDataBase" est
redimensionnée seulement après l'exécution et conserve
cette dimension juste qu'à la nouvelle exécution. En
conséquence, le filtre ne tiendra pas compte des nouvelles
entrées...

En fait, cette plage nommée est utile après l'exécution d'un
filtre, mais ne peut être utilisée pour déterminer la plage
sur laquelle un filtre doit se produire à moins d'être sûr que
de nouvelles données n'ont pas été ajoutées.





"michdenis" a écrit dans le message de groupe de discussion :

Bonjour,

"Erreur non répertoriée" à cette ligne
Me.LstResultat.Clear

****Si tu utilises une plage de cellule comme RowSource
de ton listbox, la commande génère ce type d'erreur.
Ton listbox est lié à la plage de cellules, tu ne peux pas
le vider sans vider d'abord ta plage de cellules !!!

si je l'enlève
"Objet requis" à cette ligne
Set Plage1 = [_filterdatabase].Offset(1)

***** La plage "_FilterDataBase" (Plage nommée par Excel lors d'un filtre)
Existe (est créée) seulement après la première exécution d'un filtre
Cette plage n'existe pas lors de la première exécution
Si cette plage nommée n'existe pas, évidemment une erreur est générée.
Avatar
DAVID
Re à vous 2

Daniel, meme disposition. Cela fonctionne bien avec ton modèle alors je fais
un copier/coller vers mon projet et la rien ne fait, toujours la meme
erreur.

Michdenis, je comprend très bien que ca doit être dur à lire surtout avec le
temps que tu m'accorde ! mais je rame, malheureusement, completement dans
tes explications. J'ai passé l'aprés midi à essayer de relire toutes tes
explications, de faire à la lettre ce que tu me conseil ( idem sur le fil
"Erreur double Clic"). Rien y fait, je désespère à finir mon projet ! mais
bon, j'ai pas l'habitude de laisser tomber et j'aimerais comprendre.
J'attend le déclic qui fait !!!!
A mon avis, tout est dans la façon de charger le listbox. Comme tu m'as
expliqué, il faut faire autrement mais pas moyen de le faire. Allez je vais
replancher sur ce problème

Merci à vous deux
Avatar
Daniel.C
Tu pourrais peut-être mettre un classeur limité au problème en cours
sur www.cjoint.fr ?
Daniel


Re à vous 2

Daniel, meme disposition. Cela fonctionne bien avec ton modèle alors je fais
un copier/coller vers mon projet et la rien ne fait, toujours la meme erreur.

Michdenis, je comprend très bien que ca doit être dur à lire surtout avec le
temps que tu m'accorde ! mais je rame, malheureusement, completement dans tes
explications. J'ai passé l'aprés midi à essayer de relire toutes tes
explications, de faire à la lettre ce que tu me conseil ( idem sur le fil
"Erreur double Clic"). Rien y fait, je désespère à finir mon projet ! mais
bon, j'ai pas l'habitude de laisser tomber et j'aimerais comprendre. J'attend
le déclic qui fait !!!!
A mon avis, tout est dans la façon de charger le listbox. Comme tu m'as
expliqué, il faut faire autrement mais pas moyen de le faire. Allez je vais
replancher sur ce problème

Merci à vous deux


Avatar
DAVID
Voici. Merci de votre aide

http://www.cijoint.fr/cjlink.php?file=cj201001/cijkFLPV0f.xls
1 2 3