Auto-copier/coller les données d'une période

Bonjours à tous,

Je viens vous voir car j'ai une requête à vous faire.

J'ai un fichier avec une liste de donnée (+ de 3000) classées selon la date de commande. Le problème c'est que le logiciel me les donne toutes les unes à la suite des autres depuis la première commande.

j'ai donc créer un fichier excel pour les classer année par année (un onglet par moi; et un classeur par année).

Un classeur se présente avec une page contenant la liste des commandes (que je colle); un onglet par mois; et un onglet dans lequel je renseigne les périodes pour chaque onglet. Par exemple, pour le mois de janvier, je note la date de début de période et la date de fin de période. J'aimerais qu'automatiquement les données correspondantes soient copiées à partir de la loooongue liste, puis collées dans l'onglet correspondant.

Je ne sais pas si j'ai réussi à vous faire comprendre ce que je veux dire :s,

En tout cas je vous suis reconnaissant de l'attention que vous me porterez

Merci d'avance et à bientôt

25classeur-v1-xls.zip (114.61 Ko)

Enfin, moi j'ai pensé faire de cette manière pour le copier/collé (peut être pour les filtres élaborés … ?) ; mais si vous avez une autre manière de faire, je suis tout autant preneur !

Personne ne peux m'aider ?

Pour le moment j'utilise un filtre automatique personnalisé (avec les critères supérieur ou égal à la date de début de période, et inférieur ou égal à la date de fin de période). Le problème est que c'est très long à faire dans le cadre d'une gestion quotidienne...

Mais c'est quelque chose du même genre, mais en automatisé, que je cherche :/

Bonjour,

Tu n'es pas obligé de faire un onglet par mois,

on saurait filtrer (filtre élaboré) par mois ou autre

veux-tu qu'on regarde dans ce sens ?

Amicalement

Claude

Salut,

Si, je fais un onglet par mois, car c’est une contrainte qui m’est imposée (il y a des opérations après …).

En fin de compte, j’ai fait avec l’enregistreur de macro, bidouillé plus ou moins (^^’). Par contre, ça me fait une macro par mois, mais en fin de compte c’est pas plus mal et ça m’arrange même !

Désolé du dérangement. Encore merci à bientôt

Bonjour,

en une seule macro

la feuille "Janvier" doit être placée en 3ème position

et tous les en-têtes identiques.

Sub FiltreMois()
Dim Lg%, i%
'--- le mois de janvier doit être placé en 3ème position (onglets) ---

    Application.ScreenUpdating = False
    Lg = Range("a65536").End(xlUp).Row

    For i = 1 To 12
        Range("z2") = "=month(c2)=" & i & "" 'critère
        Range("a1:v" & Lg).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
        Range("z1:z2"), CopyToRange:=Sheets(i + 2).Range("a1:v1"), Unique:=False
    Next i
End Sub

Amicalement

Claude

Merci Claude pour ta macro, mais elle me fait un débogage sur les lignes

Range("a1:v" & Lg).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
        Range("z1:z2"), CopyToRange:=Sheets(i + 2).Range("a1:v1"), Unique:=False

J'espère que c'est pas moi qui ait fait quelque chose de faux

Bonsoir,

Il faut mettre une en-tête à la 1ère colonne "A" (n'importe quoi)

copier cette ligne sur toutes les feuilles (pour être sûr qu'elles soit identiques)

Claude

alors c'est vrais que j'ai complètement oublié de le dire (désolé :s); mais je ne veux que les mois d'une année précise (par exemple 2010). J'ai rentré 2010 en C8 sur la page "Menu".

Est ce que c'est possible de rajouter une condition comme celle la?

(genre un truc comme ça ?)

Dim an As Integer
an = Sheets("Menu").Range("C8").Value
If Year(cel.Value) = an

Je sais pas si c'est la fatigue, mais j'arrive pas a comprendre comment faire marcher la macro, est ce que tu pourrais me dire ce que j'ai fait de mal s'il te plait ?

22classeur-v1-xls.zip (111.79 Ko)

Bonsoir,

J'ai rentré 2010 en C8 sur la page "Menu".

Il n'y a pas de page "Menu" sur ton fichier, je présume que tu veux dire la feuille "Page"

donc sur la feuille "Page" en "C8",

tu écris 2010 au format standard

tu fais un bouton et tu lui affecte la macro (code à placer dans un module)

Sub FiltreMoisAn()
Dim Lg%, i%
'--- le mois de janvier doit être placé en 3ème position (onglets) ---
        Application.ScreenUpdating = False
    With Sheets("Commandes")
        Lg = .Range("a65536").End(xlUp).Row
        For i = 1 To 12
            .Range("z2") = "=AND(YEAR(c2)=Page!c8,MONTH(c2)=" & i & ")" 'critère
            .Range("a1:v" & Lg).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            .Range("z1:z2"), CopyToRange:=Sheets(i + 2).Range("a1:v1"), Unique:=False
        Next i
    End With
End Sub

assure-toi que les macros sont bien activées

Claude

Super, tout fonctionne!

Encore merci, Claude, pour ton aide. J'ai quelques questions à te poser par rapport au fonctionnement de cette macro :

Est ce qu'il me suffit de modifier "Sheets(i + 2)" pour modifier la position de la page Janvier?

Si je Modifie l'ordre des colonnes (dans la page "commande" et dans les autres pages aussi), par exemple la colonne C(avec les dates) est placée en A, est ce que je doit seulement changer le "=month(c2)=" en "=month(A2)=", ou il y a autre chose?

A bientôt

Bonjour,

Avec les dates en colonne "A", remplace le code par celui-ci

Sub FiltreMoisAn()
Dim Lg%, i%
'--- le mois de janvier doit être placé en 3ème position (onglets) ---
        Application.ScreenUpdating = False
    With Sheets("Commandes")
        Lg = .Range("a65536").End(xlUp).Row
        For i = 1 To 12
            .Range("z2") = "=AND(YEAR(a2)=Page!c8,MONTH(a2)=" & i & ")" 'critère
            .Range("a1:v" & Lg).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            .Range("z1:z2"), CopyToRange:=Sheets(i + 2).Range("a1:v1"), Unique:=False
        Next i
    End With
End Sub

si tu mets la feuille "Janvier" en 4ème position,

Sheets(i + 2) devient Sheets(i + 3)

J'insiste sur le fait que ces 12 feuilles sont inutiles,

on savait faire tous les calculs sans elles, mais bon !

Amicalement

Claude

Super, je te remercie.

J'ai fais une feuille par mois, car c'est pour un suivi quotidien. Chaque jours il faut saisir les différentes charges à la main (frais de transport; frais d'expéditions...) impossibles à automatiser. De plus il arrive qu'il y ait des lignes à rajouter ou a supprimer (au cas par cas). Je pense que ça facilitera la navigation.

Après je fais des calculs mois par mois, trimestre par trimestre, semestre.... puis par références de produits ...

Voila moi je trouve que l'organiser comme ça me facilitera le travail.

(Bon après c'est le document le plus compliqué que j'ai jamais fait, donc malheureusement ce ne sera pas un travail d'expert...).

En tout cas merci beaucoup pour ta précieuse aide !!

Rechercher des sujets similaires à "auto copier coller donnees periode"