Bonjour à tous,

Voici mon problème: j'ai crée une macro (assez simple sur le fond) qui copie/coupe et colle ensuite dans différentes feuilles à certains endroits. Cependant, pour optimiser mon code je voudrais chasser les Activate pour que mes feuilles ne s'affichent pas à l'écran et gagner du temps sur le processus.
Voici mon code, celui qui fonctionne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub Archive()
Dim Classeur As Workbook, Fl As Worksheet, F2 As Worksheet
Set Classeur = ThisWorkbook
Set F1 = Classeur.Worksheets("TDB CDT")
Set F2 = Classeur.Worksheets("Archives Commentaires")
 
For Ligne = 4 To F1.Range("A" & Rows.Count).End(xlUp).Row
    If Not IsEmpty(F1.Cells(Ligne, "M").Value) And Not IsEmpty(F1.Cells(Ligne, "N").Value) Then
 
    'Décalage archive
    F2.Activate
    Range(Cells(Ligne, "B"), Cells(Ligne, "AA")).Select
    Selection.Cut Destination:=Range(Cells(Ligne, "E"), Cells(Ligne, "AD"))
 
    'Archivage
    F1.Activate
    Range(Cells(Ligne, "J"), Cells(Ligne, "L")).Cut Destination:=F2.Cells(Ligne, "B")
 
    'Décalage commentaire
    F1.Activate
    Range(Cells(Ligne, "M"), Cells(Ligne, "O")).Cut Destination:=F1.Cells(Ligne, "J")
 
    End If
Next Ligne
End Sub
Voilà, je suis sûr que ce code peut être largement optimisé. Ce que je ne comprend pas, c'est que quand j'écris
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
    'Décalage archive
    F2.Range(Cells(Ligne, "B"), Cells(Ligne, "AA")).Cut Destination:=Range(Cells(Ligne, "E"), Cells(Ligne, "AD"))
 
    'Archivage
    F1.Range(Cells(Ligne, "J"), Cells(Ligne, "L")).Cut Destination:=F2.Cells(Ligne, "B")
 
    'Décalage commentaire
    F1.Range(Cells(Ligne, "M"), Cells(Ligne, "O")).Cut Destination:=F1.Cells(Ligne, "J")
à la place.
J'ai une erreur sur Range qui ne connait "_Worksheet" lors de la compil alors que l'écriture me parait sensée et la syntaxe correcte.
Cela vous parle t il ?
Merci pour l'aide et/ou commentaires que vous pourrez me fournir.
Merci d'avance.

Corentin Bardon