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

[2003] Filtre élaboré

28 réponses
Avatar
Péhemme
Bonjour à Tous,

Je deviens chèvre... à double titre.
J'essaie de me lancer dans quelque chose que je ne sais pas faire (saisir un
numéro de code postal dans une textbox et obtenir dans une combobox la liste
des communes portant ce code postal) mais en amont, je découvre que je ne
sais même plus utiliser les filtres élaborés...
Dans la macro qui suit, la totalité de la base se recopie sur la destination
au lieu de n'obtenir que la liste issue du filtre en "B1:B2".
La base est en "A6:B39183"
Pour tout dire, même à la main le filtre ne s'exécute pas (?)
L'un d'entre vous pourrait-il avoir la gentillesse de me dire pourquoi mon
filtre ne fonctionne pas.

Sub ListeCommunes()
Dim R As Long
Dim Dest As Range
Set Dest = Worksheets("Feuil2").Range("C2")

With Sheets("Feuil1")

R = .Range("A65536").End(xlUp).Row

.Range("A6:B" & R).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=.Range("B1:B2"), Unique:=False

.Range("_FilterDatabase").Resize(.Range("_FilterDatabase") _
.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).Copy
Dest

End With

'Sheets("Feuil1").ShowAllData
Set Dest = Nothing

End Sub

A tout hasard, j'ai mis ce fichier sur ci-joint :

http://www.cijoint.fr/cjlink.php?file=cj201004/cij2uUUsZU.xls

Merci d'avance de votre aide
Michel

10 réponses

1 2 3
Avatar
michdenis
Bonjour,

Attention, ta plage de critère et ta plage de données (colonne B)
doivent avoir le même format.

voici la macro :

'--------------------------------------
Sub ListeCommunes()
Dim Dest As Range
Dim Rg As Range

Set Dest = Worksheets("Feuil2").Range("C2")

With Feuil1
Set Rg = .Range("A5:A" & .Range("A65536").End(xlUp).Row)
End With
With Rg
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range("B1:B2"), CopyToRange:Þst, Unique:úlse
End With
Set Dest = Nothing

End Sub
'--------------------------------------




"Péhemme" a écrit dans le message de groupe de discussion :
unGly$
Bonjour à Tous,

Je deviens chèvre... à double titre.
J'essaie de me lancer dans quelque chose que je ne sais pas faire (saisir un
numéro de code postal dans une textbox et obtenir dans une combobox la liste
des communes portant ce code postal) mais en amont, je découvre que je ne
sais même plus utiliser les filtres élaborés...
Dans la macro qui suit, la totalité de la base se recopie sur la destination
au lieu de n'obtenir que la liste issue du filtre en "B1:B2".
La base est en "A6:B39183"
Pour tout dire, même à la main le filtre ne s'exécute pas (?)
L'un d'entre vous pourrait-il avoir la gentillesse de me dire pourquoi mon
filtre ne fonctionne pas.

Sub ListeCommunes()
Dim R As Long
Dim Dest As Range
Set Dest = Worksheets("Feuil2").Range("C2")

With Sheets("Feuil1")

R = .Range("A65536").End(xlUp).Row

.Range("A6:B" & R).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=.Range("B1:B2"), Unique:úlse

.Range("_FilterDatabase").Resize(.Range("_FilterDatabase") _
.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).Copy
Dest

End With

'Sheets("Feuil1").ShowAllData
Set Dest = Nothing

End Sub

A tout hasard, j'ai mis ce fichier sur ci-joint :

http://www.cijoint.fr/cjlink.php?file=cj201004/cij2uUUsZU.xls

Merci d'avance de votre aide
Michel
Avatar
Péhemme
Bonjour Denis,

Merci de te pencher sur mon problème.
J'ai fait un copier/coller de ta proposition, mais j'obtiens le même
résultat, c'est-à-dire que le filtre ne fonctionne pas.
Le format des codes (code postal) ou l'ampleur de la base jouent-ils un rôle
?

Michel


"michdenis" a écrit dans le message de
news:
Bonjour,

Attention, ta plage de critère et ta plage de données (colonne B)
doivent avoir le même format.

voici la macro :

'--------------------------------------
Sub ListeCommunes()
Dim Dest As Range
Dim Rg As Range

Set Dest = Worksheets("Feuil2").Range("C2")

