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
Péhemme
Mon cher Denis,

Ce que tu proposes est simplement *formidable*.
Cependant, pourquoi cela ne semble pas fonctionner pour les codes commençant
par 0 ?
Les tests que j'ai effectués semblent (je prends du recul car je ne les ai
pas tous effectués) me renvoyer sur le message :
"Aucun département trouvé pour ce code postal."
En tout cas merci de cette proposition
Michel


"michdenis" a écrit dans le message de
news:
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
Exemple dans la cellule de la feuille de calcul, on voit 01090
mais le premier 0 relève du format de cellule mais pas de la donnée
contenue dans la cellule. En conséquence, tu dois saisir dans
le textbox 1090 qui est le "vrai" contenu de la cellule.

Il faut faire la différence entre le contenu et le format d'une cellule.



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

Ce que tu proposes est simplement *formidable*.
Cependant, pourquoi cela ne semble pas fonctionner pour les codes commençant
par 0 ?
Les tests que j'ai effectués semblent (je prends du recul car je ne les ai
pas tous effectués) me renvoyer sur le message :
"Aucun département trouvé pour ce code postal."
En tout cas merci de cette proposition
Michel


"michdenis" a écrit dans le message de
news:
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
Si tu préfères saisir le premier 0 du format dans
ton textbox, modifie cette section de la procédure
comme ceci dans la procédure générale.

'-----------------------
'Le critère basé sur la valeur du textbox.
If UserForm1.TextBox1 <> "" Then
Critère = UserForm1.TextBox1
If Left(Critère, 1) = "0" Then
Critère = Right(Critère, Len(Critère) - 1)
End If
Else
MsgBox "Remplissez d'abord de textbox."
Exit Sub
End If
'-----------------------



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

Exemple dans la cellule de la feuille de calcul, on voit 01090
mais le premier 0 relève du format de cellule mais pas de la donnée
contenue dans la cellule. En conséquence, tu dois saisir dans
le textbox 1090 qui est le "vrai" contenu de la cellule.

Il faut faire la différence entre le contenu et le format d'une cellule.



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

Ce que tu proposes est simplement *formidable*.
Cependant, pourquoi cela ne semble pas fonctionner pour les codes commençant
par 0 ?
Les tests que j'ai effectués semblent (je prends du recul car je ne les ai
pas tous effectués) me renvoyer sur le message :
"Aucun département trouvé pour ce code postal."
En tout cas merci de cette proposition
Michel


"michdenis" a écrit dans le message de
news:
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
Péhemme
mais le premier 0 relève du format de cellule mais pas de la donnée
contenue dans la cellule


Exact.

En conséquence, tu dois saisir dans
le textbox 1090 qui est le "vrai" contenu de la cellule.


Promis juré, je le ferai. ;-)

C'est formidable (tant pis si je me répète) Le remplissage de la combobox
est, en effet, instantané.

Il fût un temps où tu aurais eu droit à des cahuètes. De nos jours ce ne
sera qu'une brouette de mercis.

Mais encore merci à notre Modeste Gilbert pour sa contribution.

... un jour je me mettrai au VBA...
;-)
Bien amicalement
Michel





"michdenis" a écrit dans le message de
news:%23ZB$

Exemple dans la cellule de la feuille de calcul, on voit 01090
mais le premier 0 relève du format de cellule mais pas de la donnée
contenue dans la cellule. En conséquence, tu dois saisir dans
le textbox 1090 qui est le "vrai" contenu de la cellule.

Il faut faire la différence entre le contenu et le format d'une cellule.



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

Ce que tu proposes est simplement *formidable*.
Cependant, pourquoi cela ne semble pas fonctionner pour les codes
commençant
par 0 ?
Les tests que j'ai effectués semblent (je prends du recul car je ne les ai
pas tous effectués) me renvoyer sur le message :
"Aucun département trouvé pour ce code postal."
En tout cas merci de cette proposition
Michel


