XL 2019 Aide pour éviter les "select"

Fanrs

XLDnaute Nouveau
Bonjour,

J'ai souvent croisé le fait qu'il faut éviter au maximum les "select" afin d'optimiser le code et la rapidité... malheureusement, l'enregistreur ne nous facilite pas la tache dans ce sens ! Est ce que quelqu'un peut m'aider ?

VB:
'Colle valeurs précédentes
    Columns("H:H").Select
    Application.CutCopyMode = False
    Selection.Copy
    Columns("L:L").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("L5").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "Précédent"
    Range("L5").Select
    Application.CutCopyMode = False
    Selection.Cut
    Range("L7").Select
    ActiveSheet.Paste
    Range("H3").Select

Code:
' Colle les formules

    Application.GoTo Reference:="Zone"
    Application.CutCopyMode = False
    Selection.ClearContents
    
    Range("Formule").Select
    Selection.Copy
    Range( _
        "Debut_Formule") _
        .Select
    ActiveSheet.Paste
    
    
    Range("E6").Selec

Code:
'Entete
    Sheets("SG010").Select
    Range("AJ6:CI6").Select

    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 4.99893185216834E-02
    End With


   'ligne 7
    Sheets("SG010").Select
    Range("AJ7:CI7").Select

    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent1
        .TintAndShade = 0.799981688894314
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
    End With
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Un moyen possible de faire un copier/coller "valeurs seules"
VB:
Sub Copie_Valeurs_Seules()
Dim a, DL&
DL = Cells(Rows.Count, "H").End(3).Row
a = Range(Cells(1, "H"), Cells(DL, "H")).Value
Cells(1, "L").Resize(UBound(a, 1), UBound(a, 2)) = a
End Sub
 

zebanx

XLDnaute Accro
Bonjour Fanrs, Staple1600 ;), le forum

Ah l'éditeur de macro. Un passage obligé.
Après, il faut savoir copier des lignes, faire des essais, conserver des bons codes publiés ici ou là pour apprendre.
A vous de vous entrainer. Un petit exemple sur les copier-coller et les subtilités du VBA sur le terme "Paste" entre l'enregistreur de macro et la manière de l'utiliser en mode plus simplifié.

Il faut essayer et persévérer
zebanx
 

Pièces jointes

  • copy.xlsm
    32.7 KB · Affichages: 11

Discussions similaires

Statistiques des forums

Discussions
312 047
Messages
2 084 864
Membres
102 689
dernier inscrit
moshe yaacov abnaim