With Feuil1
Set Rg = .Range("A5:A" & .Range("A65536").End(xlUp).Row)
End With
With Rg
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range("B1:B2"), CopyToRange:Þst,
Unique:úlse
End With
Set Dest = Nothing

End Sub
'--------------------------------------




"Péhemme" a écrit dans le message de groupe de discussion :
unGly$
Bonjour à Tous,

Je deviens chèvre... à double titre.
J'essaie de me lancer dans quelque chose que je ne sais pas faire (saisir
un
numéro de code postal dans une textbox et obtenir dans une combobox la
liste
des communes portant ce code postal) mais en amont, je découvre que je ne
sais même plus utiliser les filtres élaborés...
Dans la macro qui suit, la totalité de la base se recopie sur la
destination
au lieu de n'obtenir que la liste issue du filtre en "B1:B2".
La base est en "A6:B39183"
Pour tout dire, même à la main le filtre ne s'exécute pas (?)
L'un d'entre vous pourrait-il avoir la gentillesse de me dire pourquoi mon
filtre ne fonctionne pas.

Sub ListeCommunes()
Dim R As Long
Dim Dest As Range
Set Dest = Worksheets("Feuil2").Range("C2")

With Sheets("Feuil1")

R = .Range("A65536").End(xlUp).Row

.Range("A6:B" & R).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=.Range("B1:B2"), Unique:úlse

.Range("_FilterDatabase").Resize(.Range("_FilterDatabase") _
.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).Copy
Dest

End With

'Sheets("Feuil1").ShowAllData
Set Dest = Nothing

End Sub

A tout hasard, j'ai mis ce fichier sur ci-joint :

http://www.cijoint.fr/cjlink.php?file=cj201004/cij2uUUsZU.xls

Merci d'avance de votre aide
Michel

Avatar
michdenis
Et tu as pensé à tes formats de cellules ??????????

http://www.cijoint.fr/cjlink.php?file=cj201004/cijFosxN5W.zip




"Péhemme" a écrit dans le message de groupe de discussion :
#
Bonjour Denis,

Merci de te pencher sur mon problème.
J'ai fait un copier/coller de ta proposition, mais j'obtiens le même
résultat, c'est-à-dire que le filtre ne fonctionne pas.
Le format des codes (code postal) ou l'ampleur de la base jouent-ils un rôle
?

Michel


"michdenis" a écrit dans le message de
news:
Bonjour,

Attention, ta plage de critère et ta plage de données (colonne B)
doivent avoir le même format.

voici la macro :

'--------------------------------------
Sub ListeCommunes()
Dim Dest As Range
Dim Rg As Range

Set Dest = Worksheets("Feuil2").Range("C2")

With Feuil1
Set Rg = .Range("A5:A" & .Range("A65536").End(xlUp).Row)
End With
With Rg
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range("B1:B2"), CopyToRange:Þst,
Unique:úlse
End With
Set Dest = Nothing

End Sub
'--------------------------------------




"Péhemme" a écrit dans le message de groupe de discussion :
unGly$
Bonjour à Tous,

Je deviens chèvre... à double titre.
J'essaie de me lancer dans quelque chose que je ne sais pas faire (saisir
un
numéro de code postal dans une textbox et obtenir dans une combobox la
liste
des communes portant ce code postal) mais en amont, je découvre que je ne
sais même plus utiliser les filtres élaborés...
Dans la macro qui suit, la totalité de la base se recopie sur la
destination
au lieu de n'obtenir que la liste issue du filtre en "B1:B2".
La base est en "A6:B39183"
Pour tout dire, même à la main le filtre ne s'exécute pas (?)
L'un d'entre vous pourrait-il avoir la gentillesse de me dire pourquoi mon
filtre ne fonctionne pas.

Sub ListeCommunes()
Dim R As Long
Dim Dest As Range
Set Dest = Worksheets("Feuil2").Range("C2")

With Sheets("Feuil1")

R = .Range("A65536").End(xlUp).Row

.Range("A6:B" & R).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=.Range("B1:B2"), Unique:úlse

.Range("_FilterDatabase").Resize(.Range("_FilterDatabase") _
.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).Copy
Dest

End With

'Sheets("Feuil1").ShowAllData
Set Dest = Nothing

End Sub

A tout hasard, j'ai mis ce fichier sur ci-joint :

http://www.cijoint.fr/cjlink.php?file=cj201004/cij2uUUsZU.xls

