Optimiser une macro d'affichage

Bonjour à tous,

Je suis pas très doué en VBA alors pour créer ma macro, je suis passé par l'enregistrement de macros. Sauf que celui-ci me donne une macro très longue pour pas grand chose... Est ce qu'il y a moyen de la raccourcir ? (Elle me permet de modifier l'affichage d'une zone en fonction des valeurs dans D9, D21 et D33)

Je joins la macro :

If Worksheets("Page d'accueil").Range("D9") + Worksheets("Page d'accueil").Range("D21") + Worksheets("Page d'accueil").Range("D33") > 1 Then

Range("V66:AD74").Interior.PatternColorIndex = xlAutomatic
Range("V66:AD74").Interior.ThemeColor = xlThemeColorAccent3
Range("V66:AD74").Interior.TintAndShade = 0.599993896298105
Range("V66:AD74").Interior.PatternTintAndShade = 0
Range("V66:AD74").Font.ThemeColor = xlThemeColorAccent3
Range("V66:AD74").Font.TintAndShade = 0.599993896298105

Range("V79:AD87").Interior.PatternColorIndex = xlAutomatic
Range("V79:AD87").Interior.ThemeColor = xlThemeColorAccent3
Range("V79:AD87").Interior.TintAndShade = 0.599993896298105
Range("V79:AD87").Interior.PatternTintAndShade = 0

Range("V79:AD87").Font.ThemeColor = xlThemeColorAccent3
Range("V79:AD87").Font.TintAndShade = 0.599993896298105

Range("V92:AD92").Interior.PatternColorIndex = xlAutomatic
Range("V92:AD92").Interior.ThemeColor = xlThemeColorAccent3
Range("V92:AD92").Interior.TintAndShade = 0.599993896298105
Range("V92:AD92").Interior.PatternTintAndShade = 0

Range("V92:AD92").Font.ThemeColor = xlThemeColorAccent3
Range("V92:AD92").Font.TintAndShade = 0.599993896298105

Range("V62:AD92").Borders(xlDiagonalDown).LineStyle = xlNone
Range("V62:AD92").Borders(xlDiagonalUp).LineStyle = xlNone
Range("V62:AD92").Borders(xlEdgeLeft).LineStyle = xlNone
Range("V62:AD92").Borders(xlEdgeTop).LineStyle = xlNone
Range("V62:AD92").Borders(xlEdgeBottom).LineStyle = xlNone
Range("V62:AD92").Borders(xlEdgeRight).LineStyle = xlNone
Range("V62:AD92").Borders(xlInsideVertical).LineStyle = xlNone
Range("V62:AD92").Borders(xlInsideHorizontal).LineStyle = xlNone
Range("V62:AD92").Borders(xlDiagonalDown).LineStyle = xlNone
Range("V62:AD92").Borders(xlDiagonalUp).LineStyle = xlNone
Range("V62:AD92").Borders(xlEdgeLeft).LineStyle = xlContinuous
Range("V62:AD92").Borders.ColorIndex = 0
Range("V62:AD92").Borders.TintAndShade = 0
Range("V62:AD92").Borders.Weight = xlThin
Range("V62:AD92").Borders(xlEdgeTop).LineStyle = xlContinuous
Range("V62:AD92").Borders.ColorIndex = 0
Range("V62:AD92").Borders.TintAndShade = 0
Range("V62:AD92").Borders.Weight = xlThin
Range("V62:AD92").Borders(xlEdgeBottom).LineStyle = xlContinuous
Range("V62:AD92").Borders.ColorIndex = 0
Range("V62:AD92").Borders.TintAndShade = 0
Range("V62:AD92").Borders.Weight = xlThin
Range("V62:AD92").Borders(xlEdgeRight).LineStyle = xlContinuous
Range("V62:AD92").Borders.ColorIndex = 0
Range("V62:AD92").Borders.TintAndShade = 0
Range("V62:AD92").Borders.Weight = xlThin
Range("V62:AD92").Borders(xlInsideVertical).LineStyle = xlNone
Range("V62:AD92").Borders(xlInsideHorizontal).LineStyle = xlNone

Else

Range("V62:AD92").Borders(xlDiagonalDown).LineStyle = xlNone
Range("V62:AD92").Borders(xlDiagonalUp).LineStyle = xlNone
Range("V62:AD92").Borders(xlEdgeLeft).LineStyle = xlNone
Range("V62:AD92").Borders(xlEdgeTop).LineStyle = xlNone
Range("V62:AD92").Borders(xlEdgeBottom).LineStyle = xlNone
Range("V62:AD92").Borders(xlEdgeRight).LineStyle = xlNone
Range("V62:AD92").Borders(xlInsideVertical).LineStyle = xlNone
Range("V62:AD92").Borders(xlInsideHorizontal).LineStyle = xlNone

