Problème filtre élaboré

Résolu/Fermé
jeepipy Messages postés 70 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 août 2023 - 6 oct. 2018 à 07:44
jeepipy Messages postés 70 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 août 2023 - 12 oct. 2018 à 08:42
Bonjour,

J'utilise un filtre élaboré avec 3criteres mais l'extraction ne restitue pas complétement les données. Celle ci semble filtrée sur un quatrième critère que je n'ai pas demandé.
Auriez-vous une piste svp?
Merci par avance.
A voir également:

13 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
6 oct. 2018 à 11:08
Bonjour,

Question: Lorsque vous sélectionnez la zone à filtrer, êtes-vous sûr qu'il n'y ait pas une colonne masquée?

Cdlt
0
jeepipy Messages postés 70 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 août 2023 155
6 oct. 2018 à 19:46
bonjour Frenchie,

je confirme qu'aucune colonne est masquée.
l extraction se fait sur une modalité de la 4e variable puis quand je relance l extraction se fait sur une autre modalité de la même variable.
0
yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 Ambassadeur 1 551
7 oct. 2018 à 13:51
bonjour, peux-tu partager ton fichier?
0
Raymond PENTIER Messages postés 58726 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 novembre 2024 17 242
7 oct. 2018 à 17:40
Bonjour jeepipy.

Qu'appelles-tu "modalité" ?
Pourquoi ne pas joindre un fichier, comme d'habitude ? C'est plus facile pour tout le monde : celui qui expose son problème, ceux qui proposent des solutions.
 1) Tu vas dans https://www.cjoint.com/ 
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
5) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".
=>Voir la fiche https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeepipy Messages postés 70 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 août 2023 155
8 oct. 2018 à 06:46
Bonjour,

je vous remercie de vos réponses.
J'entends par "modalité" les valeurs différentes d'une variable.
Désolé de ne pas avoir joint le fichier mais je ne connaissais pas la procédure.
Malheureusement je ne peux le faire de suite car le serveur de mon travail bloque le lien "http://cjoint.com/ "
Je vais essayer de chez moi ce soir.
Vous trouverez déja mon code:



Option Explicit
Dim chemin, liste_pni As String
Dim Wbk As Workbook
Dim i, j, der_lig As Integer
Public der_col, nb_siret, k As Integer
Dim MyArea As String
Public liste_siret As Variant

Sub tdb()
Application.ScreenUpdating = False
Application.DisplayAlerts = False


Call base
Call siret

For k = 2 To 6 '1ere ligne correspond aux intitulés donc on commence à la 2è ligne

Call filtre(k)
Next

Application.DisplayAlerts = False
Sheets(Array("maquette", "export")).Delete
Range("A1").Select

Application.DisplayAlerts = True
Application.Quit
End Sub





Sub base()

Sheets("export").Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
der_col = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
Range(Selection, Selection.End(xlDown)).Select
der_lig = Range("A" & Rows.Count).End(xlUp).Row
MyArea = "=export!R1C1:R" & der_lig & "C" & der_col
ActiveWorkbook.Names.Add Name:="base", RefersToR1C1:=MyArea
End Sub

' Liste siret

Sub siret()
Dim base2 As Variant
Sheets("export").Select
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Name = "base2"