Merci d'avance de votre aide
Michel

Avatar
Péhemme
Et tu as pensé à tes formats de cellules ??????????


Cela a fait partie de mes vérifications.
La colonne "B" est en spécial "code postal".
La colonne "A" en texte.

Par ailleurs,
1°) j'ai enregistré ton fichier
2°) je l'ai dézzipé
3°) j'ai observé que tu avais réussi à faire fonctionner le filtre
J'ai donc, sur ton fichier, juste fait : "Données/Filtrer/afficher tout" et
relancé la macro "ListeCommunes" sans rien toucher à quoique ce soit d'autre
: cela ne fonctionne pas.
Aurais-je le mauvais oil ?
Si toi tu l'as fait fonctionner pourquoi je n'y arrive pas ? J'en perds mon
latin.

Michel



"michdenis" a écrit dans le message de
news:
Et tu as pensé à tes formats de cellules ??????????

http://www.cijoint.fr/cjlink.php?file=cj201004/cijFosxN5W.zip




"Péhemme" a écrit dans le message de groupe de discussion :
#
Bonjour Denis,

Merci de te pencher sur mon problème.
J'ai fait un copier/coller de ta proposition, mais j'obtiens le même
résultat, c'est-à-dire que le filtre ne fonctionne pas.
Le format des codes (code postal) ou l'ampleur de la base jouent-ils un
rôle
?

Michel


"michdenis" a écrit dans le message de
news:
Bonjour,

Attention, ta plage de critère et ta plage de données (colonne B)
doivent avoir le même format.

voici la macro :

'--------------------------------------
Sub ListeCommunes()
Dim Dest As Range
Dim Rg As Range

Set Dest = Worksheets("Feuil2").Range("C2")

With Feuil1
Set Rg = .Range("A5:A" & .Range("A65536").End(xlUp).Row)
End With
With Rg
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range("B1:B2"), CopyToRange:Þst,
Unique:úlse
End With
Set Dest = Nothing

End Sub
'--------------------------------------




"Péhemme" a écrit dans le message de groupe de discussion :
unGly$
Bonjour à Tous,

Je deviens chèvre... à double titre.
J'essaie de me lancer dans quelque chose que je ne sais pas faire (saisir
un
numéro de code postal dans une textbox et obtenir dans une combobox la
liste
des communes portant ce code postal) mais en amont, je découvre que je ne
sais même plus utiliser les filtres élaborés...
Dans la macro qui suit, la totalité de la base se recopie sur la
destination
au lieu de n'obtenir que la liste issue du filtre en "B1:B2".
La base est en "A6:B39183"
Pour tout dire, même à la main le filtre ne s'exécute pas (?)
L'un d'entre vous pourrait-il avoir la gentillesse de me dire pourquoi
mon
filtre ne fonctionne pas.

Sub ListeCommunes()
Dim R As Long
Dim Dest As Range
Set Dest = Worksheets("Feuil2").Range("C2")

With Sheets("Feuil1")

R = .Range("A65536").End(xlUp).Row

.Range("A6:B" & R).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=.Range("B1:B2"), Unique:úlse

.Range("_FilterDatabase").Resize(.Range("_FilterDatabase") _
.Rows.Count -
1).Offset(1).SpecialCells(xlCellTypeVisible).Copy
Dest

End With

'Sheets("Feuil1").ShowAllData
Set Dest = Nothing

End Sub

A tout hasard, j'ai mis ce fichier sur ci-joint :

http://www.cijoint.fr/cjlink.php?file=cj201004/cij2uUUsZU.xls

Merci d'avance de votre aide
Michel




Avatar
michdenis
Désolé, la macro devrait se lire comme suite :

'---------------------------------------
Sub ListeCommunes()
Dim Dest As Range
Dim Rg As Range

Set Dest = Worksheets("Feuil2").Range("C2")
Application.ScreenUpdating = False
On Error Resume Next
With Feuil1
Set Rg = .Range("A5:B" & .Range("A65536").End(xlUp).Row)
With Rg
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Rg.Parent.Range("B1:B2"), _
CopyToRange:Þst, Unique:úlse
End With
.ShowAllData
End With
Set Dest = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------------



"Péhemme" a écrit dans le message de groupe de discussion :
uYuV$
Et tu as pensé à tes formats de cellules ??????????