"michdenis" a écrit dans le message de
news:
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
Péhemme
Je n'ai pas le temps de dire merci que c'est encore mieux...
Et bien sûr, cela fonctionne du tonnerre.
Allez, un merci de plus.
Michel


"michdenis" a écrit dans le message de
news:
Si tu préfères saisir le premier 0 du format dans
ton textbox, modifie cette section de la procédure
comme ceci dans la procédure générale.

'-----------------------
'Le critère basé sur la valeur du textbox.
If UserForm1.TextBox1 <> "" Then
Critère = UserForm1.TextBox1
If Left(Critère, 1) = "0" Then
Critère = Right(Critère, Len(Critère) - 1)
End If
Else
MsgBox "Remplissez d'abord de textbox."
Exit Sub
End If
'-----------------------



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

Exemple dans la cellule de la feuille de calcul, on voit 01090
mais le premier 0 relève du format de cellule mais pas de la donnée
contenue dans la cellule. En conséquence, tu dois saisir dans
le textbox 1090 qui est le "vrai" contenu de la cellule.

Il faut faire la différence entre le contenu et le format d'une cellule.



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

Ce que tu proposes est simplement *formidable*.
Cependant, pourquoi cela ne semble pas fonctionner pour les codes
commençant
par 0 ?
Les tests que j'ai effectués semblent (je prends du recul car je ne les ai
pas tous effectués) me renvoyer sur le message :
"Aucun département trouvé pour ce code postal."
En tout cas merci de cette proposition
Michel


"michdenis" a écrit dans le message de
news:
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
Modeste
Bonsour® "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.



;o)))
j'utilise EXCEL 10.0
ou trouve-t-on et comment installe-ton le pilote ISAM ???
Avatar
michdenis
Bonjour,

Tu as une bonne question.

La version 10 est installé mais sur une autre partition.
Faut dire que je n'ai pas l'occasion de l'explorer
beaucoup...

Regarde là :
http://www.connectionstrings.com/excel



"Modeste" a écrit dans le message de groupe de discussion :
##Y$t#
Bonsour® "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.



;o)))
j'utilise EXCEL 10.0
ou trouve-t-on et comment installe-ton le pilote ISAM ???
Avatar
michdenis
Bonjour,

J'ai ouvert la partition Excel 2010.

J'obtiens le message : "Impossible de trouver le fournisseur, il est
peut-être mal installé."

J'ai téléchargé à nouveau MDAC 2.8 + service pack 1 .
Ça plante toujours. Je ferme le tout. Autre chose à faire que perdre mon
temps !

Bye.



"Modeste" a écrit dans le message de groupe de discussion :
##Y$t#
Bonsour® "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.



;o)))
j'utilise EXCEL 10.0
ou trouve-t-on et comment installe-ton le pilote ISAM ???
Avatar
Modeste
Bonsour® "michdenis"

J'ai ouvert la partition Excel 2010.

J'obtiens le message : "Impossible de trouver le fournisseur, il est
peut-être mal installé."

J'ai téléchargé à nouveau MDAC 2.8 + service pack 1 .
Ça plante toujours. Je ferme le tout. Autre chose à faire que perdre mon
temps !




merci !!!
grâce au lien précédent : http://www.connectionstrings.com/excel

remplacer :
'Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
par

Conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 12.0;HDR=YES;"""
Avatar
michdenis
OK. ça fonctionne ! Ça prenait juste un peu de patience !
;-)))

Dans le fichier publié, il faut remplacer YES par NO dans

Conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 12.0;HDR=YES;"""





"Modeste" a écrit dans le message de groupe de discussion :
#
Bonsour® "michdenis"

J'ai ouvert la partition Excel 2010.

J'obtiens le message : "Impossible de trouver le fournisseur, il est
peut-être mal installé."

J'ai téléchargé à nouveau MDAC 2.8 + service pack 1 .
Ça plante toujours. Je ferme le tout. Autre chose à faire que perdre mon
temps !




merci !!!
grâce au lien précédent : http://www.connectionstrings.com/excel

remplacer :
'Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
par

Conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 12.0;HDR=YES;"""
1 2 3