Range("V66:AD74").Interior.Pattern = xlNone
Range("V66:AD74").Interior.TintAndShade = 0
Range("V66:AD74").Interior.PatternTintAndShade = 0
Range("V66:AD74").Font.ColorIndex = xlAutomatic
Range("V66:AD74").Font.TintAndShade = 0

Range("V79:AD87").Interior.Pattern = xlNone
Range("V79:AD87").Interior.TintAndShade = 0
Range("V79:AD87").Interior.PatternTintAndShade = 0
Range("V79:AD87").Font.ColorIndex = xlAutomatic
Range("V79:AD87").Font.TintAndShade = 0

Range("V92:AD92").Interior.Pattern = xlNone
Range("V92:AD92").Interior.TintAndShade = 0
Range("V92:AD92").Interior.PatternTintAndShade = 0
Range("V92:AD92").Font.ColorIndex = xlAutomatic
Range("V92:AD92").Font.TintAndShade = 0

Range("V62:AD65").Borders(xlDiagonalDown).LineStyle = xlNone
Range("V62:AD65").Borders(xlDiagonalUp).LineStyle = xlNone
Range("V62:AD65").Borders(xlEdgeLeft).LineStyle = xlContinuous
Range("V62:AD65").Borders.ColorIndex = 0
Range("V62:AD65").Borders.TintAndShade = 0
Range("V62:AD65").Borders.Weight = xlThin

Range("V62:AD65").Borders(xlEdgeTop).LineStyle = xlContinuous
Range("V62:AD65").Borders.ColorIndex = 0
Range("V62:AD65").Borders.TintAndShade = 0
Range("V62:AD65").Borders.Weight = xlThin

Range("V62:AD65").Borders(xlEdgeBottom).LineStyle = xlContinuous
Range("V62:AD65").Borders.ColorIndex = 0
Range("V62:AD65").Borders.TintAndShade = 0
Range("V62:AD65").Borders.Weight = xlThin

Range("V62:AD65").Borders(xlEdgeRight).LineStyle = xlContinuous
Range("V62:AD65").Borders.ColorIndex = 0
Range("V62:AD65").Borders.TintAndShade = 0
Range("V62:AD65").Borders.Weight = xlThin

Range("V62:AD65").Borders(xlInsideVertical).LineStyle = xlNone
Range("V62:AD65").Borders(xlInsideHorizontal).LineStyle = xlNone


Range("V75:AD78").Borders(xlDiagonalDown).LineStyle = xlNone
Range("V75:AD78").Borders(xlDiagonalUp).LineStyle = xlNone
Range("V75:AD78").Borders(xlEdgeLeft).LineStyle = xlContinuous
Range("V75:AD78").Borders.ColorIndex = 0
Range("V75:AD78").Borders.TintAndShade = 0
Range("V75:AD78").Borders.Weight = xlThin

Range("V75:AD78").Borders(xlEdgeTop).LineStyle = xlContinuous
Range("V75:AD78").Borders.ColorIndex = 0
Range("V75:AD78").Borders.TintAndShade = 0
Range("V75:AD78").Borders.Weight = xlThin

Range("V75:AD78").Borders(xlEdgeBottom).LineStyle = xlContinuous
Range("V75:AD78").Borders.ColorIndex = 0
Range("V75:AD78").Borders.TintAndShade = 0
Range("V75:AD78").Borders.Weight = xlThin

Range("V75:AD78").Borders(xlEdgeRight).LineStyle = xlContinuous
Range("V75:AD78").Borders.ColorIndex = 0
Range("V75:AD78").Borders.TintAndShade = 0
Range("V75:AD78").Borders.Weight = xlThin

Range("V75:AD78").Borders(xlInsideVertical).LineStyle = xlNone
Range("V75:AD78").Borders(xlInsideHorizontal).LineStyle = xlNone


Range("V88:AD91").Borders(xlDiagonalDown).LineStyle = xlNone
Range("V88:AD91").Borders(xlDiagonalUp).LineStyle = xlNone
Range("V88:AD91").Borders(xlEdgeLeft).LineStyle = xlContinuous
Range("V88:AD91").Borders.ColorIndex = 0
Range("V88:AD91").Borders.TintAndShade = 0
Range("V88:AD91").Borders.Weight = xlThin