Cela a fait partie de mes vérifications.
La colonne "B" est en spécial "code postal".
La colonne "A" en texte.

Par ailleurs,
1°) j'ai enregistré ton fichier
2°) je l'ai dézzipé
3°) j'ai observé que tu avais réussi à faire fonctionner le filtre
J'ai donc, sur ton fichier, juste fait : "Données/Filtrer/afficher tout" et
relancé la macro "ListeCommunes" sans rien toucher à quoique ce soit d'autre
: cela ne fonctionne pas.
Aurais-je le mauvais oil ?
Si toi tu l'as fait fonctionner pourquoi je n'y arrive pas ? J'en perds mon
latin.

Michel



"michdenis" a écrit dans le message de
news:
Et tu as pensé à tes formats de cellules ??????????

http://www.cijoint.fr/cjlink.php?file=cj201004/cijFosxN5W.zip




"Péhemme" a écrit dans le message de groupe de discussion :
#
Bonjour Denis,

Merci de te pencher sur mon problème.
J'ai fait un copier/coller de ta proposition, mais j'obtiens le même
résultat, c'est-à-dire que le filtre ne fonctionne pas.
Le format des codes (code postal) ou l'ampleur de la base jouent-ils un
rôle
?

Michel


"michdenis" a écrit dans le message de
news:
Bonjour,

Attention, ta plage de critère et ta plage de données (colonne B)
doivent avoir le même format.

voici la macro :

'--------------------------------------
Sub ListeCommunes()
Dim Dest As Range
Dim Rg As Range

Set Dest = Worksheets("Feuil2").Range("C2")

With Feuil1
Set Rg = .Range("A5:A" & .Range("A65536").End(xlUp).Row)
End With
With Rg
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range("B1:B2"), CopyToRange:Þst,
Unique:úlse
End With
Set Dest = Nothing

End Sub
'--------------------------------------




"Péhemme" a écrit dans le message de groupe de discussion :
unGly$
Bonjour à Tous,

Je deviens chèvre... à double titre.
J'essaie de me lancer dans quelque chose que je ne sais pas faire (saisir
un
numéro de code postal dans une textbox et obtenir dans une combobox la
liste
des communes portant ce code postal) mais en amont, je découvre que je ne
sais même plus utiliser les filtres élaborés...
Dans la macro qui suit, la totalité de la base se recopie sur la
destination
au lieu de n'obtenir que la liste issue du filtre en "B1:B2".
La base est en "A6:B39183"
Pour tout dire, même à la main le filtre ne s'exécute pas (?)
L'un d'entre vous pourrait-il avoir la gentillesse de me dire pourquoi
mon
filtre ne fonctionne pas.

Sub ListeCommunes()
Dim R As Long
Dim Dest As Range
Set Dest = Worksheets("Feuil2").Range("C2")

With Sheets("Feuil1")

R = .Range("A65536").End(xlUp).Row

.Range("A6:B" & R).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=.Range("B1:B2"), Unique:úlse

.Range("_FilterDatabase").Resize(.Range("_FilterDatabase") _
.Rows.Count -
1).Offset(1).SpecialCells(xlCellTypeVisible).Copy
Dest

End With

'Sheets("Feuil1").ShowAllData
Set Dest = Nothing

End Sub

A tout hasard, j'ai mis ce fichier sur ci-joint :

http://www.cijoint.fr/cjlink.php?file=cj201004/cij2uUUsZU.xls

Merci d'avance de votre aide
Michel




Avatar
Modeste
Bonsour®
Je deviens chèvre... à double titre.
J'essaie de me lancer dans quelque chose que je ne sais pas faire (saisir
un
numéro de code postal dans une textbox et obtenir dans une combobox la
liste
des communes portant ce code postal)



et bhéée... au niveau du code du Userform :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Sheets("feuil1").Range("B2").Value = TextBox1.Value
Me.ComboBox1.Clear
CP = Me.TextBox1.Value
x = 6
While Not IsEmpty(Sheets("feuil1").Cells(x, 1))
If Sheets("feuil1").Cells(x, 2).Text = CP Then Me.ComboBox1.AddItem
(Sheets("feuil1").Cells(x, 1).Value)
x = x + 1
Wend
End Sub

