Fusionner des fichiers Excel

Résolu
Kerdaven Messages postés 6 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Mon sujet a été traité plusieurs fois :

Mon besoin :
Fusionner plusieurs fichiers Excel de même structure (colonnes A à L inclues uniquement jusque dernière ligne non vide)
Pour la macro est enregistrée dans mes macro personnelle pour être lancée depuis n'importe quel classeur.
Elle envoi les données toujours dans le même fichier appelé "cumul.xls"

Je me tape la tête sur une erreur 1004 (je suis sur Mac) sur la ligne "ActiveSheet.Paste"

Voici le code :
Sub cumul2()
'
' cumul2 Macro
'

'
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, "A:L").Select
Selection.Copy
Workbooks("cumul.xlsx").Activate
ActiveSheet.Paste
Range("A:A,C:L").Select
'Range("C1").Activate
Selection.ColumnWidth = 20
Range("A65536").End(xlUp).Offset(1, 0).Select

End Sub

Je pensais savoir faire deux trois trucs en VBA mais là je deviens dingue... vos lumières m'aideront.

Merci

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    il est recommandé d'éviter de faire select & activate en VBA.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      donc, par exemple, au lieu de
      Workbooks("cumul.xlsx").Activate
      ActiveSheet.Paste

      écris
      Workbooks("cumul.xlsx").Worksheets("...").Paste
      0
  2. kerdaven
     
    merci pour votre retour rapide et proposition de solution.
    Malheureusement cela donne la même erreur 1004
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu partager ton fichier?
      0
  3. Kerdaven Messages postés 6 Statut Membre
     
    Bonjour,

    Voici deux fichiers exemple qui doivent alimenter le fichier "cumul"
    https://www.cjoint.com/c/JJEiyzCo1vV
    https://www.cjoint.com/c/JJEizOhGniV
    https://www.cjoint.com/c/JJEiAl4Tr2V

    Merci pour votre aide
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      quel est précisément le message d'erreur que tu obtiens?
      0
    2. Kerdaven Messages postés 6 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      0
    3. Kerdaven Messages postés 6 Statut Membre > Kerdaven Messages postés 6 Statut Membre
       
      et quand je débogue c'est cette ligne qui pose soucis :
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      je ferais ainsi:
      Sub cumul2()
      Dim ws As Worksheet, source As Range, destination As Range
      Set ws = ActiveSheet
      Set source = Range(ws.Range("A2"), ws.Range("A2").End(xlDown)).Resize(, 12)
      Set destination = Workbooks("cumul.xlsx").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(1, 0) _
          .Resize(source.Rows.Count, source.Columns.Count)
      source.Copy destination
      destination.ColumnWidth = 20
      End Sub
      0
    5. Kerdaven Messages postés 6 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      OK l'idée est de ne plus manipuler les classeur mais des variables contenant les plages à copier / coller ?

      Je teste
      0