Range("V88:AD91").Borders(xlEdgeTop).LineStyle = xlContinuous
Range("V88:AD91").Borders.ColorIndex = 0
Range("V88:AD91").Borders.TintAndShade = 0
Range("V88:AD91").Borders.Weight = xlThin

Range("V88:AD91").Borders(xlEdgeBottom).LineStyle = xlContinuous
Range("V88:AD91").Borders.ColorIndex = 0
Range("V88:AD91").Borders.TintAndShade = 0
Range("V88:AD91").Borders.Weight = xlThin

Range("V88:AD91").Borders(xlEdgeRight).LineStyle = xlContinuous
Range("V88:AD91").Borders.ColorIndex = 0
Range("V88:AD91").Borders.TintAndShade = 0
Range("V88:AD91").Borders.Weight = xlThin

Range("V88:AD91").Borders(xlInsideVertical).LineStyle = xlNone
Range("V88:AD91").Borders(xlInsideHorizontal).LineStyle = xlNone


Range("V62:V65").Borders(xlDiagonalDown).LineStyle = xlNone
Range("V62:V65").Borders(xlDiagonalUp).LineStyle = xlNone
Range("V62:V65").Borders(xlEdgeLeft).LineStyle = xlContinuous
Range("V62:V65").Borders.ColorIndex = 0
Range("V62:V65").Borders.TintAndShade = 0
Range("V62:V65").Borders.Weight = xlThin

Range("V62:V65").Borders(xlEdgeTop).LineStyle = xlContinuous
Range("V62:V65").Borders.ColorIndex = 0
Range("V62:V65").Borders.TintAndShade = 0
Range("V62:V65").Borders.Weight = xlThin

Range("V62:V65").Borders(xlEdgeBottom).LineStyle = xlContinuous
Range("V62:V65").Borders.ColorIndex = 0
Range("V62:V65").Borders.TintAndShade = 0
Range("V62:V65").Borders.Weight = xlThin

Range("V62:V65").Borders(xlEdgeRight).LineStyle = xlContinuous
Range("V62:V65").Borders.ColorIndex = 0
Range("V62:V65").Borders.TintAndShade = 0
Range("V62:V65").Borders.Weight = xlThin

Range("V62:V65").Borders(xlInsideVertical).LineStyle = xlNone
Range("V62:V65").Borders(xlInsideHorizontal).LineStyle = xlNone


Range("V75:V78").Borders(xlDiagonalDown).LineStyle = xlNone
Range("V75:V78").Borders(xlDiagonalUp).LineStyle = xlNone
Range("V75:V78").Borders(xlEdgeLeft).LineStyle = xlContinuous
Range("V75:V78").Borders.ColorIndex = 0
Range("V75:V78").Borders.TintAndShade = 0
Range("V75:V78").Borders.Weight = xlThin

Range("V75:V78").Borders(xlEdgeTop).LineStyle = xlContinuous
Range("V75:V78").Borders.ColorIndex = 0
Range("V75:V78").Borders.TintAndShade = 0
Range("V75:V78").Borders.Weight = xlThin

Range("V75:V78").Borders(xlEdgeBottom).LineStyle = xlContinuous
Range("V75:V78").Borders.ColorIndex = 0
Range("V75:V78").Borders.TintAndShade = 0
Range("V75:V78").Borders.Weight = xlThin

Range("V75:V78").Borders(xlEdgeRight).LineStyle = xlContinuous
Range("V75:V78").Borders.ColorIndex = 0
Range("V75:V78").Borders.TintAndShade = 0
Range("V75:V78").Borders.Weight = xlThin

Range("V75:V78").Borders(xlInsideVertical).LineStyle = xlNone
Range("V75:V78").Borders(xlInsideHorizontal).LineStyle = xlNone


Range("V88:V91").Borders(xlDiagonalDown).LineStyle = xlNone
Range("V88:V91").Borders(xlDiagonalUp).LineStyle = xlNone
Range("V88:V91").Borders(xlEdgeLeft).LineStyle = xlContinuous
Range("V88:V91").Borders.ColorIndex = 0
Range("V88:V91").Borders.TintAndShade = 0
Range("V88:V91").Borders.Weight = xlThin

Range("V88:V91").Borders(xlEdgeTop).LineStyle = xlContinuous
Range("V88:V91").Borders.ColorIndex = 0
Range("V88:V91").Borders.TintAndShade = 0
Range("V88:V91").Borders.Weight = xlThin

Range("V88:V91").Borders(xlEdgeBottom).LineStyle = xlContinuous
Range("V88:V91").Borders.ColorIndex = 0
Range("V88:V91").Borders.TintAndShade = 0
Range("V88:V91").Borders.Weight = xlThin