prévoir un petit temps de réaction...
si la liste est triée par CP
la boucle peut etre accéleré en se placant dierctement sur la premiere
instance du CP via un Find
et en quittant la boucle dès que le CP lu est > au CP recherché
Avatar
Péhemme
Alléluia ! Cela fonctionne.
Mille mercis Denis.
Il me reste à regarder où je merdais.
Merci encore de ton aide précieuse.
Bien amicalement
Michel



"michdenis" a écrit dans le message de
news:
Désolé, la macro devrait se lire comme suite :

'---------------------------------------
Sub ListeCommunes()
Dim Dest As Range
Dim Rg As Range

Set Dest = Worksheets("Feuil2").Range("C2")
Application.ScreenUpdating = False
On Error Resume Next
With Feuil1
Set Rg = .Range("A5:B" & .Range("A65536").End(xlUp).Row)
With Rg
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Rg.Parent.Range("B1:B2"), _
CopyToRange:Þst, Unique:úlse
End With
.ShowAllData
End With
Set Dest = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------------



"Péhemme" a écrit dans le message de groupe de discussion :
uYuV$
Et tu as pensé à tes formats de cellules ??????????


Cela a fait partie de mes vérifications.
La colonne "B" est en spécial "code postal".
La colonne "A" en texte.

Par ailleurs,
1°) j'ai enregistré ton fichier
2°) je l'ai dézzipé
3°) j'ai observé que tu avais réussi à faire fonctionner le filtre
J'ai donc, sur ton fichier, juste fait : "Données/Filtrer/afficher tout"
et
relancé la macro "ListeCommunes" sans rien toucher à quoique ce soit
d'autre
: cela ne fonctionne pas.
Aurais-je le mauvais oil ?
Si toi tu l'as fait fonctionner pourquoi je n'y arrive pas ? J'en perds
mon
latin.

Michel



"michdenis" a écrit dans le message de
news:
Et tu as pensé à tes formats de cellules ??????????

http://www.cijoint.fr/cjlink.php?file=cj201004/cijFosxN5W.zip




"Péhemme" a écrit dans le message de groupe de discussion :
#
Bonjour Denis,

Merci de te pencher sur mon problème.
J'ai fait un copier/coller de ta proposition, mais j'obtiens le même
résultat, c'est-à-dire que le filtre ne fonctionne pas.
Le format des codes (code postal) ou l'ampleur de la base jouent-ils un
rôle
?

Michel


"michdenis" a écrit dans le message de
news:
Bonjour,

Attention, ta plage de critère et ta plage de données (colonne B)
doivent avoir le même format.

voici la macro :

'--------------------------------------
Sub ListeCommunes()
Dim Dest As Range
Dim Rg As Range

Set Dest = Worksheets("Feuil2").Range("C2")

With Feuil1
Set Rg = .Range("A5:A" & .Range("A65536").End(xlUp).Row)
End With
With Rg
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range("B1:B2"), CopyToRange:Þst,
Unique:úlse
End With
Set Dest = Nothing

End Sub
'--------------------------------------




"Péhemme" a écrit dans le message de groupe de discussion :
unGly$
Bonjour à Tous,

Je deviens chèvre... à double titre.
J'essaie de me lancer dans quelque chose que je ne sais pas faire
(saisir
un
numéro de code postal dans une textbox et obtenir dans une combobox la
liste
des communes portant ce code postal) mais en amont, je découvre que je
ne
sais même plus utiliser les filtres élaborés...
Dans la macro qui suit, la totalité de la base se recopie sur la
destination
au lieu de n'obtenir que la liste issue du filtre en "B1:B2".
La base est en "A6:B39183"
Pour tout dire, même à la main le filtre ne s'exécute pas (?)
L'un d'entre vous pourrait-il avoir la gentillesse de me dire pourquoi
mon
filtre ne fonctionne pas.

Sub ListeCommunes()
Dim R As Long
Dim Dest As Range
Set Dest = Worksheets("Feuil2").Range("C2")

With Sheets("Feuil1")

R = .Range("A65536").End(xlUp).Row

.Range("A6:B" & R).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=.Range("B1:B2"), Unique:úlse

.Range("_FilterDatabase").Resize(.Range("_FilterDatabase") _
.Rows.Count -
1).Offset(1).SpecialCells(xlCellTypeVisible).Copy
Dest

End With

'Sheets("Feuil1").ShowAllData
Set Dest = Nothing

End Sub

A tout hasard, j'ai mis ce fichier sur ci-joint :

