[Résolu] Critère filtre + Macro Chemin vers dossier

Brudy

XLDnaute Junior
Bonjour à vous tous,

J'ai réussis à trouver une macro de filtre élaboré qui me plait. Mais elle comporte un seul critère.

Je n'arrive pas à retranscrire la macro sur mon fichier.. alors pour en rajouter un deuxième :eek:

Est ce que quelqu'un pourrait me dire ce qui cloque sur mon fichier ?

(Il y'a plusieurs macro, une pour valider/trier par ligne réalisée par Theze, une autre macro enregistré pour enregistrer en pdf et la troisième, celle du tri)

Le code module :
VB:
Sub filtre()
Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"crit"), CopyToRange:=Range("extrait"), Unique:=False
Range("b3").Activate


End Sub

Code sur feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
       If Not Application.Intersect(Target, Range("b3")) Is Nothing Then
       Call filtre
       End If
End Sub
 

Pièces jointes

  • Fichier test xld.xlsm
    184.1 KB · Affichages: 49
Dernière édition:

Brudy

XLDnaute Junior
Bonjour Chris, merci pour ton apport

Pourtant cette macro fonctionne parfaitement dans un autre fichier, sur la condition d'une liste déroulante comme ci-dessous

J'adore le travail qui à été produit dans le fichier, une liste déroulante qui est le critère de recherche dans la base de donnée et affichage.

Cependant je n'arrive pas à la reporter dans mon fichier pour qu'elle fonctionne.. J'ai réussis à la reporter et à lancer un début de tri. Mais elle ne réagit pas du tout pareil, avec le même code ... o_O
 

Pièces jointes

  • filtreAutreFeuille.xls
    42.5 KB · Affichages: 35
Dernière édition:

Modeste

XLDnaute Barbatruc
Bonjour Brudy,

Pour utiliser une macro qui applique un filtre avancé, il faut s'assurer qu'on respecte bien les exigences du filtre en question: dans le tableau de départ, dans la zone de critères et dans la zone où on va extraire, les titres des colonnes doivent être repris à chaque fois (et ils doivent être identiques, mais ça c'était correct!)
Il faut aussi veiller à ce que les plages nommées (auxquelles on fait référence dans le code) soient définies correctement et qu'on utilise le bon nom dans le code. Je n'en ai pas fait le relevé, mais il y avait plusieurs erreurs.
Certaines plages nommées ne sont connues que dans la feuille où elles figurent. Je les redéfinies pour qu'elle soient connues dans tout le classeur.
Ce que je te propose, c'est de tester la pièce jointe et, si le résultat te semble correct, aller voir quelles sont les plages nommées utilisées dans le code, puis vérifier dans le gestionnaire de noms à quelles plages elles font référence.

[Edit:] Ouarfff, presque pas en retard, moi!
 

Pièces jointes

  • Filtre avancé (Brudy).xlsm
    250.9 KB · Affichages: 48

Brudy

XLDnaute Junior
mmh.. Alors la.

Tu as carrément devancé ma question ! Merci. Par contre je vois pas trop ce que tu as fait, tu à modifié tout mes noms définis sur classeur ?

Je comprend pas pourquoi avec ton fichier et la redéfinition de la Macro, cela marche avec un critère.

Je vais essayer avec deux maintenant, mais je ne sais pas comment l'intégrer à ma macro ? Ajouter mon critère simplement à ma plage nommée ?
VB:
Sub filtre()
Range("Base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"Crit"), CopyToRange:=Range("Extraire"), Unique:=False
Range("F8").Activate
End Sub

edit : Le deuxième critère n'est absolument pas pris en compte, j'imagine que je dois créer une nouvelle action, si quelqu'un pouvais m'expliquer ça serait awesome
 
Dernière édition:

chris

XLDnaute Barbatruc
RE
Bise à Modeste :)

Bonjour Chris, merci pour ton apport

Pourtant cette macro fonctionne parfaitement dans un autre fichier, sur la condition d'une liste déroulante comme ci-dessous

J'adore le travail qui à été produit dans le fichier, une liste déroulante qui est le critère de recherche dans la base de donnée et affichage.

Cependant je n'arrive pas à la reporter dans mon fichier pour qu'elle fonctionne.. J'ai réussis à la reporter et à lancer un début de tri. Mais elle ne réagit pas du tout pareil, avec le même code ... o_O

Dans ce fichier Crit ecorrespond à B2:B3 soit deux cellules, idem pour crit2

Dans le premier Crit1 et Crit2 correspondent chacun à une seule cellule donc Excel n'a aucun moyen de deviner dans quelle colonne il doit chercher Plaintel Raussan
 

Modeste

XLDnaute Barbatruc
Re,

Il ne faut pas "foncer tête baissée", mais prendre le temps de relever les différences au niveau des noms de plages utilisés et ce à quoi elles renvoient (par exemple, la plage "crit" que tu viens de renseigner dans les 3 lignes de code n'existe plus dans mon fichier, j'entends !!)
Ne t'intéresse pour le moment qu'à ces trois lignes: on verra par la suite comment faire en sorte que la macro s'exécute au changement de valeur en F8:G8 (les cellules fusionnées en G7:H7 sont à éviter)
À ce stade, tu peux renseigner les 2 critères ou un seul.

Bise aussi, chris :)
 

Brudy

XLDnaute Junior
Merci encore de vos réponse modeste et Chris,

Je m'excuse si je semble foncer tête baissée mais ce n'est pas le cas, j'ai un nombre de fichier test incalculable et entre mon premier fichier posté ici et vos réponse, j'ai déjà ajusté 25 fois le fichier o_O Il est possible que je m'y perde, notamment quand je colle une macro :'(

Donc ici le code qui fonctionne correctement et que j'utilise :
VB:
Sub filtre()
Range("Base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"Crit"), CopyToRange:=Range("Extraire"), Unique:=False
' toutes les données sont correctes ici
Range("F8").Activate
End Sub

J'ai donc ajusté mes plages avec les noms adéquats, retiré la fusion des cellules en G et H7. testé si des créations de feuilles modifierais l'action du code (ce n'est pas le cas) et voici mon fichier fonctionnel à une condition.

Le code tri correctement selon l'entrepot et les données s'enlevent quand je change d'entrepot.
 

Pièces jointes

  • Version 3.0 (Macro 1crit ok).xlsm
    244.7 KB · Affichages: 40
Dernière édition:

Brudy

XLDnaute Junior
Salut Bebere, re Modeste.

Je veux bien passer ma plage "crit" en F7:G8, mais elle créer une erreur dans ma macro, quand j'essaye de trier via "Entrepot" erreur 1004, Range de l'objet global à échoué'

Et le critère semaine n’entraîne aucune réaction de la macro

Rectification 15h40, je ne sais pourquoi mais ma macro avait modifiée la plage à prendre en compte.
Donc merci beaucoup modeste, la macro prend enfin en compte les 2 critères...

Je vous laisse voir par vous même le fichier

Le critère "Semaine" n’entraîne pas l'action de tri, seul le critère entrepot entraîne un tri.
J'ai switché dans la macro pour garder un sens logique, sélection Entrepot, selection semaine puis Tri.
 

Pièces jointes

  • Version 3.0 (Macro 1crit ok).xlsm
    246.3 KB · Affichages: 49
Dernière édition:

Modeste

XLDnaute Barbatruc
Bonsoir,

ça vaut ce que ça vaut, mais tu peux aussi adapter le code de l'objet Feuil14, pour que le filtre se déclenche -au choix- à la modification de F8 ou G8.
La seule modif à faire au niveau de la Sub Worksheet_Change est
Code:
If Not Application.Intersect(Target, Range("F8:G8")) Is Nothing Then
 

Brudy

XLDnaute Junior
Merci beaucoup Modeste, ça fonctionne parfaitement,

A tout hasard, si tu passes par ici de bon matin,

Mon code enregistre en pdf, au bon nom (Les critères de recherche) , mais il ne suit pas le chemin que je lui est indiqué..

VB:
Sub Macro1()
'
' Macro1 Macro
'

'
    Sheets("Envoi").Select
    Sheets("Envoi").Copy
   
     Chemin = "C:\Users\ybruzac\Desktop\Récap Entrepot"
    texte = Range("entrepot") & " - " & Range("semaine")
    Application.DisplayAlerts = False
   
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & texte, Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    ActiveWindow.Close

End Sub
 

Discussions similaires

Réponses
7
Affichages
321

Statistiques des forums

Discussions
312 201
Messages
2 086 174
Membres
103 152
dernier inscrit
Karibu