Epsilon-Browser | Quest (2017) | baba ghanoush
Menu

Problème filtre élaboré [Résolu]

jeepipy 52 Messages postés samedi 9 janvier 2010Date d'inscription 12 octobre 2018 Dernière intervention - 6 oct. 2018 à 07:44 - Dernière réponse : jeepipy 52 Messages postés samedi 9 janvier 2010Date d'inscription 12 octobre 2018 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

19 réponses

Frenchie83 1833 Messages postés lundi 6 mai 2013Date d'inscription 15 octobre 2018 Dernière intervention - 6 oct. 2018 à 11:08
0
Merci
Bonjour,

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

Cdlt
Commenter la réponse de Frenchie83
jeepipy 52 Messages postés samedi 9 janvier 2010Date d'inscription 12 octobre 2018 Dernière intervention - 6 oct. 2018 à 19:46
0
Merci
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.
Commenter la réponse de jeepipy
yg_be 6660 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 octobre 2018 Dernière intervention - 7 oct. 2018 à 13:51
0
Merci
bonjour, peux-tu partager ton fichier?
Commenter la réponse de yg_be
Raymond PENTIER 47284 Messages postés lundi 13 août 2007Date d'inscriptionContributeurStatut 15 octobre 2018 Dernière intervention - 7 oct. 2018 à 17:40
0
Merci
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 http://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 http://retlehen30.org/faq/29493-utiliser-cjoint
Commenter la réponse de Raymond PENTIER
jeepipy 52 Messages postés samedi 9 janvier 2010Date d'inscription 12 octobre 2018 Dernière intervention - 8 oct. 2018 à 06:46
0
Merci
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.
Commenter la réponse de jeepipy
Frenchie83 1833 Messages postés lundi 6 mai 2013Date d'inscription 15 octobre 2018 Dernière intervention - 8 oct. 2018 à 08:10
0
Merci
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
Commenter la réponse de Frenchie83
jeepipy 52 Messages postés samedi 9 janvier 2010Date d'inscription 12 octobre 2018 Dernière intervention - 8 oct. 2018 à 08:27
0
Merci
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
Commenter la réponse de jeepipy
Frenchie83 1833 Messages postés lundi 6 mai 2013Date d'inscription 15 octobre 2018 Dernière intervention - 8 oct. 2018 à 09:14
0
Merci
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
Commenter la réponse de Frenchie83
jeepipy 52 Messages postés samedi 9 janvier 2010Date d'inscription 12 octobre 2018 Dernière intervention - 8 oct. 2018 à 11:46
0
Merci
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.
Commenter la réponse de jeepipy
Le Pingou 9332 Messages postés mercredi 11 août 2004Date d'inscriptionContributeurStatut 14 octobre 2018 Dernière intervention - 9 oct. 2018 à 11:53
0
Merci
Bonjour,
Je pense que sans le fichier c'est presque impossible de trouver la petite défaillance dans le code.
http://cjoint.com/
Commenter la réponse de Le Pingou
jeepipy 52 Messages postés samedi 9 janvier 2010Date d'inscription 12 octobre 2018 Dernière intervention - 9 oct. 2018 à 19:00
0
Merci
vous trouverez ci joint le lien vers mon fichier.

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

Merci de votre aide
Le Pingou 9332 Messages postés mercredi 11 août 2004Date d'inscriptionContributeurStatut 14 octobre 2018 Dernière intervention - 9 oct. 2018 à 22:15
Bonjour,
Je suis absent mercredi tout le jour, reprise jeudi. Patience.
yg_be 6660 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 octobre 2018 Dernière intervention - 9 oct. 2018 à 22:45
à ton tour d'expliquer comment provoquer l'anomalie.
Le Pingou 9332 Messages postés mercredi 11 août 2004Date d'inscriptionContributeurStatut 14 octobre 2018 Dernière intervention - 10 oct. 2018 à 09:53
Bonjour yg_be,
C'est bien dommage que nous ne profitons pas de la votre.
yg_be 6660 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 octobre 2018 Dernière intervention - 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é.
Commenter la réponse de jeepipy
jeepipy 52 Messages postés samedi 9 janvier 2010Date d'inscription 12 octobre 2018 Dernière intervention - 11 oct. 2018 à 05:36
0
Merci
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.
yg_be 6660 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 octobre 2018 Dernière intervention - 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?
jeepipy 52 Messages postés samedi 9 janvier 2010Date d'inscription 12 octobre 2018 Dernière intervention - 12 oct. 2018 à 08:42
Merci, je ne savais pas.
Commenter la réponse de jeepipy
jeepipy 52 Messages postés samedi 9 janvier 2010Date d'inscription 12 octobre 2018 Dernière intervention - 12 oct. 2018 à 08:42
0
Merci
Merci à tous.
Mon problème provenait d'un espace dans certaines modalités.
Commenter la réponse de jeepipy