http://www.cijoint.fr/cjlink.php?file=cj201004/cij2uUUsZU.xls

Merci d'avance de votre aide
Michel







Avatar
Péhemme
Bonjour Gilbert,

C'était exactement ce à quoi je voulais m'attaquer si je ne m'étais pas
perdu dans les entrelacs des filtres élaborés que je croyais pourtant
maitriser (on est peu de chose).

prévoir un petit temps de réaction...


En effet... Heureusement que tu m'as prévenu, sans quoi je me serais
inquiété.

si la liste est triée par CP


Oui, la liste déjà est triée par code.

la boucle peut etre accéleré en se placant dierctement sur la premiere
instance du CP via un Find
et en quittant la boucle dès que le CP lu est > au CP recherché


Merci du renseignement ; je vais m'y atteler.

Merci de ton aide
Bien amicalement
Michel



"Modeste" a écrit dans le message de
news:
Bonsour®
Je deviens chèvre... à double titre.
J'essaie de me lancer dans quelque chose que je ne sais pas faire (saisir
un
numéro de code postal dans une textbox et obtenir dans une combobox la
liste
des communes portant ce code postal)



et bhéée... au niveau du code du Userform :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Sheets("feuil1").Range("B2").Value = TextBox1.Value
Me.ComboBox1.Clear
CP = Me.TextBox1.Value
x = 6
While Not IsEmpty(Sheets("feuil1").Cells(x, 1))
If Sheets("feuil1").Cells(x, 2).Text = CP Then Me.ComboBox1.AddItem
(Sheets("feuil1").Cells(x, 1).Value)
x = x + 1
Wend
End Sub

prévoir un petit temps de réaction...
si la liste est triée par CP
la boucle peut etre accéleré en se placant dierctement sur la premiere
instance du CP via un Find
et en quittant la boucle dès que le CP lu est > au CP recherché
Avatar
michdenis
Regarde cet exemple : http://www.cijoint.fr/cjlink.php?file=cj201004/cijttt1ZAH.xls

Tu ouvres ton formulaire, tu saisis dans ton textbox un code postal
et ton combobox affiche la liste des communes.
J'ai utilisé ADO plutôt qu'un filtre élaboré... c'est plus rapide à l'exécution.



"Péhemme" a écrit dans le message de groupe de discussion :

Alléluia ! Cela fonctionne.
Mille mercis Denis.
Il me reste à regarder où je merdais.
Merci encore de ton aide précieuse.
Bien amicalement
Michel



"michdenis" a écrit dans le message de
news:
Désolé, la macro devrait se lire comme suite :

'---------------------------------------
Sub ListeCommunes()
Dim Dest As Range
Dim Rg As Range

Set Dest = Worksheets("Feuil2").Range("C2")
Application.ScreenUpdating = False
On Error Resume Next
With Feuil1
Set Rg = .Range("A5:B" & .Range("A65536").End(xlUp).Row)
With Rg
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Rg.Parent.Range("B1:B2"), _
CopyToRange:Þst, Unique:úlse
End With
.ShowAllData
End With
Set Dest = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------------



"Péhemme" a écrit dans le message de groupe de discussion :
uYuV$
Et tu as pensé à tes formats de cellules ??????????


Cela a fait partie de mes vérifications.
La colonne "B" est en spécial "code postal".
La colonne "A" en texte.

Par ailleurs,
1°) j'ai enregistré ton fichier
2°) je l'ai dézzipé
3°) j'ai observé que tu avais réussi à faire fonctionner le filtre
J'ai donc, sur ton fichier, juste fait : "Données/Filtrer/afficher tout"
et
relancé la macro "ListeCommunes" sans rien toucher à quoique ce soit
d'autre
: cela ne fonctionne pas.
Aurais-je le mauvais oil ?
Si toi tu l'as fait fonctionner pourquoi je n'y arrive pas ? J'en perds
mon
latin.

Michel



"michdenis" a écrit dans le message de
news:
Et tu as pensé à tes formats de cellules ??????????

http://www.cijoint.fr/cjlink.php?file=cj201004/cijFosxN5W.zip




"Péhemme" a écrit dans le message de groupe de discussion :
#
Bonjour Denis,

Merci de te pencher sur mon problème.
J'ai fait un copier/coller de ta proposition, mais j'obtiens le même
résultat, c'est-à-dire que le filtre ne fonctionne pas.
Le format des codes (code postal) ou l'ampleur de la base jouent-ils un
rôle
?

