Copier une feuille a la suite d'une autre feuille

Bonjour a toute et a tous et tout mes meilleur voeux pour 2021.

Je viens vers vous pour un problème et vu mon niveau en vba, je ne parviens pas à le résoudre. Donc voici ce que je voudrais faire. J'ai un classeur test.xlsx avec une feuille nommé feuil test et un autre classeur qui s'appelle base.xlsm avec une feuille nomme feuil destinataire. je voudrais pouvoir copier la feuil test du classeur test.xlsx en prenant les colonnes de A2 à k100 et les copier dans la première ligne vide de la feuil destinataire du classeur base.xlsm. J'ai ce code vba qui fonctionne mais il me copie que une cellule et quand je veux le changer rien ne fonctionne.

Merci pour votre aide

Jérôme

Sub CopierFeuille()
  Dim PlageSource As Range
  Dim PlageCible As Range
  Dim FeuilleSource As Worksheet
  Dim FeuilleCible As Worksheet

  Workbooks.Open ("c:\test.xlsx")

  'Set FeuilleSource = Worksheets("feuil_test")

  Set FeuilleSource = Workbooks("test.xlsx"").Worksheets("feuil_test")

  Workbooks("base.xlsm").Worksheets("feuil_destinataire").Activate

  Set FeuilleCible = Worksheets("feuil_destinataire")

  Set PlageSource = FeuilleSource.Range("A2" & FeuilleSource.Range("A" & FeuilleSource.Rows.Count).End(xlUp).Row)
  Set PlageCible = FeuilleCible.Range("A" & FeuilleCible.Rows.Count).End(xlUp)(2)
  PlageCible.Resize(PlageSource.Rows.Count).Value = PlageSource.Value

End Sub

Bonjour,

Un esssai non testé ...

Sub CopierFeuille()
Dim PlageSource As Range
Dim PlageCible As Range
Dim FeuilleSource As Worksheet
Dim FeuilleCible As Worksheet
Dim Dlig As Integer    ' < ajout

   Workbooks.Open ("c:\test.xlsx")

   Set FeuilleSource = Workbooks("test.xlsx").Worksheets("feuil_test")
   Dlig = FeuilleSource.Cells(Rows.Count, "A").End(xlUp).Row  ' < ajout

   Workbooks("base.xlsm").Worksheets("feuil_destinataire").Activate

   Set FeuilleCible = Worksheets("feuil_destinataire")

   Set PlageSource = FeuilleSource.Range("A2:K" & Dlig)  ' < modif
   Set PlageCible = FeuilleCible.Range("A" & FeuilleCible.Rows.Count).End(xlUp)(2)
   PlageCible.Resize(PlageSource.Rows.Count).Value = PlageSource.Value
End Sub

ric

Bonjour ric,

Merci pour ta réponse, j'ai une erreur quand je lance la macro. Je joint un screen ci-dessous.

Merci pour ton aide

image

Bonjour,

Je ne comprends pas bien pourquoi le signe " = " a disparu après dlig > désolé ...

Dlig = FeuilleSource.Cells(Rows.Count, "A").End(xlUp).Row 

ric

Pas de souci ;-)

je viens de tester j'ai un souci sur la même ligne.

Merci pour ton aide

image

Bonjour,

J'ai pris le temps de reproduire tes fichiers et leurs chemins ...

Ceci fonctionne ...

Sub CopierFeuille()
Dim PlageSource As Range
Dim PlageCible As Range
Dim FeuilleSource As Worksheet
Dim FeuilleCible As Worksheet
Dim Dlig As Integer

   Workbooks.Open ("c:\test.xlsx")

   Set FeuilleSource = Workbooks("xboostertest.xlsx").Worksheets("feuil_test")
   Dlig = FeuilleSource.Cells(Rows.Count, "A").End(xlUp).Row
   Workbooks("xbooster.xlsm").Worksheets("feuil_destinataire").Activate

   Set FeuilleCible = Worksheets("feuil_destinataire")
   Set PlageSource = FeuilleSource.Range("A2:K" & Dlig)
   Set PlageCible = FeuilleCible.Range("A" & FeuilleCible.Rows.Count).End(xlUp)(2)
   PlageCible.Resize(PlageSource.Rows.Count, 11).Value = PlageSource.Value
   Workbooks("xboosterTest.xlsx").Close
End Sub

ric

Salut Ric,

