[2003] Filtre élaboré

Le
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:ú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
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #21561371
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" 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
Péhemme
Le #21561601
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" 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" 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

michdenis
Le #21561691
Et tu as pensé à tes formats de cellules ??????????

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




"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" 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" 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

Péhemme
Le #21562011
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" news:
Et tu as pensé à tes formats de cellules ??????????

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




"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" 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" 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




michdenis
Le #21562211
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" 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" news:
Et tu as pensé à tes formats de cellules ??????????

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




"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" 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" 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




Modeste
Le #21562441
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é
Péhemme
Le #21562431
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" 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" 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" news:
Et tu as pensé à tes formats de cellules ??????????

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




"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" 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" 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







Péhemme
Le #21562711
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" 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é
michdenis
Le #21562871
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"
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" 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" 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" news:
Et tu as pensé à tes formats de cellules ??????????

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




"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" 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" 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







michdenis
Le #21562861
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"
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"
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" 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" 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" news:
Et tu as pensé à tes formats de cellules ??????????

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




"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" 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" 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







Publicité
Poster une réponse
Anonyme