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 [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : mai 2015
    Messages : 15
    Points : 12
    Points
    12
    Par défaut 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 !!!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    août 2014
    Messages
    1 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : août 2014
    Messages : 1 142
    Points : 2 127
    Points
    2 127
    Par défaut
    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
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : mai 2015
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/07/2017, 12h32
  2. [XL-2003] Copier un fichier .xls fermé en omettant les 4 premières lignes
    Par kernkraft dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/12/2010, 20h38
  3. Copier-coller entre fichier CSV et XLS
    Par da991319 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/09/2007, 22h42
  4. Copier/coller un fichier si ping ok
    Par Chrissrare dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 26/06/2006, 17h14
  5. Interdire de déplacier (copier-coller) un fichier ???
    Par beegees dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 15/03/2006, 22h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo