Filtre avancé sur plusieurs Plages

Dureux

XLDnaute Nouveau
Bonjour,

Voilà mon problème, je travaille sur un projet de création d'échéancier et de relance totalement automatisé. De ce fait j'ai automatisé mon échéancier et utiliser un filtre avancé afin de basculer les informations des personnes qui n'ont pas réglé leur facture sur mon tableau de relance.
Seulement je voudrais faire la même chose pour tout les échéancier ( Sachant qu'il y en aura un pour chaque mois de l'année) dans le même tableau de relance seulement je ne peux pas sélectionner plusieurs plage sachant que mes échéancier sont situer sur des feuilles différentes.
Je me suis donc intéresser au VBA afin de répondre à mon problème seulement je débute et je possède quelque soucis.
Vous pouvez trouver ci-joint mon dossier excel, ce n'est qu'une ébauche il ne possède donc que des données Fictive.

Je vous serais très reconnaissante de votre aide
 

Pièces jointes

  • TEST ECHEANCIER.xlsm
    54.6 KB · Affichages: 30

Calvus

XLDnaute Barbatruc
Bonjour Dureux et bienvenue sur le forum,

Voilà mon problème

Notre problème à nous, c'est que nous ne sommes pas devins...
Il est où ton filtre avancé ?
Et que veux tu mettre comme données sur la feuille relance ?
Il y a des champs, oui, mais en fonction de quel critère veux tu les remplir ?
Il n'y a même pas un exemple de ce que tu voudrais voir figurer sur la feuille relance, si c'est bien d'elle qu'il s'agit.

Complète un peu ton exemple et reviens vers nous.

Bonne journée.
 

Dureux

XLDnaute Nouveau
Je suis désolé je ne savais pas très bien comment illustrer cela. Mais voilà je vais essayer de mieux m'expliquer.
Mon filtre avancé est le suivant :
Je copie vers l'emplacement de mon tableau de relance les plages de mon échéancier ( je sélectionne toute les étiquettes de "Facture N°" à "dépassement" ) ma Zone de critères je l'ai placé à Annexe c'est "Réglée-Non" , et je copie le tout dans mon tableau de relance. J'ai donc enregistrer cela en tant que macro mais cela fonctionne uniquement sur un échéancier.
Car je voudrais effectuer ce filtre sur tout les feuilles "échéancier" puisqu'elles seront mensuelle afin de basculer les "non réglée" en relance.
J'avais donc essayer d'enregistrer une macro en effectuant le filtre avancé sur chaque feuille seulement cela m'efface les données précédemment enregistrement dans le tableau de relance.
Je vous ai donc rajouter ma macro avec le filtre avancé accompagné de commentaire pour essayer de mieux illustrer mon problème.
Je suis désolé du désagrément, en espérant que cela sera mieux illustrer... En attendant je m'intéresse de plus prêt aux VBA et essaye de régler cela par moi-même
 

Pièces jointes

  • TEST ECHEANCIER.xlsm
    58.9 KB · Affichages: 24

Calvus

XLDnaute Barbatruc
Re,

Alors c'est un peu l'usine à gaz le code, mais j'ai pas trouvé mieux !
Je ne suis pas très à l'aise avec les filtres..

ATTENTION : Il faut mettre le nombre de feuilles concernées en 1ère feuille, à partir de la cellue K16.
Elles ne peuvent pas dépasser le nombre de feuilles nommées Echéance, et doivent se trouver en début de classeur.
On peut évidemment améliorer cela, mais ta demande n'était pas très claire sur ce point.
En attendant, si tu dois ajouter des feuilles, il faudra les re-numéroter.
J'en ai ajouté 3 pour l'exemple.

Voici le code :
VB:
Sub FILTREAVANCE()
Application.ScreenUpdating = False
Dim cellule As Variant, plage As Range, i As Integer, Nbfeuilles As Integer
    Set plage = Feuil7.Range("A1", Feuil7.Range("G" & Rows.Count).End(xlUp)).Rows
        Nbfeuilles = Feuil1.Range("K16").CurrentRegion.Count
            For i = 1 To 1
                Sheets("RELANCE 1").Select
                Sheets(i).Range("A5").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets _
                    ("ANNEXE").Range("A1:A2"), CopyToRange:=plage, Unique _
                        :=False
            Next
            For i = 2 To Nbfeuilles
                cellule = Feuil7.Range("A" & Rows.Count).End(xlUp).Rows(2).Address
                Feuil7.Range("A1:K1").Copy Feuil7.Range(cellule)
                Sheets(i).Range("A5").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets _
                    ("ANNEXE").Range("A1:A2"), CopyToRange:=Range(cellule & ":G60"), Unique _
                        :=False
                Range(cellule).EntireRow.Delete
            Next
Application.ScreenUpdating = True
End Sub
Et le fichier.

A+
 

Pièces jointes

  • TEST ECHEANCIER.xlsm
    70.5 KB · Affichages: 37

Dureux

XLDnaute Nouveau
Bonjour Calvus,

Un grand merci pour ta réponse et pour ce code qui marche parfaitement, j'ai pu le retranscrire afin de l'essayer sur un autre fichier, et j'ai changer l'histoire de nombre de feuille concerné en le mettant en annexe plutôt qu'en première page afin que cela n'apparaissent pas et ça fonctionne parfaitement.
Alors merci beaucoup car tu me permets d'avancer dans mon Projet de BTS où cette macro me faisait ruminer pendant des heures.

Je te souhaite une Bonne journée :)
 

Dureux

XLDnaute Nouveau
Je reviens vers vous, car en travaillant un peu plus sur mon tableau il s'avère que le filtre m'efface des lignes, ainsi lorsque je déclenche la Macro les informations de relance tel que les numéros, les commentaire ect... ( Les 4 dernières colonnes du tableau ) s'effacent.
Y a t-il un moyen de faire en sorte que ces données ne puissent pas s'effacer?

Je joins mon Fichier avec la formule ect..

Merci de votre aide.
 

Pièces jointes

  • VBA TEST ECHEANCIER.xlsm
    70.4 KB · Affichages: 32

Discussions similaires

Réponses
16
Affichages
639

Statistiques des forums

Discussions
315 087
Messages
2 116 082
Membres
112 654
dernier inscrit
SADIKA