Copie d'une ligne dans un autre classeur

bonjour,

je veux copier une ligne dans un autre classeur dans une feuille précise à la 1ère ligne vide :

j'ai l'erreur "incompatibilité de type " : voici mon code

Sub copie_ligne_pilotage()

Dim WBSource As Workbook, WBDest As Workbook
Dim i As Integer

Set WBSource = Worksheets("Chantier").Rows("65")
Set WBDest = Workbooks("C:\Users\Desktop\test\Pilotage-philou.xlsx").Worksheets("Pilotage_Suivi_Janvier 2020")

i = WBDest.Range("A" & Rows.Count).End(xlUp).Row + 1 'ligne vide a la fin du tableau

WBSource.Copy _
    Destination:=WBDest.Worksheets(1).Cells(i, 1)

Application.CutCopyMode = False

End Sub

Re,

essaie comme ça :

Sub copie_ligne_pilotage()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set CS = ThisWorkbook 'définit la classeur source CS
Set OS = CS.Worksheets("Chantier") 'définit l'onglet source OS
Set CD = Workbooks("C:\Users\Desktop\test\Pilotage-philou.xlsx") 'définit le classeur destination CD (génèrera une erreur si ce classeur n'est pas ouvert !)
Set OD = CD.Worksheets("Pilotage_Suivi_Janvier 2020") 'définit l'onglet destination OD
Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST (première cellule vide de la colonne A de l'onglet OD)
OS.Rows(65).Copy DEST 'copie la ligne 65 de l'onglet source et la colle dans DEST
Application.CutCopyMode = False 'supprime le clignotement de la ligne copiée
End Sub

j'ai l'erreur : l'indice n'appartient pas à la sélection.

et comment faire si je veux lancer la macro avec le classeur destination fermé au départ ?

Re,

Sur quelle ligne se trouve l'erreur ?

Essaie comme ça :

Sub copie_ligne_pilotage()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set CS = ThisWorkbook 'définit la classeur source CS
Set OS = CS.Worksheets("Chantier") 'définit l'onglet source OS
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set CD = Workbooks("Pilotage-philou.xlsx") 'définit le classeur destination CD (génère une erreur si le classeur n'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été générée
    Err.Clear 'supprime l'erreur
    Set CD = Workbooks.Open("C:\Users\Desktop\test\Pilotage-philou.xlsx") 'définit le classeur destination en l'ouvrant
End If
On Error GoTo 0 'annule la gestion des erreurs
Set OD = CD.Worksheets("Pilotage_Suivi_Janvier 2020") 'définit l'onglet destination OD
Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST (première cellule vide de la colonne A de l'onglet OD)
OS.Rows(65).Copy DEST 'copie la ligne 65 de l'onglet source et la colle dans DEST
Application.CutCopyMode = False 'supprime le clignotement de la ligne copiée
End Sub

ça avance, ça m'ouvre bien le classeur s'il est fermé, et là j'ai le message "Variable objet ou variable bloc With non définie.

Re,

Il faut que tu prennes l'habitude quand tu as un message d'erreur de signaler quelle ligne le génère !...

il n'y a pas de ligne en jaune juste le message

Rechercher des sujets similaires à "copie ligne classeur"