Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copier/Coller données fichier xls fermé impossible


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Copier/Coller données fichier xls fermé impossible
    Bonsoir à tous,

    Je souhaite pouvoir copier/coller dans un fichier les données que l'on retrouve dans plusieurs fichiers "export" afin d'obtenir un unique tableau avec toutes les données. Mon soucis est que j'arrive à copier/coller les données du fichier export1.xls mais impossible de le faire avec le fichier export2.xls... je suis bloqué juste après avoir fait la copie, impossible de trouver comment écrire la ligne du code me permettant de coller les lignes copiées...

    La ligne de code qui bloque :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets(name1).Range(Split(Cells(LastLine, 1).Address, "$")(1) & LastLine + 1).Paste


    Je vous joins les fichiers en pièces jointes (j'ai anonymisé les données présentes dans les fichiers export) + il faut modifier la variable "path" pour mettre le chemin d'accès où se trouvent les fichiers export1 et export2 sur votre PC.

    Si quelqu'un peut me débloquer, je lui en serai infiniment reconnaissant !!!

  2. #2
    Membre émérite
    Bonjour Flo, bonjour le forum,

    Je te propose ton code simplifié ci-dessous :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub Macro1()
    Dim CA As String 'déclare la variable CA (Chemin d'Accès)
    Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
    Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
    Dim CS As Workbook 'déclare la variable CS (Classeur Source)
    Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
    Dim PL As Range 'déclare la variable PL (PLage)
    Dim DC As Integer 'déclare la variable DC (Dernière Colonne)
     
    CA = "C:\Users\Robert\Documents\Poubelle\Flo\" 'définit le chemin CA
    Set CD = ThisWorkbook 'définit le classeur destination CD
    Set OD = CD.Worksheets(1) 'définit l'onglet destination OD
    Set CS = Workbooks.Open(CA & "export1.xls") 'définit la classeur sourcde CS (en l'ouvrant)
    Set OS = CS.Worksheets(1) 'définit l'onglet source OS
    Set PL = OS.Cells(Application.Rows.Count, "A").End(xlUp).CurrentRegion 'définit la plage PL
    DC = PL.Columns.Count 'définit la derenière colonne éditée DC de la plage PL
    OS.Range(OS.Cells(1, 1), OS.Cells(DL, DC)).Copy OD.Range("A1")
    OD.Columns(DC - 1).Cut 'coupe l'avant dernière colonne de l'onglet destination
    OD.Columns(DC).Insert shift:=xlToRight 'la déplace en dernière position
    CS.Close False 'ferme le classeur source sans enregistrer
    Set CS = Workbooks.Open(CA & "export2.xls") 'redéfinit le classeur source CS (en l'ouvrant)
    Set OS = CS.Worksheets(1) 'redéfinit l'onglet source OS
    Set PL = OS.Cells(Application.Rows.Count, "A").End(xlUp).CurrentRegion 'définit la plage PL
    Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, PL.Columns.Count) 'redéfinit la plage PL (sans la première ligne)
    'copie la plage PL et la colle dans la première cellule vide de la colonne A de l'onglet destination
    PL.Copy OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
    CS.Close 'ferme le classeur source sans enregistrer
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Membre à l'essai
    Bonsoir Thautheme,

    Je te remercie pour ton aide et pour cette solution qui fonctionne à merveille. Voilà qui me permet de bien commencer la semaine.

    A bientôt et merci encore