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:
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
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à la place.
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")
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
Partager