Tri et classement par mois

Bonjour,

sur le fichier ci-joint, grâce à une macro, je récupère des données depuis d'autres fichiers. Tout ça fonctionne (macro récap).

Une fois ces données récupérer sur la feuille 2012, je voudrais que la macro me copie les lignes en fonction de la date en G. Toutes les lignes avec une date en janvier en G sont copiées à l'identique sur la feuille JANVIER du même classeur, toutes celles avec une date en février en G sont copiées sur la feuille FEVRIER et ainsi de suite.

Les données de la feuille 2012 peuvent évoluer et être modifiées mais pas la date en G. Autrement dit, si une ligne est copiée en JANVIER mais que des cellules sont modifiées, je voudrais que la ligne précédemment copiée soit remplacée par la nouvelle. Ou plus simple, toutes les feuilles mois sont effacées à chaque lancement de la macro et tout ce qui est sur la feuille 2012 est redispatché comme souhaité ci-dessus.

J'espère avoir été clair car je sèche totalement.

Merci par avance pour votre aide.

Bonjour,

à noter que l'on aurait pu filtrer directement le mois avec une liste déroulante,

ce qui aurait éviter les 12 feuilles !

Sub FiltreMois() 'colonne "G"
Dim i%, f As Worksheet
    Application.ScreenUpdating = False
    Set f = Sheets("2012")
    For i = 2 To 13                             'feuilles
        f.Range("ae2") = "=MONTH(g3)=" & i - 1  'critère"
        f.Range("a2:x" & f.[a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
        f.Range("ae1:ae2"), CopyToRange:=Sheets(i).Range("a2:x2"), Unique:=False
    Next
        f.Range("ae2").ClearContents
End Sub

Amicalement

Claude

191matt31-filtremois.zip (35.79 Ko)

Bonjour et un grand merci c'est exactement ça.

Juste une petite demande en plus, je souhaiterais sur le tri par mois garder exactement la même mise en page que sur la feuille 2012 (couleur des cellules, menus déroulants...)

Encore merci

Bonjour,

Le plus simple pour conserver les mises en page et listes Validation,

1) tu supprime les feuilles sauf 2012

2) tu formate 2012 comme tu veux (figer les volets en B3 pour garder le nom visible)

3) tu copie 12 fois cette feuille (en supprimant le bouton)

4) il te reste plus qu'à renommer les feuilles

Le 1er coup de macro réactualisera les données.

Bonne journée

Claude

je te remercie mais le problème est que cela va faire la même mise en page que sur quelques lignes or le nombre de lignes n'est jamais le même (je dois 30 fichiers identiques à celui-ci) et la feuille 2012 va évoluer au fil de l'année. avec un nombre différent pour chaque autre feuille.

N'est-il pas possible d'insérer dans la macro une collage en gardant la mise en forme?

Encore merci pour ton aide

re,

Il faudrait déjà que la feuille 2012 soit bien formatée (au niveau des MFC)

ce qui n'est pas le cas !

reprend colonne par colonne, normalement tu ne devrait avoir que 3 règles

Exemple en L3

régler le "s'applique à:" => $L$3:$L$1000

ensuite, tu peux copier la ligne 3 et Collage/Spécial/Format jusqu'à la ligne 1000

Une fois la feuille 2012 bien formatée, tu fais comme je disais sur mon message précédent.

Claude

le problème est que les données de la feuille 2012 proviennent déjà d'une copie de 52 fichiers semaines d'autres classeurs.

Cette feuille 2012 ne va pas comporter 1000 lignes mais environ 30000.

Je ne sais pas absolument pas combien il y aura de lignes par mois. Cela peut aller de 500 à 2000. Faire cette mise en forme sur le fichier de base alourdit considérablement celui-ci et je me retrouve avec des lignes vides avec cette mise en forme mais inutiles.

re,

essaye avec cette macro, on recopie le format de la ligne 3,

mets sur cette ligne une bordure fine en haut.

Sub FiltreMois() 'colonne "G"
Dim i%, Lg&, f As Worksheet
    Application.ScreenUpdating = False
    Set f = Sheets("2012")
    For i = 2 To 13                                         'feuilles
      With Sheets(i)
        Lg = .Range("a" & Rows.Count).End(xlUp).Row + 1
        .Rows(3 & ":" & Lg).Delete                          'supprime lignes
        f.Range("ae2") = "=MONTH(g3)=" & i - 1              'critère"
        f.Range("a2:x" & f.[a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
        f.Range("ae1:ae2"), CopyToRange:=.Range("a2:x2"), Unique:=False
        Lg = .Range("a" & Rows.Count).End(xlUp).Row + 1
        f.Rows(3).Copy
        .Rows(3 & ":" & Lg).PasteSpecial Paste:=xlPasteValidation
        .Rows(3 & ":" & Lg).PasteSpecial Paste:=xlPasteFormats
      End With
    Next
        f.Range("ae2").ClearContents
End Sub

J'insiste, tu n'aurais pas ces problèmes avec seulement la feuille 2012 (avec choix mois)

Claude

je te remercie et j'aurais une dernière question.

Lors du tri par mois et du copiage sur la feuille correspondante, cela affecte toutes les colonnes. Je voulais mettre un calcul de différentes statistiques sur les colonnes à partir de AA mais le copiage efface tout.

Est-il possible de limiter la zone de copie et d'effacement aux colonnes A à X?

En ne faisant qu'un choix mois sur la feuille 2012, je suis trop limité pour les différentes statistiques à faire. Il me faut le nombre de courriers manquants et leur type sur chaque mois, le nombre d'actes, le nombre de différents problèmes logiciels, le délai de traitement moyen...

re,

Je voulais mettre un calcul de différentes statistiques sur les colonnes à partir de AA mais le copiage efface tout.

Quel genre de formules ?

envoie un exemple de ligne

Voilà ce que je voudrais avoir sur la feuille de janvier et qui disparait. La mise en forme est quelque chose qui m'est imposé. mais pour éviter de créer 12 feuilles de plus, j'aimerais l'insérer juste à côté.

J'ai dû supprimer dans ce fichier les feuilles des mois de février à décembre sinon le fichier était trop volumineux. Je mets donc le fichier (copie 2) avec toutes les feuilles mois mais sans les stats pour éviter de toucher à la macor et faire un test en copiant simplement la page.

Encore une fois merci de ton aide

re,

La macro traite les colonnes A:X et ne touche pas au reste,

j'en ai profiter pour ajuster les largeurs colonnes suivant 2012

à voir

Claude

je te remercie, c'est impeccable ça fonctionne exactement comme je le voulais. Félicitations et encore un grand merci

Rechercher des sujets similaires à "tri classement mois"