Merci pour ta réponse mais cela ne fonctionne pas j'ai une erreur. je te joint les deux screen.

Merci bien pour ton aide

Cdt

Jérôme

image

sur cette ligne

image

Bonjour,

Un essai ...

Sub CopierFeuille()
Dim PlageSource As Range
Dim PlageCible As Range
Dim FeuilleSource As Worksheet
Dim FeuilleCible As Worksheet
Dim Dlig As Integer

   Workbooks.Open ("c:\test.xlsx")

   Set FeuilleSource = Workbooks("test.xlsx").Worksheets("feuil_test")
   Dlig = FeuilleSource.Cells(Rows.Count, "A").End(xlUp).Row
   Workbooks("base.xlsm").Worksheets("feuil_destinataire").Activate

   Set FeuilleCible = Worksheets("feuil_destinataire")
   Set PlageSource = FeuilleSource.Range("A2:K" & Dlig)
   Set PlageCible = FeuilleCible.Range("A" & FeuilleCible.Rows.Count).End(xlUp)(2)
   PlageCible.Resize(PlageSource.Rows.Count, 11).Value = PlageSource.Value
   Workbooks("Test.xlsx").Close
End Sub

ric

Re ric,

Toujours le même souci sur la même ligne .

merci pour ton aide

image

Bonjour,

Je ne sais pas quoi dire ...

Car ici tout fonctionne bien > mais remarque sans le fichier lui-même > je ne fais que reproduire de présumés fichiers ...

Est-ce que ta machine est sous MAC ou sous PC ?

Est-ce que les données à importer ont plus de 32768 lignes ? > si oui > change "Dim Dlig As Integer" pour "Dim Dlig As Long" ...

Je vais quand même tester une autre façon de détecter la dernière ligne de données ...

ric

Bonjour,

Un autre essai sans utiliser l'intermédiaire de la variable DLig ...

Sub CopierFeuille()
Dim PlageSource As Range
Dim PlageCible As Range
Dim FeuilleSource As Worksheet
Dim FeuilleCible As Worksheet

   Workbooks.Open ("c:\test.xlsx")

   Set FeuilleSource = Workbooks("test.xlsx").Worksheets("feuil_test")
   Workbooks("base.xlsm").Worksheets("feuil_destinataire").Activate

   Set FeuilleCible = Worksheets("feuil_destinataire")
   Set PlageSource = FeuilleSource.Range("A2:K" & FeuilleSource.Cells(Rows.Count, "A").End(xlUp).Row)
   Set PlageCible = FeuilleCible.Range("A" & FeuilleCible.Rows.Count).End(xlUp)(2)
   PlageCible.Resize(PlageSource.Rows.Count, 11).Value = PlageSource.Value
   Workbooks("xboosterTest.xlsx").Close
End Sub

ric

re Ric,

Je suis sur pc mon fichier a importer contient pour le moment que 3 ligne.

Je viens de tester le scripte sans Dlig et il y a toujours une erreur mais plus bas maintenant

image

Merci pour ton aide

Bonjour,

Là > si cela ne passe pas > je donne ma langue au chat de ma voisine ...

Sub CopierFeuille()
Dim PlageSource As Range
Dim PlageCible As Range
Dim FeuilleSource As Worksheet
Dim FeuilleCible As Worksheet

   Workbooks.Open ("c:\test.xlsx")

   Set FeuilleSource = Workbooks("test.xlsx").Worksheets("feuil_test")
   Workbooks("base.xlsm").Worksheets("feuil_destinataire").Activate

   Set FeuilleCible = Worksheets("feuil_destinataire")
   Set PlageSource = FeuilleSource.Range("A2:K" & (FeuilleSource.Cells(Rows.Count, "A").End(xlUp).Row))

   With FeuilleCible
   .Range("A" & .Cells(Rows.Count, "A").End(xlUp).Row + 1).Select
   .Range("K" & FeuilleSource.Cells(Rows.Count, "A").End(xlUp).Row).Select
   Set PlageCible = .Range("A" & .Cells(Rows.Count, "A").End(xlUp).Row + 1 & ":K" & _
      FeuilleSource.Cells(Rows.Count, "A").End(xlUp).Row + .Cells(Rows.Count, "A").End(xlUp).Row + 1)
   End With

   PlageCible = PlageSource.Value
   Workbooks("Test.xlsx").Close
End Sub

ric

Rechercher des sujets similaires à "copier feuille suite"