'nettoyage de la zone
Range("ZA1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Clear


Range("A1:D50000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
"ZA1"), Unique:=True

nb_siret = Range("ZA2").End(xlDown).Row - 1


'Tri par siret croissant
Range("ZA2:ZD" & nb_siret + 1).Select
Selection.Sort Key1:=Range("ZA2:ZD" & nb_siret + 1), Order1:=xlAscending
Selection.Name = "liste_pni"

' liste siret
Range("ZA2:ZA" & nb_siret + 1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
"ZZ1"), Unique:=True

Range("ZZ2:ZZ" & nb_siret + 1).Name = "liste_siret"


End Sub

'remplissage de la maquette
Sub filtre(k As Integer)

Application.ScreenUpdating = False
Sheets("Maquette").Copy After:=Sheets("export")
ActiveSheet.Name = "siret_" & Sheets("export").Range("ZA" & k) & Sheets("export").Range("ZC" & k)

Dim feuille_siret As String
feuille_siret = ActiveSheet.Name
Range("base").Rows("1:1").Copy
ActiveSheet.Select
Range("AB2").Select
ActiveSheet.Paste

Range("Y1") = "DC_LBLETTDT"
Range("Z1") = "Type"
Range("AA1") = "SIRET"

Range("AA2") = Sheets("export").Range("ZA" & k) 'DT
Range("Y2") = Sheets("export").Range("ZB" & k) 'Type
Range("Z2") = Sheets("export").Range("ZC" & k) 'siret

Sheets(feuille_siret).Select
Range("Y1:AA2").Select
Dim crit, extr As Range
Set crit = Sheets(feuille_siret).Range("Y1:AA2")
Set extr = Sheets(feuille_siret).Range(Cells(2, 28), Cells(2, 28 + der_col - 1))
'Application.CutCopyMode = False
'zone de criteres
' ActiveWorkbook.Names.Add Name:="crit", RefersTo:= _
' "='" & Sheets(feuille_siret).Name & "'!R1C27:R2C27"
ActiveWorkbook.Names.Add Name:="crit", RefersTo:=crit

'zone d'extraction
Range("AB2").Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveWorkbook.Names.Add Name:="extr", RefersTo:=extr

'filtre
Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("crit"), CopyToRange:=Range("extr"), Unique:=True



End Sub



Je vous remercie.

Bonne journéE.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
8 oct. 2018 à 08:10
Bonjour,

Je vois un filtre élaboré dans la Sub "Siret", et je constate que vous prenez bien 4 colonnes (de A à D), donc 4 critères:

    Range("A1:D50000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("ZA1"), Unique:=True


Est-ce bien là votre problème?

Cdlt
0
jeepipy Messages postés 70 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 août 2023 155
8 oct. 2018 à 08:27
Bonjour Frenchie,

je m'excuse de ne pas avoir précisé mais c'est le dernier filtre qui ne fonctionne pas:

Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("crit"), CopyToRange:=Range("extr"), Unique:=True

Cordialement
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
8 oct. 2018 à 09:14
D'après ce que je crois comprendre, l'erreur se situe ici
    Set crit = Sheets(feuille_siret).Range("Y1:AA2")


les critères sont uniquement en ligne 1
    Set crit = Sheets(feuille_siret).Range("Y1:AA1")


Quelle est l'utilité de ces 3 lignes? Si elles n'existent pas, ça fonctionne aussi, non?
Range("AA2") = Sheets("export").Range("ZA" & k) 'DT
Range("Y2") = Sheets("export").Range("ZB" & k) 'Type
Range("Z2") = Sheets("export").Range("ZC" & k) 'siret


Essayez
0
jeepipy Messages postés 70 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 août 2023 155
8 oct. 2018 à 11:46
Set crit = Sheets(feuille_siret).Range("Y1:AA2") me prend qu'une seule occurence de l'extraction attendue

Set crit = Sheets(feuille_siret).Range("Y1:AA1") me prend toute la base sans filtre et ce n'est pas ce que j'attends.

Les 3 lignes sont juste là pour moi, pour me repérer.

Merci en tout cas Frenchie.
0
Le Pingou Messages postés 12197 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 20 novembre 2024 1 450
9 oct. 2018 à 11:53
Bonjour,
Je pense que sans le fichier c'est presque impossible de trouver la petite défaillance dans le code.
https://www.cjoint.com/
0
jeepipy Messages postés 70 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 août 2023 155
9 oct. 2018 à 19:00
vous trouverez ci joint le lien vers mon fichier.

https://www.cjoint.com/c/HJjq7fxpiGp

Merci de votre aide
0
Le Pingou Messages postés 12197 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 20 novembre 2024 1 450
9 oct. 2018 à 22:15
Bonjour,
Je suis absent mercredi tout le jour, reprise jeudi. Patience.
0
yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 1 551
9 oct. 2018 à 22:45
à ton tour d'expliquer comment provoquer l'anomalie.
0
Le Pingou Messages postés 12197 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 20 novembre 2024 1 450
Modifié le 10 oct. 2018 à 09:55
Bonjour yg_be,
C'est bien dommage que nous ne profitons pas de la votre.
0
yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 1 551
10 oct. 2018 à 22:00
jeepipy, c'est bien d'avoir partagé ton fichier, on peut maintenant progresser. explique-nous maintenant comment provoquer le comportement inattendu que tu as observé.
0
jeepipy Messages postés 70 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 août 2023 155
11 oct. 2018 à 05:36
Bonjour à tous,

je tiens à m'excuser mais je n'ai pas optimisé au mieux mon fichier pour que vous le testiez correctement.
Je vais le refaire mais mon problème brièvement est que les extractions faites par les filtres ne restituaient pas les différents 'pni'. Ils n'extrayaient que les observations pour un seul 'pni'.
Là en testant, je constate que le filtre fonctionne correctement.
Néanmoins j'ai énormément allégé le nombre de variables (120 variables dans mon fichier initial).
Je reste ouvert à vos suggestions.

je vous remercie.

Cordialement.
0
yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 1 551
11 oct. 2018 à 21:45
si tout va bien, peux-tu marquer le sujet comme résolu, via la roue dentée à droite du titre?
0
jeepipy Messages postés 70 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 août 2023 155
12 oct. 2018 à 08:42
Merci, je ne savais pas.
0
jeepipy Messages postés 70 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 août 2023 155
12 oct. 2018 à 08:42
Merci à tous.
Mon problème provenait d'un espace dans certaines modalités.
0