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

8 réponses

1 2 3
Avatar
Modeste
Bonsour® "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 = CStr(CDbl(UserForm1.TextBox1))

Else
MsgBox "Remplissez d'abord de textbox."
Exit Sub
End If
'-----------------------
Avatar
michdenis
| Critère = CStr(CDbl(UserForm1.TextBox1))

L'idée est intéressante...
Ceci demande une gestion d'erreur à moins que le formulaire
et en particulier ce textbox soit doté d'une procédure ne permettant
que la saisie de chiffre (0 -9)... sinon c'est le plantage assuré.
Avatar
Jacky
Bonjour,

Un peu tard; mais pourquoi pas avec 2 combobox ??
http://www.cijoint.fr/cjlink.php?file=cj201004/cijccNHQal.xls


--
Salutations
JJ


"Péhemme" a écrit dans le message de news: 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®

"Jacky" a écrit
Un peu tard...


;o)))
autre proposition :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Worksheets(1).Range("B6:B65000")
Set c = .Find(Me.TextBox1.Value, LookIn:=xlValues)
If Not c Is Nothing Then
Me.ComboBox1.Clear
firstAddress = c.Address
Do
Me.ComboBox1.AddItem (c.Offset(0, -1))
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
Else
MsgBox "pas de code postal : " & Me.TextBox1.Value
End If
End With

End Sub
Avatar
Jacky
Re...
Oui, mais faut entrer le code postal à la mimine..et savoir s'il existe.
Je pense qu'avec un 2ème combo c'est plus conviviale, non ?
:o))
--
Salutations
JJ


"Modeste" a écrit dans le message de news:
Bonsour®

"Jacky" a écrit
Un peu tard...


;o)))
autre proposition :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Worksheets(1).Range("B6:B65000")
Set c = .Find(Me.TextBox1.Value, LookIn:=xlValues)
If Not c Is Nothing Then
Me.ComboBox1.Clear
firstAddress = c.Address
Do
Me.ComboBox1.AddItem (c.Offset(0, -1))
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
Else
MsgBox "pas de code postal : " & Me.TextBox1.Value
End If
End With

End Sub
Avatar
Modeste
Bonsour® "Jacky" a écrit
Re...
Oui, mais faut entrer le code postal à la mimine..et savoir s'il existe.
Je pense qu'avec un 2ème combo c'est plus conviviale, non ?
:o))



je suis entièrement d'accord avec toi... ( 1/36700)
d'ailleurs cette combo pourrait être elle-même alimentée à partir d'une
autre combo permettant de choisir le département ...
Non ??? (1/98)
;o)))
Avatar
Jacky
Re..
Certes oui..
Car en l'état, c'est l'équivalent d'un filtre automatique directement sur la feuille

--
Salutations
JJ


"Modeste" a écrit dans le message de news:
Bonsour® "Jacky" a écrit
Re...
Oui, mais faut entrer le code postal à la mimine..et savoir s'il existe.
Je pense qu'avec un 2ème combo c'est plus conviviale, non ?
:o))



je suis entièrement d'accord avec toi... ( 1/36700)
d'ailleurs cette combo pourrait être elle-même alimentée à partir d'une autre combo permettant de choisir le
département ...
Non ??? (1/98)
;o)))
Avatar
Jacky
Re...
... c'est l'équivalent d'un filtre automatique ..
Erreur de ma part, cette affirmation est fausse.
Le fiftre automatique n'affiche de quelques 6900 items et des brouettes.

--
Salutations
JJ


"Jacky" a écrit dans le message de news:
Re..
Certes oui..
Car en l'état, c'est l'équivalent d'un filtre automatique directement sur la feuille

--
Salutations
JJ


"Modeste" a écrit dans le message de news:
Bonsour® "Jacky" a écrit
Re...
Oui, mais faut entrer le code postal à la mimine..et savoir s'il existe.
Je pense qu'avec un 2ème combo c'est plus conviviale, non ?
:o))



je suis entièrement d'accord avec toi... ( 1/36700)
d'ailleurs cette combo pourrait être elle-même alimentée à partir d'une autre combo permettant de choisir
le département ...
Non ??? (1/98)
;o)))




1 2 3