Je cherche une fa=E7on de pouvoir filtrer des informations =E0=20
partir d'un ListBox et de faire appara=EEtre le r=E9sultat=20
dans ce m=EAme ListBox.
Ex:
Mon ListBox ( qui est, en passant, sur un UserForm),
a Les donn=E9es suivantes:
Colonne A ; Colonne B ; Colonne C
1 A 1A
2 B 2B
3 c(minus) 3c
Je cherche le moyen =E0 partir de plusieurs TextBox =E0=20
filtrer certaines informations.
TextBox1: *a* -->Cherche tous les mots qui ont "a" ou "A"
TextBox2: <2 -->Cherche tous les nombres plus petit que 2
Etc.
Il va sans dire que j'aimerais obtenir toutes les formes=20
de crit=E8res possible: plus grand ou =E9gale =E0, plus petit=20
que, etc..
Le r=E9sultat attendu dans cet exemple serait:
Colonne A ; Colonne B ; Colonne C
1 A 1A
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Hervé
Salut Starwing, Une solution peut être. Si j'ai bien compris, tu utilise 1 ListBox à 3 colonnes, 3 TextBoxs, et un bouton pour lancer le filtrage. Le code fonctionne de la manière suivante : Après avoir rentré les critères dans les 3 TextBoxs (TextBox1 pour la colonne 1, TextBox2 pour la colonne 2 et TextBox3 pour la colonne 3) le filtrage se fait sur la feuille Feuil1 de A1 à Cx(adapte si tes données sont ailleurs), le résultat est copié sur la feuille Feuil2 en A1:Cx puis la propriété "RowSource" de la ListBox est définie sur cette plage. Petite précision; pour les colonnes numériques, quand on veux retourner tous les enregistrements, le signe "*" ne fonctionne pas, il faut utiliser le signe "<>". A mettre dans le module de ta Form :
Private Sub CommandButton1_Click() Filtre Remplir End Sub
Sub Filtre() Dim Fe1 As Worksheet Dim Fe2 As Worksheet Dim Plage2 As Range
Set Fe1 = Worksheets("Feuil1") Set Fe2 = Worksheets("Feuil2")
Fe2.Cells.Clear
With Fe1 With .Range(.[A1], _ .[C65536].End(xlUp)) .AutoFilter 1, TextBox1.Text .AutoFilter 2, TextBox2.Text .AutoFilter 3, TextBox3.Text .Copy Fe2.[A1] .AutoFilter End With End With
Set Fe1 = Nothing Set Fe2 = Nothing End Sub
Sub Remplir() Dim Fe As Worksheet Dim Plage As Range
Set Fe = Worksheets("Feuil2")
With Fe Set Plage = .Range(.[A1], _ .[C65536].End(xlUp)) End With
With ListBox1 .RowSource = "Feuil2!" & Plage.Address(0, 0) End With
Set Plage = Nothing Set Fe = Nothing End Sub
Private Sub UserForm_Initialize() Dim Plage As Range
With Worksheets("Feuil1") Set Plage = .Range(.[A1], _ .[C65536].End(xlUp)) End With
With ListBox1 .RowSource = "Feuil1!" & Plage.Address(0, 0) End With
Set Plage = Nothing End Sub
Hervé.
"Starwing" a écrit dans le message news: 12ff01c47bb9$43f5b980$ Bonjour à tous...
... à tous les cracks!
Je cherche une façon de pouvoir filtrer des informations à partir d'un ListBox et de faire apparaître le résultat dans ce même ListBox. Ex: Mon ListBox ( qui est, en passant, sur un UserForm), a Les données suivantes: Colonne A ; Colonne B ; Colonne C 1 A 1A 2 B 2B 3 c(minus) 3c
Je cherche le moyen à partir de plusieurs TextBox à filtrer certaines informations. TextBox1: *a* -->Cherche tous les mots qui ont "a" ou "A" TextBox2: <2 -->Cherche tous les nombres plus petit que 2 Etc. Il va sans dire que j'aimerais obtenir toutes les formes de critères possible: plus grand ou égale à, plus petit que, etc.. Le résultat attendu dans cet exemple serait: Colonne A ; Colonne B ; Colonne C 1 A 1A
Merci beaucoup,
Starwing
Salut Starwing,
Une solution peut être.
Si j'ai bien compris, tu utilise 1 ListBox à 3 colonnes, 3 TextBoxs, et un
bouton pour lancer le filtrage. Le code fonctionne de la manière suivante :
Après avoir rentré les critères dans les 3 TextBoxs (TextBox1 pour la
colonne 1, TextBox2 pour la colonne 2 et TextBox3 pour la colonne 3) le
filtrage se fait sur la feuille Feuil1 de A1 à Cx(adapte si tes données sont
ailleurs), le résultat est copié sur la feuille Feuil2 en A1:Cx puis la
propriété "RowSource" de la ListBox est définie sur cette plage. Petite
précision; pour les colonnes numériques, quand on veux retourner tous les
enregistrements, le signe "*" ne fonctionne pas, il faut utiliser le signe
"<>".
A mettre dans le module de ta Form :
Private Sub CommandButton1_Click()
Filtre
Remplir
End Sub
Sub Filtre()
Dim Fe1 As Worksheet
Dim Fe2 As Worksheet
Dim Plage2 As Range
Set Fe1 = Worksheets("Feuil1")
Set Fe2 = Worksheets("Feuil2")
Fe2.Cells.Clear
With Fe1
With .Range(.[A1], _
.[C65536].End(xlUp))
.AutoFilter 1, TextBox1.Text
.AutoFilter 2, TextBox2.Text
.AutoFilter 3, TextBox3.Text
.Copy Fe2.[A1]
.AutoFilter
End With
End With
Set Fe1 = Nothing
Set Fe2 = Nothing
End Sub
Sub Remplir()
Dim Fe As Worksheet
Dim Plage As Range
Set Fe = Worksheets("Feuil2")
With Fe
Set Plage = .Range(.[A1], _
.[C65536].End(xlUp))
End With
With ListBox1
.RowSource = "Feuil2!" & Plage.Address(0, 0)
End With
Set Plage = Nothing
Set Fe = Nothing
End Sub
Private Sub UserForm_Initialize()
Dim Plage As Range
With Worksheets("Feuil1")
Set Plage = .Range(.[A1], _
.[C65536].End(xlUp))
End With
With ListBox1
.RowSource = "Feuil1!" & Plage.Address(0, 0)
End With
Set Plage = Nothing
End Sub
Hervé.
"Starwing" <NoMail@NoMail.Niet> a écrit dans le message news:
12ff01c47bb9$43f5b980$a301280a@phx.gbl...
Bonjour à tous...
... à tous les cracks!
Je cherche une façon de pouvoir filtrer des informations à
partir d'un ListBox et de faire apparaître le résultat
dans ce même ListBox.
Ex:
Mon ListBox ( qui est, en passant, sur un UserForm),
a Les données suivantes:
Colonne A ; Colonne B ; Colonne C
1 A 1A
2 B 2B
3 c(minus) 3c
Je cherche le moyen à partir de plusieurs TextBox à
filtrer certaines informations.
TextBox1: *a* -->Cherche tous les mots qui ont "a" ou "A"
TextBox2: <2 -->Cherche tous les nombres plus petit que 2
Etc.
Il va sans dire que j'aimerais obtenir toutes les formes
de critères possible: plus grand ou égale à, plus petit
que, etc..
Le résultat attendu dans cet exemple serait:
Colonne A ; Colonne B ; Colonne C
1 A 1A
Salut Starwing, Une solution peut être. Si j'ai bien compris, tu utilise 1 ListBox à 3 colonnes, 3 TextBoxs, et un bouton pour lancer le filtrage. Le code fonctionne de la manière suivante : Après avoir rentré les critères dans les 3 TextBoxs (TextBox1 pour la colonne 1, TextBox2 pour la colonne 2 et TextBox3 pour la colonne 3) le filtrage se fait sur la feuille Feuil1 de A1 à Cx(adapte si tes données sont ailleurs), le résultat est copié sur la feuille Feuil2 en A1:Cx puis la propriété "RowSource" de la ListBox est définie sur cette plage. Petite précision; pour les colonnes numériques, quand on veux retourner tous les enregistrements, le signe "*" ne fonctionne pas, il faut utiliser le signe "<>". A mettre dans le module de ta Form :
Private Sub CommandButton1_Click() Filtre Remplir End Sub
Sub Filtre() Dim Fe1 As Worksheet Dim Fe2 As Worksheet Dim Plage2 As Range
Set Fe1 = Worksheets("Feuil1") Set Fe2 = Worksheets("Feuil2")
Fe2.Cells.Clear
With Fe1 With .Range(.[A1], _ .[C65536].End(xlUp)) .AutoFilter 1, TextBox1.Text .AutoFilter 2, TextBox2.Text .AutoFilter 3, TextBox3.Text .Copy Fe2.[A1] .AutoFilter End With End With
Set Fe1 = Nothing Set Fe2 = Nothing End Sub
Sub Remplir() Dim Fe As Worksheet Dim Plage As Range
Set Fe = Worksheets("Feuil2")
With Fe Set Plage = .Range(.[A1], _ .[C65536].End(xlUp)) End With
With ListBox1 .RowSource = "Feuil2!" & Plage.Address(0, 0) End With
Set Plage = Nothing Set Fe = Nothing End Sub
Private Sub UserForm_Initialize() Dim Plage As Range
With Worksheets("Feuil1") Set Plage = .Range(.[A1], _ .[C65536].End(xlUp)) End With
With ListBox1 .RowSource = "Feuil1!" & Plage.Address(0, 0) End With
Set Plage = Nothing End Sub
Hervé.
"Starwing" a écrit dans le message news: 12ff01c47bb9$43f5b980$ Bonjour à tous...
... à tous les cracks!
Je cherche une façon de pouvoir filtrer des informations à partir d'un ListBox et de faire apparaître le résultat dans ce même ListBox. Ex: Mon ListBox ( qui est, en passant, sur un UserForm), a Les données suivantes: Colonne A ; Colonne B ; Colonne C 1 A 1A 2 B 2B 3 c(minus) 3c
Je cherche le moyen à partir de plusieurs TextBox à filtrer certaines informations. TextBox1: *a* -->Cherche tous les mots qui ont "a" ou "A" TextBox2: <2 -->Cherche tous les nombres plus petit que 2 Etc. Il va sans dire que j'aimerais obtenir toutes les formes de critères possible: plus grand ou égale à, plus petit que, etc.. Le résultat attendu dans cet exemple serait: Colonne A ; Colonne B ; Colonne C 1 A 1A
Merci beaucoup,
Starwing
Starwing
Bonjour Hervé,
Je vais essayer ce code dès lundi matin le 9 août...
Je t'en donne des nouvelles par la suite.
Merci de bien vouloir m'aider!
Starwing
-----Message d'origine----- Salut Starwing, Une solution peut être. Si j'ai bien compris, tu utilise 1 ListBox à 3 colonnes, 3 TextBoxs, et un
bouton pour lancer le filtrage. Le code fonctionne de la manière suivante :
Après avoir rentré les critères dans les 3 TextBoxs (TextBox1 pour la
colonne 1, TextBox2 pour la colonne 2 et TextBox3 pour la colonne 3) le
filtrage se fait sur la feuille Feuil1 de A1 à Cx(adapte si tes données sont
ailleurs), le résultat est copié sur la feuille Feuil2 en A1:Cx puis la
propriété "RowSource" de la ListBox est définie sur cette plage. Petite
précision; pour les colonnes numériques, quand on veux retourner tous les
enregistrements, le signe "*" ne fonctionne pas, il faut utiliser le signe
"<>". A mettre dans le module de ta Form :
Private Sub CommandButton1_Click() Filtre Remplir End Sub
Sub Filtre() Dim Fe1 As Worksheet Dim Fe2 As Worksheet Dim Plage2 As Range
Set Fe1 = Worksheets("Feuil1") Set Fe2 = Worksheets("Feuil2")
Fe2.Cells.Clear
With Fe1 With .Range(.[A1], _ .[C65536].End(xlUp)) .AutoFilter 1, TextBox1.Text .AutoFilter 2, TextBox2.Text .AutoFilter 3, TextBox3.Text .Copy Fe2.[A1] .AutoFilter End With End With
Set Fe1 = Nothing Set Fe2 = Nothing End Sub
Sub Remplir() Dim Fe As Worksheet Dim Plage As Range
Set Fe = Worksheets("Feuil2")
With Fe Set Plage = .Range(.[A1], _ .[C65536].End(xlUp)) End With
With ListBox1 .RowSource = "Feuil2!" & Plage.Address(0, 0) End With
Set Plage = Nothing Set Fe = Nothing End Sub
Private Sub UserForm_Initialize() Dim Plage As Range
With Worksheets("Feuil1") Set Plage = .Range(.[A1], _ .[C65536].End(xlUp)) End With
With ListBox1 .RowSource = "Feuil1!" & Plage.Address(0, 0) End With
Set Plage = Nothing End Sub
Hervé.
"Starwing" a écrit dans le message news:
12ff01c47bb9$43f5b980$ Bonjour à tous...
.... à tous les cracks!
Je cherche une façon de pouvoir filtrer des informations à partir d'un ListBox et de faire apparaître le résultat dans ce même ListBox. Ex: Mon ListBox ( qui est, en passant, sur un UserForm), a Les données suivantes: Colonne A ; Colonne B ; Colonne C 1 A 1A 2 B 2B 3 c(minus) 3c
Je cherche le moyen à partir de plusieurs TextBox à filtrer certaines informations. TextBox1: *a* -->Cherche tous les mots qui ont "a" ou "A" TextBox2: <2 -->Cherche tous les nombres plus petit que 2 Etc. Il va sans dire que j'aimerais obtenir toutes les formes de critères possible: plus grand ou égale à, plus petit que, etc.. Le résultat attendu dans cet exemple serait: Colonne A ; Colonne B ; Colonne C 1 A 1A
Merci beaucoup,
Starwing
.
Bonjour Hervé,
Je vais essayer ce code dès lundi matin le 9 août...
Je t'en donne des nouvelles par la suite.
Merci de bien vouloir m'aider!
Starwing
-----Message d'origine-----
Salut Starwing,
Une solution peut être.
Si j'ai bien compris, tu utilise 1 ListBox à 3 colonnes,
3 TextBoxs, et un
bouton pour lancer le filtrage. Le code fonctionne de la
manière suivante :
Après avoir rentré les critères dans les 3 TextBoxs
(TextBox1 pour la
colonne 1, TextBox2 pour la colonne 2 et TextBox3 pour la
colonne 3) le
filtrage se fait sur la feuille Feuil1 de A1 à Cx(adapte
si tes données sont
ailleurs), le résultat est copié sur la feuille Feuil2 en
A1:Cx puis la
propriété "RowSource" de la ListBox est définie sur cette
plage. Petite
précision; pour les colonnes numériques, quand on veux
retourner tous les
enregistrements, le signe "*" ne fonctionne pas, il faut
utiliser le signe
"<>".
A mettre dans le module de ta Form :
Private Sub CommandButton1_Click()
Filtre
Remplir
End Sub
Sub Filtre()
Dim Fe1 As Worksheet
Dim Fe2 As Worksheet
Dim Plage2 As Range
Set Fe1 = Worksheets("Feuil1")
Set Fe2 = Worksheets("Feuil2")
Fe2.Cells.Clear
With Fe1
With .Range(.[A1], _
.[C65536].End(xlUp))
.AutoFilter 1, TextBox1.Text
.AutoFilter 2, TextBox2.Text
.AutoFilter 3, TextBox3.Text
.Copy Fe2.[A1]
.AutoFilter
End With
End With
Set Fe1 = Nothing
Set Fe2 = Nothing
End Sub
Sub Remplir()
Dim Fe As Worksheet
Dim Plage As Range
Set Fe = Worksheets("Feuil2")
With Fe
Set Plage = .Range(.[A1], _
.[C65536].End(xlUp))
End With
With ListBox1
.RowSource = "Feuil2!" & Plage.Address(0, 0)
End With
Set Plage = Nothing
Set Fe = Nothing
End Sub
Private Sub UserForm_Initialize()
Dim Plage As Range
With Worksheets("Feuil1")
Set Plage = .Range(.[A1], _
.[C65536].End(xlUp))
End With
With ListBox1
.RowSource = "Feuil1!" & Plage.Address(0, 0)
End With
Set Plage = Nothing
End Sub
Hervé.
"Starwing" <NoMail@NoMail.Niet> a écrit dans le message
news:
12ff01c47bb9$43f5b980$a301280a@phx.gbl...
Bonjour à tous...
.... à tous les cracks!
Je cherche une façon de pouvoir filtrer des informations à
partir d'un ListBox et de faire apparaître le résultat
dans ce même ListBox.
Ex:
Mon ListBox ( qui est, en passant, sur un UserForm),
a Les données suivantes:
Colonne A ; Colonne B ; Colonne C
1 A 1A
2 B 2B
3 c(minus) 3c
Je cherche le moyen à partir de plusieurs TextBox à
filtrer certaines informations.
TextBox1: *a* -->Cherche tous les mots qui ont "a" ou "A"
TextBox2: <2 -->Cherche tous les nombres plus petit que 2
Etc.
Il va sans dire que j'aimerais obtenir toutes les formes
de critères possible: plus grand ou égale à, plus petit
que, etc..
Le résultat attendu dans cet exemple serait:
Colonne A ; Colonne B ; Colonne C
1 A 1A
Je vais essayer ce code dès lundi matin le 9 août...
Je t'en donne des nouvelles par la suite.
Merci de bien vouloir m'aider!
Starwing
-----Message d'origine----- Salut Starwing, Une solution peut être. Si j'ai bien compris, tu utilise 1 ListBox à 3 colonnes, 3 TextBoxs, et un
bouton pour lancer le filtrage. Le code fonctionne de la manière suivante :
Après avoir rentré les critères dans les 3 TextBoxs (TextBox1 pour la
colonne 1, TextBox2 pour la colonne 2 et TextBox3 pour la colonne 3) le
filtrage se fait sur la feuille Feuil1 de A1 à Cx(adapte si tes données sont
ailleurs), le résultat est copié sur la feuille Feuil2 en A1:Cx puis la
propriété "RowSource" de la ListBox est définie sur cette plage. Petite
précision; pour les colonnes numériques, quand on veux retourner tous les
enregistrements, le signe "*" ne fonctionne pas, il faut utiliser le signe
"<>". A mettre dans le module de ta Form :
Private Sub CommandButton1_Click() Filtre Remplir End Sub
Sub Filtre() Dim Fe1 As Worksheet Dim Fe2 As Worksheet Dim Plage2 As Range
Set Fe1 = Worksheets("Feuil1") Set Fe2 = Worksheets("Feuil2")
Fe2.Cells.Clear
With Fe1 With .Range(.[A1], _ .[C65536].End(xlUp)) .AutoFilter 1, TextBox1.Text .AutoFilter 2, TextBox2.Text .AutoFilter 3, TextBox3.Text .Copy Fe2.[A1] .AutoFilter End With End With
Set Fe1 = Nothing Set Fe2 = Nothing End Sub
Sub Remplir() Dim Fe As Worksheet Dim Plage As Range
Set Fe = Worksheets("Feuil2")
With Fe Set Plage = .Range(.[A1], _ .[C65536].End(xlUp)) End With
With ListBox1 .RowSource = "Feuil2!" & Plage.Address(0, 0) End With
Set Plage = Nothing Set Fe = Nothing End Sub
Private Sub UserForm_Initialize() Dim Plage As Range
With Worksheets("Feuil1") Set Plage = .Range(.[A1], _ .[C65536].End(xlUp)) End With
With ListBox1 .RowSource = "Feuil1!" & Plage.Address(0, 0) End With
Set Plage = Nothing End Sub
Hervé.
"Starwing" a écrit dans le message news:
12ff01c47bb9$43f5b980$ Bonjour à tous...
.... à tous les cracks!
Je cherche une façon de pouvoir filtrer des informations à partir d'un ListBox et de faire apparaître le résultat dans ce même ListBox. Ex: Mon ListBox ( qui est, en passant, sur un UserForm), a Les données suivantes: Colonne A ; Colonne B ; Colonne C 1 A 1A 2 B 2B 3 c(minus) 3c
Je cherche le moyen à partir de plusieurs TextBox à filtrer certaines informations. TextBox1: *a* -->Cherche tous les mots qui ont "a" ou "A" TextBox2: <2 -->Cherche tous les nombres plus petit que 2 Etc. Il va sans dire que j'aimerais obtenir toutes les formes de critères possible: plus grand ou égale à, plus petit que, etc.. Le résultat attendu dans cet exemple serait: Colonne A ; Colonne B ; Colonne C 1 A 1A