Copier plage dans nouvelle feuille, à la suite

Bonjour à tous,

Je me permet de poster ce message ici pour solliciter votre aide.

En effet, dans le cadre du boulot, j'ai un gros chantier sur Excel à mettre en place, et je pense qu'une macro Excel me permettrait de gérer efficacement ce que je souhaite faire.

Mon fichier d'exemple se trouve en pièce jointe de ce message.

Ce que je souhaite faire :

  • Dans mon TAB1, j'ai des tableaux qui se mettent à jour tous les mois. Je souhaite copier systématiquement les premières lignes de mon tableau, soit la plage A2:E2;G2:K2;M2:O2
  • Je souhaite coller ces données dans mon TAB2, sur la plage A1:M1, mais SYSTÉMATIQUEMENT en bas, à la suite, dans la première ligne vide rencontrée.

Je pense que pour quelqu'un touchant un peu les macros Excel, ce type de problème est facilement solvable. Pouvez vous m'aider ou m'expliquer comment arriver à ce résultat ? Je souhaite dans l'idéal quelque chose de bien propre, ce document étant pour le boulot.

Merci à tous par avance, je reste entièrement disponible si besoin!

Kamoon

30excel-sample.xlsx (10.73 Ko)

Bonjour,

Regarde cet exemple et dis si tu as besoin d'explications complémentaires.

76excel-sample.xlsm (18.24 Ko)

A+

Bonjour Frangy,

Merci beaucoup pour ta réponse, et pour ton fichier, c'est juste P A R F A I T !

J'ai juste une simple petite question : comment as tu fait pour intégrer le bouton "COPIER" ( je ne trouve pas de code relatif au bouton dans la macro ) et comment faire pour l'intégrer à mon doc.

Encore merci !

Kaboom

Pour l'exemple, j'ai juste placé un bouton de formulaire auquel j'ai affecté la macro "Test".

Pour ton projet, tu peux tout aussi bien utiliser un bouton ActiveX et placer la procédure associée dans le module de la feuille concernée.

Voir exemple.

48excel-sample-1.xlsm (20.10 Ko)

A+

Merci pour ta réponse frangy.

J'ai une dernière et ultime demande : tout fonctionne bien, mais les données copiées sont collées AVEC mise en forme (fond, gras, ..), hors, j'aimerai que les données soient collées SANS mise en forme : peux tu m'indiquer la marche à suivre ??

Encore merci !

A+

Kamoon

Bonjour,

Private Sub Copier_Click()
Dim Plage As Range
Dim LigneAjout As Long
    Set Plage = ActiveSheet.Range("A2:E2,G2:K2,M2:O2")
    With Worksheets("Tab2")
        LigneAjout = .Range("A" & Rows.Count).End(xlUp).Row + 1
        Plage.Copy
        .Cells(LigneAjout, 1).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End With
End Sub

A+

Bonjour les gens, bonjour @Frangy,

Je reviens vers vous car j'ai besoin de mettre à jour ma formule Excel.

Pour rappel :

    Private Sub Copier_Click()
    Dim Plage As Range
    Dim LigneAjout As Long
        Set Plage = ActiveSheet.Range("A2:E2,G2:K2,M2:O2")
        With Worksheets("Tab2")
            LigneAjout = .Range("A" & Rows.Count).End(xlUp).Row + 1
            Plage.Copy
            .Cells(LigneAjout, 1).PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False
        End With
    End Sub

Actuellement, la formule récupère les données d'une plage horizontale (une seule ligne, plusieurs colonnes).

Ensuite, elle colle ces données horizontalement.

Ce que j'ai besoin, c'est de coller ces données verticalement : une seule colonne, une donnée par ligne, à la suite.

J'ai essayé de bidouillé un peu mais sans succès. Quelqu'un pour m'apporter un petit coup de main ?

Merci par avance !

Cordialement,

Kamoon

Bonjour,

Essaie comme cela

Private Sub Copier_Click()
Dim Tablo
Dim i As Long, LigneAjout As Long
Dim Plage As Range
    Tablo = Array("A2:E2", "G2:K2", "M2:O2")
    With Worksheets("Tab2")
        For i = 0 To UBound(Tablo)
            LigneAjout = .Range("A" & Rows.Count).End(xlUp).Row + 1
            Set Plage = Worksheets("Tab1").Range(Tablo(i))
            .Cells(LigneAjout, 1).Resize(Plage.Columns.Count, 1) = Application.Transpose(Plage)
        Next i
    End With
    Set Plage = Nothing
End Sub

A+

Salut Frangy et merci pour ta réponse !

J'ai adapté et testé la macro, il semble y avoir un petit soucis :

Private Sub FranceImportData()
Dim Tablo
Dim i As Long, LigneAjout As Long
Dim Plage As Range
    Tablo = Array("B41:I41", "L41:AO41", "BG41:BJ41", "BM41:BP41", "BS41:BV41", "BY41:CB41", "CE41:CH41", "CK41:CN41", "CQ41:CT41", "CW41:CZ41", "DC41:DF41", "DI41:DL41", "DO41:DQ41")
    With Worksheets("France Web Import")
        For i = 0 To UBound(Tablo)
            LigneAjout = .Range("A" & Rows.Count).End(xlUp).Row + 1
            Set Plage = Workbooks("master_data_OK_020.xlsm").Worksheets("Xiti Data Import").Range(Tablo(i))
            .Cells(LigneAjout, 1).Resize(Plage.Columns.Count, 1) = Application.Transpose(Plage)
        Next i
    End With
    Set Plage = Nothing
End Sub

Là actuellement, quand je l’exécute, les données sont collées dans la colonne A de mon onglet "France Web Import", tout en bas de mon tableau, en dessous d'autres données. A chaque exécution, les données sont collées dans la colonne A, à la suite. Elles sont dans le bon ordre, mais pas au bon endroit.

Je souhaite qu'elles se collent à partir de la première colonne vide. Peux tu m'aider à voir ce qui ne va pas ?

Merci pour ton aide Frangy ! On avance! : )

Bonjour,

Si j’ai bien compris, tu veux effectuer chaque copie dans la première colonne vide.

Mais à partir de quelle ligne ?

Je veux bien t’aider mais il faut que toi aussi tu m’aides un peu.

Avec un fichier exemple, ça irait sûrement beaucoup mieux pour que je comprenne le résultat attendu.

A+

Désolé Frangy, effectivement un fichier aurait été plus parlant !

Mais j'ai finalement réussi à résoudre mon problème, grâce à ta rep : ) Merci beaucoup! Sujet à clore !

Rechercher des sujets similaires à "copier plage nouvelle feuille suite"