Code plus performant

Bonjour,

J'aimerais savoir s'il est de rendre ce bout de code plus performant.

                Range("F" & derLn5 & ":AB" & derLn5).Copy Range("F" & derLn5 + 1 & ":AB" & derLn5 + m)
                Range("Fixe_Format").Select
                Selection.Copy
                Range("F" & derLn5 - 1 & ":AA" & derLn5 + m + 1).Select
                Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                    SkipBlanks:=False, Transpose:=False
                Application.CutCopyMode = False
                With Selection.Font
                    .Name = "Arial"
                    .Size = 10
                    .Strikethrough = False
                    .Superscript = False
                    .Subscript = False
                    .OutlineFont = False
                    .Shadow = False
                    .Underline = xlUnderlineStyleNone
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .ThemeFont = xlThemeFontNone
                End With
                With Selection
                    .HorizontalAlignment = xlRight
                    .VerticalAlignment = xlBottom
                    .WrapText = False
                    .Orientation = 0
                    .AddIndent = False
                    .IndentLevel = 0
                    .ShrinkToFit = False
                    .ReadingOrder = xlContext
                    .MergeCells = False
                End With
                Range("D" & derLn5 + m + 1) = "Total"
                Range("F" & derLn5 + m + 1).FormulaLocal = "=somme(F" & derLn5 & ":F" & derLn5 + m & ")"
                Range("G" & derLn5 + m + 1).FormulaLocal = "=somme(G" & derLn5 & ":G" & derLn5 + m & ")"
                Range("H" & derLn5 + m + 1).FormulaLocal = "=somme(H" & derLn5 & ":H" & derLn5 + m & ")"
                Range("I" & derLn5 + m + 1).FormulaLocal = "=somme(I" & derLn5 & ":I" & derLn5 + m & ")"
                Range("J" & derLn5 + m + 1).FormulaLocal = "=somme(J" & derLn5 & ":J" & derLn5 + m & ")"
                Range("F" & derLn5 + m + 1 & ":J" & derLn5 + m + 1).Select
                With Selection.Borders(xlEdgeTop)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With Selection.Borders(xlEdgeBottom)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlMedium
                End With
                Range("N" & derLn5 + m + 1).FormulaLocal = "=somme(N" & derLn5 & ":N" & derLn5 + m & ")"
                Range("O" & derLn5 + m + 1).FormulaLocal = "=somme(O" & derLn5 & ":O" & derLn5 + m & ")"
                Range("P" & derLn5 + m + 1).FormulaLocal = "=somme(P" & derLn5 & ":P" & derLn5 + m & ")"
                Range("Q" & derLn5 + m + 1).FormulaLocal = "=somme(Q" & derLn5 & ":Q" & derLn5 + m & ")"
                Range("R" & derLn5 + m + 1).FormulaLocal = "=somme(R" & derLn5 & ":R" & derLn5 + m & ")"
                Range("N" & derLn5 + m + 1 & ":R" & derLn5 + m + 1).Select
                With Selection.Borders(xlEdgeTop)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With

Merci,

Oiseau bleu

Hello,

Oui.

Remplacer :

.Copy

par des variables range. Par exemple

dim rg1 as range
dim rg2 as range

set rg1 = range("A1:A5")
set rg2 = range("B10:B15")

rg2.value = rg1.value

Pas la peine de faire de :

.Select

Exemple :

With Selection.Font
                    .Name = "Arial"
                    .Size = 10
                    .Strikethrough = False
                    .Superscript = False
                    .Subscript = False
                    .OutlineFont = False
                    .Shadow = False
                    .Underline = xlUnderlineStyleNone
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .ThemeFont = xlThemeFontNone
                End With

peut devenir :

dim rg1 as range

set rg1 = range("A1:A5")

with rg1.font
.name = "Arial"
.size = 10
end with

Merci pour votre réponse.

Pour le code suivant y-a-t-il quelques choses à faire?

                Range("Fixe_Format").Select
                Selection.Copy
                Range("F" & derLn5 - 1 & ":AA" & derLn5 + m + 1).Select
                Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                    SkipBlanks:=False, Transpose:=False

Oiseau bleu

Et dans le cas du code suivant y-a-t-il une façon de ne pas utiliser SELECT

            ActiveSheet.Shapes.Range(Array("BBAnGrp")).Select
            Selection.Placement = xlMove
            ActiveSheet.Shapes.Range(Array("FCAAnGrp")).Select
            Selection.Placement = xlMove
            ActiveSheet.Shapes.Range(Array("EBNAnGrp")).Select
            Selection.Placement = xlMove

Merci,

Oiseau bleu

Hello,

Range("Fixe_Format").Select
                Selection.Copy
                Range("F" & derLn5 - 1 & ":AA" & derLn5 + m + 1).Select
                Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                    SkipBlanks:=False, Transpose:=False

peut devenir :

Range("Fixe Format").copy
Range("F" & derLn5 - 1 & ":AA" & dernLn5 + m+1).PasteSpecial Paste:=xlPasteFormats

et pour :

ActiveSheet.Shapes.Range(Array("BBAnGrp")).Select
            Selection.Placement = xlMove

peut devenir :

ActiveSheet.Shapes.Range(Array("BBAnGrp")).Placement = xlMove

Ainsi de suite avec les autres range.

Rechercher des sujets similaires à "code performant"