Travailler sur 2 classeurs en meme temps

Bonjour

voila je voudrais travailler sur 2 classeurs ouverts sans forcement être sur le bon classeur quand j'effectue ma macro

comment je peux changer ma macro pour qu'a la place que j'ai active sheet j'ai le nom "recap" du classeur 1

    With ActiveSheet 
        DernLigne = .Range("A" & .Rows.Count).End(xlUp).Row
    End With

    With Sheets(" CT")
        DernLigneTDB = .Range("B" & .Rows.Count).End(xlUp).Row
    End With

voila mes 2 classeurs

Sheets("CT ").Cells(l, 20).Value = ActiveSheet.Cells(6, 9)

merci pour votre aide

Bonjour Aude, bonjour le forum,

Dans ce cas j'utilise deux variables pour les classeurs et deux variables pour les onglets. Ça simplifie beaucoup l'écriture par la suite et ça évite les bugs. Exemple :

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 DLS As Long 'déclare la variable DLS (Dernière Ligne Source)
Dim DLD As Long 'déclare la variable DLD (Dernière Ligne Destination)

Set CS = Workbooks("Ton_Classeur_Source.xlsm") 'définit le classeur source CS (ouvert, à adapter à ton cas)
Set CD = Workbooks("Ton_Classeur_Destination.xlsm") 'définit le classeur destination CD (ouvert, à adapter à ton cas)
Set OS = CS.Worksheets("Feuil1") 'définit l'onglet source OS (a adapter à ton cas)
Set OD = CD.Worksheets("Feuil1") 'définit l'onglet destination OD (a adapter à ton cas)
DLS = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DLS de la colonne A de l'onglet source
DLD = OD.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DLD de la colonne A de l'onglet destination
'puis par exemple...
OD.Range("A1:A" & DLD).ClearContents 'efface les valeurs de la colonne A de l'onglet destination OD
OS.Range("A1:A" & DLS).Copy OD.Range("A1") 'copie la plage éditée de la colonne A de l'onglet source et la colle dans A1 de l'onglet destination

merci pour ton aide

comment je pourrais ré-ecrire cela

Sheets("CT ").Cells(l, 20).Value = ActiveSheet.Cells(6, 9)

Re,

Ben !... Je croyais que mes commentaires étaient pourtant clairs... Si tu as spécifié ton onglet source et ton onglet destination :

OD.Cells(l, 20).Value = OS.Cells(6, 9).Value

merci

a partir de la je ne comprend pas trop

DLS = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DLS de la colonne A de l'onglet source
DLD = OD.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DLD de la colonne A de l'onglet destination
'puis par exemple...
OD.Range("A1:A" & DLD).ClearContents 'efface les valeurs de la colonne A de l'onglet destination OD
OS.Range("A1:A" & DLS).Copy OD.Range("A1") 'copie la plage éditée de la colonne A de l'onglet source et la colle dans A1 de l'onglet destination

Re,

C'était juste un exemple de ce que l'on peut faire une fois qu'on a défini les onglets. Plus besoin de Select et presque plus de bug à condition de les spécifier systématiquement !...

mercii beaucoup

Rechercher des sujets similaires à "travailler classeurs meme temps"