Optimisation code

ananar

XLDnaute Nouveau
Bonjour à toutes et à tous,

J'essaie d'optimiser une partie de mon code (qui fonctionne très bien actuellement) en supprimant les Select et Paste.
C'est plus court, ça ne provoque pas de mouvement de feuille et n'implique pas la sélection d'une feuille quand je parcours les cellules d'une autre.
Enfin, c'est ce que j'ai compris en parcourant le forum.

- Macro sélection des données [à partir de la celulle A3] pour copier / coller dans l'onglet [Données] à partir de la celulle A3

Code:
Sub maMacro1()
Derlign = Range("A65536").End(xlUp).Row
Range("A3:AD" & Derlign).Select
    Selection.Copy
    ThisWorkbook.Activate
    Sheets("Données").Select
    Range("A3").Select
    ActiveSheet.Paste
End Sub

Le code après simplification :

Code:
Sub maMacro1()
Range("A3:AD" & Cells(65536, 1).End(xlUp).Row).Copy _
ThisWorkbook.Sheets("Données").Cells(Cells(65536, 1).End(xlUp).Row + 1, 1)
End Sub

Les données sont bien copiées, mais pas à partir de la cellule A3 ...

Ci-dessous, les 2 autres macros que je souhaite simplifiée :

- Macro sélection des données [à partir de la celulle A3] pour copier / coller dans l'onglet [Données] à partir de la celulle la 1ère celulle vide dans la colonne A

Code:
Sub maMacro2()
Derlign = Range("A65536").End(xlUp).Row
Range("A3:AD" & Derlign).Select
    Selection.Copy
    ThisWorkbook.Activate
    Sheets("Données").Select
    Range("A3").End(xlDown).Offset(1, 0).Select
    ActiveSheet.Paste
End Sub

- Macro sélection des données [à partir de la celulle A1] pour copier / coller dans l'onglet [Image de SysRailData] à partir de la celulle A3

Code:
Sub maMacro3()
 Derlign = Range("A65536").End(xlUp).Row
Range("A1:AD" & Derlign).Select
    Selection.Copy
    ThisWorkbook.Activate
    Sheets("Image de SysRailData").Select
    Range("A1").Select
    ActiveSheet.Paste
End Sub

D'avance merci pour les réponses qui me parviendront.

Bien cordialement.

ananar
 

Papou-net

XLDnaute Barbatruc
Re : Optimisation code

Bonjour ananar,

Tu peux simplifier ton 1er code comme suit :

Code:
Sub maMacro1()
ActiveSheet.Range("A3:AD" & UsedRange.Rows.Count + 2).Copy
ActiveSheet.Paste Destination:=Sheets("Données").Range("A3")
End Sub

Il ne reste plus qu'à l'adapter aux autres cas.

Espérant avoir répondu.

Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 672
Messages
2 090 773
Membres
104 662
dernier inscrit
Hurve