Copier/Coller des cellules d'un classeur à un autre VBA

Bonjour et merci d'avance pour votre aide !

J'aimerai mettre en place une macro me permettant de venir copier les cellules d'un rapport Classeur "Rapport.xls" => Onglet "Page 1" dans un autre classeur Excel "Suivi.xlsm" => Onglet "Data".

Les données à copier seront toujours dans les colonnes allant de A2 jusqu'à Ox , le nombre de ligne peut varier mais le nombre de colonne sera toujours le même ainsi que le nom des feuilles et classeur.

Les données seront à coller à la suite d'un tableau "Tableau1", afin de créer une base de données.

Je débute sur le VBA mais je suis persuadé que cela est possible ! J'ai fais quelques petites recherches et petit test je vous joins le """"Code"""" que j'ai essayé de mettre en place.

 Sub transfert()

    Dim Last_Row1 As Long, Last_Row2 As Long, i As Long
    Dim W1 As Workbook, w2 As Workbook
    Dim f1 As Worksheet, f2 As Worksheet

Application.ScreenUpdating = False

W1 = "Rapport.xls"
w2 = "Suivi.xlsm"

    Set f1 = Sheets("Data")

 Windows(W1).Activate

    Set f2 = Sheets("Page 1")

    For i = 2 To Last_Row1

  Last_Row1 = f2.Range("A" & Rows.Count).End(xlUp).Row

    Windows(w2).Activate

    With f1

    Last_Row2 = f1.Range("A" & Rows.Count).End(xlUp).Row + 1

    f2.Range("A2:O" & Last_Row1).Copy f1.Range("A" & Last_Row2)
End With
 Next i
 End Sub

Merci de votre aide, je reste à votre disposition pour toute information !

Bonne journée à vous,

Alexandre

Bonjour,

Voici un essai, avec les 2 classeurs ouverts :

Sub transfert()

Dim W1 As Workbook, W2 As Workbook
Dim f1 As Worksheet, f2 As Worksheet
Dim DL1 As Long, NVL2 As Long

Set W1 = workbooks("Rapport.xls")
Set W2 = workbooks("Suivi.xlsm")
Set f1 = W1.Sheets("Page 1")
Set f2 = W2.Sheets("Data")

DL1 = f1.Range("A" & Rows.Count).End(xlUp).Row
NVL2 = f2.Range("A" & Rows.Count).End(xlUp).Row + 1

f1.Range("A2:O" & DL1).Copy f2.Range("A" & NVL2)

End Sub

Cdlt,

Le code fonctionne merci beaucoup pour votre aide !

Très bonne journée à vous,

Encore merci !

Je viens de remarquer un petit soucis dans le code, en effet si je ne l'enregistre pas dans un format Excel "97-2003" la macro ne fonctionne pas Le message d'erreur suivant apparait si j'essaie de l'enregistrer dans un format plus récent prenant en charge les macros. Avez vous une idée ? Le soucis semble venir de cette ligne !

DL1 = f1.Range("A" & Rows.Count).End(xlUp).Row
image

Et bien, j'y ai pensé en saisissant la ligne. Je pense qu'il s'agit du rows.count (compte les lignes... oui mais de quoi ? se dit la machine).

Essayez comme ça :

DL1 = f1.Range("A" & f1.Rows.Count).End(xlUp).Row

Là, on sait à quel objet se rapportent ces lignes à compter.

Idem pour NVL2. En fait ça n'a pas d'importance vu qu'on cherche à partir de la fin de la feuille, on pourrait très bien mettre 65000 par exemple.

Cdlt,

Cela fonctionne parfaitement ! Merci beaucoup pour votre aide et votre réactivité :)

Bonne journée,

Cordialement,

Alexandre

Super !

Bonne journée à vous aussi !

Rechercher des sujets similaires à "copier coller classeur vba"