Michel


"michdenis" a écrit dans le message de
news:
Bonjour,

Attention, ta plage de critère et ta plage de données (colonne B)
doivent avoir le même format.

voici la macro :

'--------------------------------------
Sub ListeCommunes()
Dim Dest As Range
Dim Rg As Range

Set Dest = Worksheets("Feuil2").Range("C2")

With Feuil1
Set Rg = .Range("A5:A" & .Range("A65536").End(xlUp).Row)
End With
With Rg
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range("B1:B2"), CopyToRange:Þst,
Unique:úlse
End With
Set Dest = Nothing

End Sub
'--------------------------------------




"Péhemme" a écrit dans le message de groupe de discussion :
unGly$
Bonjour à Tous,

Je deviens chèvre... à double titre.
J'essaie de me lancer dans quelque chose que je ne sais pas faire
(saisir
un
numéro de code postal dans une textbox et obtenir dans une combobox la
liste
des communes portant ce code postal) mais en amont, je découvre que je
ne
sais même plus utiliser les filtres élaborés...
Dans la macro qui suit, la totalité de la base se recopie sur la
destination
au lieu de n'obtenir que la liste issue du filtre en "B1:B2".
La base est en "A6:B39183"
Pour tout dire, même à la main le filtre ne s'exécute pas (?)
L'un d'entre vous pourrait-il avoir la gentillesse de me dire pourquoi
mon
filtre ne fonctionne pas.

Sub ListeCommunes()
Dim R As Long
Dim Dest As Range
Set Dest = Worksheets("Feuil2").Range("C2")

With Sheets("Feuil1")

R = .Range("A65536").End(xlUp).Row

.Range("A6:B" & R).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=.Range("B1:B2"), Unique:úlse

.Range("_FilterDatabase").Resize(.Range("_FilterDatabase") _
.Rows.Count -
1).Offset(1).SpecialCells(xlCellTypeVisible).Copy
Dest

End With

'Sheets("Feuil1").ShowAllData
Set Dest = Nothing

End Sub

A tout hasard, j'ai mis ce fichier sur ci-joint :

http://www.cijoint.fr/cjlink.php?file=cj201004/cij2uUUsZU.xls

Merci d'avance de votre aide
Michel







Avatar
michdenis
Utilise plutôt cette procédure...

Modifier que pour de légers détails !

'------------------------------------------
Sub RequêteAvecADO()

'Requiert la bibliothèque suivante :
'barre des menus / outils / référence :
'"Microsoft Activex Data objects 2.8 library"

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, Rg As Range
Dim File As String, Plage As Range, Critère As String

'Nom de la feuille du fichier où sont les données
NomFeuille = "Feuil1"

'S'assurer que le formulaire est à l'écran
If UserForm1.Visible = False Then
Exit Sub
End If

'Le critère basé sur la valeur du textbox.
If UserForm1.TextBox1 <> "" Then
Critère = UserForm1.TextBox1
Else
MsgBox "Remplissez d'abord de textbox."
Exit Sub
End If

'Fichier sur lequel se fera la requête :
File = ThisWorkbook.FullName

'Plage des données
With Worksheets(NomFeuille)
Set Plage = .Range("A5:B" & .Range("A65536").End(xlUp).Row)
End With

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""

'La requête qui sera exécutée.
Requete = "SELECT COMMUNES From [" & NomFeuille & "$" & _
Plage.Address(0, 0) & "] Where Codes like " & _
"'" & Critère & "'" & "Group By Communes"
'Exécution de la requête
Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic

With UserForm1.ComboBox1
If Rst.RecordCount > 0 Then
.Value = ""
.List = Application.Transpose(Rst.GetRows)
Else
.Clear
MsgBox "Aucun département trouvé pour ce code postal."
End If
End With
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'------------------------------------------



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

Regarde cet exemple : http://www.cijoint.fr/cjlink.php?file=cj201004/cijttt1ZAH.xls

Tu ouvres ton formulaire, tu saisis dans ton textbox un code postal
et ton combobox affiche la liste des communes.
J'ai utilisé ADO plutôt qu'un filtre élaboré... c'est plus rapide à l'exécution.



"Péhemme" a écrit dans le message de groupe de discussion :

