Copie de données, Changer la feuille de destination par date

Bonjour à tous,

Je fais appel à vous aujourd'hui pour orienté une copie de feuille Excel suivant l'année ... je m'explique :

Chaque mois un utilisateur fait une requête sur un site pour collecter des données, qui apparait sous format Excel (Le nom ne change jamais "Classeur1" avec une seule feuille "Feul1")

  • Les données à collectées commence à la ligne 12
  • La date à collecté est dans la colonne U (donc 1er date à U12)

L'agent doit copier ses données et les remettre dans un autre classeurs qui contient des feuilles qui ont pour noms les années. Je ne peux pas copier simplement la feuille parce que le classeur ou l'on copie les données en contient d'autres.

Je chercher à automatiser tout ça, le truc qui me pose problème c'est au changement d'année la feuille de destination ne sera plus la même, peut on changer de feuille chaque année??? si oui comment ?

J’espère avoir été le plus clair possible et précis possible, désolé de ne pouvoir vous communiquer mes fichiers Excel pour raison de confidentialité.

Merci d'avance pour votre Aide.

Cordialement,

Bonjour,

Ici :

Sheets(Feuil1).....

erreur de syntaxe, déjà !

Ensuite, non tu n'es pas clair du tout ! Tu fournis tout ton code, s'il s'avère suffisant pour répondre à la question, tu auras des réponses utiles, sinon c'est qu'un classeur illustrant ta configuration s'avèrera nécessaire...

Cordialement.

Oui désolé, c'est pas évident à expliquer.

Ci-joint 2 fichiers Excel pour expliquer ma demande.

Je cherche à copier les cellules du "classeur1", puis les insérer dans le classeur "Projet1". Mais ...

Dans le "classeur1" il y a une colonne date de création (elle seront toutes du même mois et de la même année), je voudrais que cette donnée soit utilisée, pour effectuer la copie dans la feuille Année correspondante.

Il y a du mieux dans mon explication ?

7classeur1.xls (19.50 Ko)
9projet1.zip (4.95 Ko)

S'agit-il d'une simple copie (NB- je dirais plutôt transfert ou reproduction, car j'évite de copier tant que l'on peut faire autrement... mais de plus l'organisation étant différente sur la cible, la copie ne convient d'ailleurs pas !), c'est à dire on ne se préoccupe pas des données (hormis la date qui définit la destination) et donc on ajoute sur la feuille destination toutes les lignes qui ont vocation à y aller ?

Ou bien s'agit-il d'une mise à jour ? Et alors sur quels critères ?

Je suppose que l'opération sera déclenchée à partir du classeur cible (le classeur source changeant tous les mois). De quelle façon ? Ce classeur ne contient que des feuilles années. Et classeur source ouvert lors du déclenchement ou non ?

Cordialement.

Oui c'est une copie et effectivement les données ne sont pas classées de la même façon, et la colonne la plus importante est la date. Pour simplifier la copie de donnée je me demande si il ne serait pas plus simple d'utiliser une feuille tampon masqué et reclasser les colonnes dans le bonne ordre ?!

Non c'est pas une mise à jour à chaque fois se sont de nouvelles donnée, par mois (Données de cartographie).

Oui l'opération vient du classeur cible, L'opérateur Via un userform choisi le mois de sa requête, une macro effectue une suite d'action sur un site interne et génère un fichier Excel.

Autrement dit, tu ne fournissais pas la configuration exacte dans laquelle tu opérais...

Voilà pour transférer les données :

Sub ImportDonnées()
    Dim wsC As Worksheet, n%, TblD
    With Workbooks("Classeur1.xls").Worksheets(1)
        .Columns("G:K").Insert
        .Columns("E").Insert
        n = .Range("B" & .Rows.Count).End(xlUp).Row - 11
        With .Cells(12, 2).Resize(n, 12)
            .Columns(4).Value = .Columns(2).Value
            .Columns(2).Value = .Columns(3).Value
            .Columns(3).ClearContents
            Set wsC = ThisWorkbook.Worksheets(CStr(Year(.Cells(1, 12))))
            TblD = .Value
        End With
    End With
    wsC.Cells(Rows.Count, 2).End(xlUp)(2).Resize(n, 12).Value = TblD
    Workbooks("Classeur1.xls").Close False
End Sub

Procédure que tu pourras faire exécuter à la suite de ta création du Classeur1...

Cordialement.

Super boulot, Merci !

les fichiers que j'ai joints sont simplifiés. Ils sont 4 à 5 fois plus grands mais je comprends comment tu procèdes, je vais pouvoir adapter

Par contre j'ai automatisé la création de la feuille cible pour les données, elle est créée à la première utilisation d'une nouvelle année comme ceci :

Dans ThisWorkbook :

Dim Année_EC As Integer 'Année en cours
Dim Année_Feuille As Integer

Private Sub Workbook_Open()

Année_EC = Sheets("Page_Données").Range("F10").Value 'Cellule avec l'année en cours
Année_Feuille = Sheets("Page_Données").Range("G10").Value ' Cellule avec l'année de la dernière création de feuille

If Année_EC <> Année_Feuille Then
Call Création_feuille

Else
End If
End Sub

La macro :

Sub Création_feuille()

Worksheets("Fiche_type").Visible = True

Worksheets("Fiche_type").Copy After:=Sheets(Worksheets.Count)
Worksheets("Fiche_type (2)").Name = Sheets("Page_Données").Range("F10").Value

Worksheets("Fiche_type").Visible = False
Sheets("Page_Données").Range("G10").Value = Sheets("Page_Données").Range("F10").Value 
Sheets("Tableau de bord").Activate

MsgBox ("Bonjour," & vbCrLf & vbCrLf & "la nouvelle feuille de suivi Carto pour l'année " & Sheets("Page_Données").Range("f10").Value & " vient d'être créée avec succès")

End Sub

Je pense qu'il y a plus simple mais sa fonctionne, de se fait je peux pas mettre ta macro après la mienne je pense. Et l'utilisateur va faire sa requête en février il faut que je fasse l'export à la suite de janvier.

En tout cas merci pour ton aide

Rechercher des sujets similaires à "copie donnees changer feuille destination date"