Range("V88:V91").Borders(xlEdgeRight).LineStyle = xlContinuous
Range("V88:V91").Borders.ColorIndex = 0
Range("V88:V91").Borders.TintAndShade = 0
Range("V88:V91").Borders.Weight = xlThin

Range("V88:V91").Borders(xlInsideVertical).LineStyle = xlNone
Range("V88:V91").Borders(xlInsideHorizontal).LineStyle = xlNone

End If

Salut lamzo,

nous balancer un code de l'enregistreur de macros là où tu comprends toi-même qu'il est too much ne va pas nous aider à comprendre ton besoin

modifier l'affichage d'une zone en fonction des valeurs dans D9, D21 et D33

Comment veux-tu qu'on comprenne à quoi ça correspond ?
Règle 1 : un fichier ;
Règle 2 : des explications correctes et complètes


A+

Ok je vais illustrer ma demande de façon pertinente afin que vous n'ayez pas besoin de vous procurer une boule de cristal ^^

J'ai 2 mises en page possibles :

Mise en page 1: Avec cellules grisées

Mise en page 2: Sans cellules grisées

Je veux switcher entre ces 2 mises en page en fonction de la valeur de la somme des cellules M62, M74 et M86. (anciennement D9, D21 et D33)

Si la somme de ces 3 cellules est supérieure à 1 alors MISE EN PAGE 1

Sinon MISE EN PAGE 2

Fin SI

MON BESOIN : Compresser le code VBA...

Voici le fichier pour y voir plus clair.

8classeur1.xlsm (21.35 Ko)

Bonjour à tous,

Voici un essai de réorganisation du code :

with Worksheets("Page d'accueil")
    If .Range("D9") + .Range("D21") + .Range("D33") > 1 Then
        Formater .Range("V66:AD74")
        Formater .Range("V79:AD87")
        Formater .Range("V92:AD92")
        .Range("V62:AD92").BorderAround xlContinuous, xlthin
    Else
        .Range("V62:AD92").BorderAround xlNone
        Deformater .Range("V66:AD74")
        Deformater .Range("V79:AD87")
        Deformater .Range("V92:AD92")
        .Range("V62:AD65").BorderAround xlContinuous, xlthin
        .Range("V75:AD78").BorderAround xlContinuous, xlthin
        .Range("V88:AD91").BorderAround xlContinuous, xlthin
        .Range("V62:V65").BorderAround xlContinuous, xlthin
        .Range("V75:V78").BorderAround xlContinuous, xlthin
        .Range("V88:V91").BorderAround xlContinuous, xlthin
    End If
end with

Sub Formater(Plage as range)
with Plage
    .Interior.PatternColorIndex = xlAutomatic
    .Interior.ThemeColor = xlThemeColorAccent3
    .Interior.TintAndShade = 0.599993896298105
    .Interior.PatternTintAndShade = 0
    .Font.ThemeColor = xlThemeColorAccent3
    .Font.TintAndShade = 0.599993896298105
end with
end sub

Sub Deformater(Plage as range)
with Plage
    .Interior.Pattern = xlNone
    .Interior.TintAndShade = 0
    .Interior.PatternTintAndShade = 0
    .Font.ColorIndex = xlAutomatic
    .Font.TintAndShade = 0
end with
end sub

Cdlt,

Merci 3GB ! Après quelques modifs de mon côté, j'ai obtenu ce que je voulais !!! Voici le code final :

'Mise en page 1 = avec cellules grisées

'Mise en page 2 = sans cellules grisées

' SI la somme de D9, D21 et D33 est supérieure à 1 ALORS "Mise en page 1" SINON "Mise en page 2"