Alléluia ! Cela fonctionne.
Mille mercis Denis.
Il me reste à regarder où je merdais.
Merci encore de ton aide précieuse.
Bien amicalement
Michel



"michdenis" a écrit dans le message de
news:
Désolé, la macro devrait se lire comme suite :

'---------------------------------------
Sub ListeCommunes()
Dim Dest As Range
Dim Rg As Range

Set Dest = Worksheets("Feuil2").Range("C2")
Application.ScreenUpdating = False
On Error Resume Next
With Feuil1
Set Rg = .Range("A5:B" & .Range("A65536").End(xlUp).Row)
With Rg
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Rg.Parent.Range("B1:B2"), _
CopyToRange:Þst, Unique:úlse
End With
.ShowAllData
End With
Set Dest = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------------



"Péhemme" a écrit dans le message de groupe de discussion :
uYuV$
Et tu as pensé à tes formats de cellules ??????????


Cela a fait partie de mes vérifications.
La colonne "B" est en spécial "code postal".
La colonne "A" en texte.

Par ailleurs,
1°) j'ai enregistré ton fichier
2°) je l'ai dézzipé
3°) j'ai observé que tu avais réussi à faire fonctionner le filtre
J'ai donc, sur ton fichier, juste fait : "Données/Filtrer/afficher tout"
et
relancé la macro "ListeCommunes" sans rien toucher à quoique ce soit
d'autre
: cela ne fonctionne pas.
Aurais-je le mauvais oil ?
Si toi tu l'as fait fonctionner pourquoi je n'y arrive pas ? J'en perds
mon
latin.

Michel



"michdenis" a écrit dans le message de
news:
Et tu as pensé à tes formats de cellules ??????????

http://www.cijoint.fr/cjlink.php?file=cj201004/cijFosxN5W.zip




"Péhemme" a écrit dans le message de groupe de discussion :
#
Bonjour Denis,

Merci de te pencher sur mon problème.
J'ai fait un copier/coller de ta proposition, mais j'obtiens le même
résultat, c'est-à-dire que le filtre ne fonctionne pas.
Le format des codes (code postal) ou l'ampleur de la base jouent-ils un
rôle
?

Michel


"michdenis" a écrit dans le message de
news:
Bonjour,

Attention, ta plage de critère et ta plage de données (colonne B)
doivent avoir le même format.

voici la macro :

'--------------------------------------
Sub ListeCommunes()
Dim Dest As Range
Dim Rg As Range

Set Dest = Worksheets("Feuil2").Range("C2")

With Feuil1
Set Rg = .Range("A5:A" & .Range("A65536").End(xlUp).Row)
End With
With Rg
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range("B1:B2"), CopyToRange:Þst,
Unique:úlse
End With
Set Dest = Nothing

End Sub
'--------------------------------------




"Péhemme" a écrit dans le message de groupe de discussion :
unGly$
Bonjour à Tous,

Je deviens chèvre... à double titre.
J'essaie de me lancer dans quelque chose que je ne sais pas faire
(saisir
un
numéro de code postal dans une textbox et obtenir dans une combobox la
liste
des communes portant ce code postal) mais en amont, je découvre que je
ne
sais même plus utiliser les filtres élaborés...
Dans la macro qui suit, la totalité de la base se recopie sur la
destination
au lieu de n'obtenir que la liste issue du filtre en "B1:B2".
La base est en "A6:B39183"
Pour tout dire, même à la main le filtre ne s'exécute pas (?)
L'un d'entre vous pourrait-il avoir la gentillesse de me dire pourquoi
mon
filtre ne fonctionne pas.

Sub ListeCommunes()
Dim R As Long
Dim Dest As Range
Set Dest = Worksheets("Feuil2").Range("C2")

With Sheets("Feuil1")

R = .Range("A65536").End(xlUp).Row

.Range("A6:B" & R).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=.Range("B1:B2"), Unique:úlse

.Range("_FilterDatabase").Resize(.Range("_FilterDatabase") _
.Rows.Count -
1).Offset(1).SpecialCells(xlCellTypeVisible).Copy
Dest

End With

'Sheets("Feuil1").ShowAllData
Set Dest = Nothing

End Sub

A tout hasard, j'ai mis ce fichier sur ci-joint :

http://www.cijoint.fr/cjlink.php?file=cj201004/cij2uUUsZU.xls

Merci d'avance de votre aide
Michel







1 2 3