Copier une plage / coller sur autre fichier Excel

Bonjour a tous et a toutes,

Je reviens vers vous pour essayer de résoudre un de mes problème

je m'explique :

J'ai dans mon fichier excel un tableau que je voudrais copier dans un autre fichier

pour cela :

  • via un bouton sur la feuille concernés
  • copier le tableau jusqu'à la dernière ligne rempli FAIT
  • créer un nouveau fichier sur le bureau FAIT
  • lui donner un nom FAIT
  • l'ouvrir FAIT
  • créer un seul onglet et le renommer FAIT
  • coller mon tableau en gardant la mise en page source
  • enregistrer et fermer le fichier excel créer
  • revenir sur mon fichier source

Voici le code que j'ai pu trouver et modifier (je ne pense pas que ça soit le meilleur)

me manque la fin :/

Private Sub CommandButton4_Click()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim DernLigne As Integer

    'copie la feuille OT a envoyé
        DernLigne = Range("A" & Rows.Count).End(xlUp).Row
    Sheets("OT a envoyé").Range("A1:G" & DernLigne).Copy
    'On créer l'objet Excel
    Set xlApp = CreateObject("Excel.Application")
    'On défini le nombre d'onglets (ici 5)
    xlApp.SheetsInNewWorkbook = 1
    'On ajoute un classeur
    Set xlBook = xlApp.Workbooks.Add
    'donner le chemin d'enregistrement et donner un nom
    xlBook.SaveAs ("C:\Users\Sébastien\Desktop\OT CMOS.xlsx")
    'On rend le classeur visible
    xlApp.Visible = True
    'On créer l'objet onglet dans le nouveau classeur créé
    Set xlSheet = xlBook.Worksheets(1)
    'On affecte un nom aux l'onglets
    xlSheet.Name = "OT"
    'On ferme l'application
    'xlApp.Quit

Application.CutCopyMode = False
End Sub

Merci d'avance

Bonjour,

Je ne vois pas trop où est le problème parce que copier-coller une plage, c'est :

Plage.copy destination

Pas vraiment sorcier et il suffit de le lire une fois pour pouvoir répéter l'opération... !

Par contre ton code m'intrigue : je ne vois pas bien l'intérêt, travaillant à partir d'Excel, de créer une autre instance de l'application pour une opération aussi simple que créer un classeur, y coller une plage et le sauvegarder...

En reprenant ta macro, j'aurais procédé plutôt ainsi :

Private Sub CommandButton4_Click()
   Dim xlBook As Workbook
   Dim xlSheet As Worksheet
   Dim DernLigne As Integer
   'On défini le nombre d'onglets
   Appplication.SheetsInNewWorkbook = 1
   'On ajoute un classeur
   Set xlBook = Workbooks.Add
   'On nomme l'onglet du classeur
   Set xlSheet = xlBook.Worksheets(1)
   xlSheet.Name = "OT"
   'copie la feuille OT a envoyé et colle dans nouveau classeur
   With ThisWorkbook.Sheets("OT a envoyé").
       DernLigne = Range("A" & Rows.Count).End(xlUp).Row
       .Range("A1:G" & DernLigne).Copy xlSheet.Range("A1")
   End With
   'donner le chemin d'enregistrement et donner un nom
   xlBook.SaveAs ("C:\Users\Sébastien\Desktop\OT CMOS.xlsx")
   'On ferme le classeur    
   xlBook.Close
End Sub

Si je puis me permettre un autre commentaire, je considère que la place d'un fichier n'est jamais sur le bureau. Alors, j'ignore qui donne ce genre d'exercice mais cela me paraît au moins farfelu !

Si tu regardes les différences avec ta macro d'origine, j'ai supprimé la création d'une instance d'Excel (on y est), j'ai passé la copie après création du classeur pour pouvoir coller en même temps (une seule instruction) et placé l'enregistrement à la suite (un enregistrement au lieu de deux, mais cela ne réduit pas les lignes de code, car le second pouvait intervenir sur la ligne de fermeture en ajoutant l'argument True après Close), et j'ai éliminé le CutCopyMode... (qui n'aurait eu d'utilité que si tu avais fermé le classeur source immédiatement après la copie pour éviter que le système te demande si tu voulais vider le presse-papier, or ce classeur n'est pas fermé, et les opérations accomplies après copie ont déjà vidé le presse-papier).

Cordialement.

Rechercher des sujets similaires à "copier plage coller fichier"