With Worksheets("Page d'accueil")
    If .Range("D9") + .Range("D21") + .Range("D33") > 1 Then
        mettre_gris .Range("V66:AD74") 'colore en gris les cellules entre V66 et AD74 (appelle la procédure mettre_gris)
        mettre_gris .Range("V79:AD87") 'colore en gris les cellules entre V79 et AD87 (appelle la procédure mettre_gris)
        mettre_gris .Range("V92:AD92") 'colore en gris les cellules entre V92 et AD92 (appelle la procédure mettre_gris)
        .Range("V62:AD92").BorderAround xlContinuous, xlThin 'crée la bordure autour de V62 et AD92
        Range("V62:V65").Borders(xlEdgeRight).LineStyle = xlNone 'enleve la bordure droite de la selection
        Range("V75:V78").Borders(xlEdgeRight).LineStyle = xlNone 'enleve la bordure droite de la selection
        Range("V88:V91").Borders(xlEdgeRight).LineStyle = xlNone 'enleve la bordure droite de la selection
        Range("V65:AD65").Borders(xlEdgeBottom).LineStyle = xlNone 'enleve la bordure du bas de la selection
        Range("V74:AD74").Borders(xlEdgeBottom).LineStyle = xlNone 'enleve la bordure du bas de la selection
        Range("V78:AD78").Borders(xlEdgeBottom).LineStyle = xlNone 'enleve la bordure du bas de la selection
        Range("V87:AD87").Borders(xlEdgeBottom).LineStyle = xlNone 'enleve la bordure du bas de la selection
        Range("V91:AD91").Borders(xlEdgeBottom).LineStyle = xlNone 'enleve la bordure du bas de la selection

    Else

        enlever_gris .Range("V66:AD74") 'enleve le gris dans entre V66 et AD74 (appelle la procédure enlever_gris)
        enlever_gris .Range("V79:AD87") 'enleve le gris dans entre V79 et AD87 (appelle la procédure enlever_gris)
        enlever_gris .Range("V92:AD92") 'enleve le gris dans entre V92 et AD92 (appelle la procédure enlever_gris)
        .Range("V62:AD65").BorderAround xlContinuous, xlThin 'crée la bordure autour de V62 et AD65
        .Range("V75:AD78").BorderAround xlContinuous, xlThin 'crée la bordure autour de V75 et AD78
        .Range("V88:AD91").BorderAround xlContinuous, xlThin 'crée la bordure autour de V88 et AD91
        .Range("V62:V65").BorderAround xlContinuous, xlThin 'crée la bordure autour de V62 et V65
        .Range("V75:V78").BorderAround xlContinuous, xlThin 'crée la bordure autour de V75 et V78
        .Range("V88:V91").BorderAround xlContinuous, xlThin 'crée la bordure autour de V88 et V91
        Range("U66:U74").Borders(xlEdgeRight).LineStyle = xlNone 'enleve la bordure droite de la selection
        Range("AD66:AD74").Borders(xlEdgeRight).LineStyle = xlNone 'enleve la bordure droite de la selection
        Range("U79:U87").Borders(xlEdgeRight).LineStyle = xlNone 'enleve la bordure droite de la selection
        Range("AD79:AD87").Borders(xlEdgeRight).LineStyle = xlNone 'enleve la bordure droite de la selection
        Range("U92").Borders(xlEdgeRight).LineStyle = xlNone 'enleve la bordure droite de la selection
        Range("AD92").Borders(xlEdgeRight).LineStyle = xlNone 'enleve la bordure droite de la selection
        Range("V92:AD92").Borders(xlEdgeBottom).LineStyle = xlNone 'enleve la bordure du bas de la selection

    End If
End With

End Sub

Sub mettre_gris(Plage As Range)
With Plage
    .Interior.PatternColorIndex = xlAutomatic
    .Interior.ThemeColor = xlThemeColorAccent3
    .Interior.TintAndShade = 0.599993896298105
    .Interior.PatternTintAndShade = 0
    .Font.ThemeColor = xlThemeColorAccent3
    .Font.TintAndShade = 0.599993896298105
End With
End Sub

Sub enlever_gris(Plage As Range)
With Plage
    .Interior.Pattern = xlNone
    .Interior.TintAndShade = 0
    .Interior.PatternTintAndShade = 0
    .Font.ColorIndex = xlAutomatic
    .Font.TintAndShade = 0
End With
End Sub

Salut Lamzo,
Salut 3GB,

compressons, compressons...

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim iIdx%
'
Application.ScreenUpdating = False
'
If Not Intersect(Target, Union([M62], [M74], [M86])) Is Nothing Then
    Range("V62:AD92").ClearFormats
    iIdx = IIf([M62] + [M74] + [M86] < 1, 0, 1)
    If iIdx = 1 Then Range("V62:AD92").BorderAround LineStyle:=xlContinuous
    For x = IIf(iIdx = 0, 62, 66) To 91 + iIdx Step 13
        If iIdx = 0 Then _
            Range("V" & x).Resize(4, 9).BorderAround LineStyle:=xlContinuous: _
            Range("V" & x).Resize(4, 1).BorderAround LineStyle:=xlContinuous
        If iIdx = 1 Then Range("V" & x).Resize(IIf(x = 92, 1, 9), 9).Interior.Color = RGB(220, 220, 220)
    Next
End If
'
Application.ScreenUpdating = True
'
End Sub
15lamzo.xlsm (17.05 Ko)


A+

Rechercher des sujets similaires à "optimiser macro affichage"