optimiser un code fait avec l'enregistreur

pascal21

XLDnaute Barbatruc
Code:
Sub Macro1()

    With Selection.Font
        .Name = "Calibri"
        .FontStyle = "Normal"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub
Sub Macro2()
    With Selection.Font
        .Name = "Calibri"
        .FontStyle = "Normal"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.499984740745262
        .PatternTintAndShade = 0
    End With
End Sub
bonjour comme vous l'avez sans doute compris ce code très bavard sort de l'enregistreur de macro
son but colorier en gris et police blanche et la suivant enlever couleur de fond et police automatique (noir)
je n'arrive pas à faire en sorte que sur un clic droit, macro1 et si re-clique droit, macro2
c'est pour la zone de cellules T4:W4
merci de votre aide
 

Matheop

XLDnaute Occasionnel
Re : optimiser un code fait avec l'enregistreur

Hello pascal21,

Je te propose la macro suivante, faite par moi-même et beaucoup plus allégée que celle fournie par ton enregistreur de macro. Elle fait également office d'interrupteur.

Code:
Sub interrupteur()

    Set plage = Sheets(1).Range("T4:W4")
    plage.Select
    
    If Selection.Font.ColorIndex = 2 Then
        With Selection
            .Font.ColorIndex = 1
            .Interior.ColorIndex = 0
        End With
    ElseIf Selection.Font.ColorIndex = 1 Then
        With Selection
            .Font.ColorIndex = 2
            .Interior.ColorIndex = 16
        End With
    End If
    
End Sub
On définis la plage de cellules concernées. On effectue une vérification : si la couleur du texte des cellules de la sélection est blanche alors on passe le texte en noir et le fond de la cellule en blanc ; en revanche si le texte est écrit en noir alors on le passe en blanc et le fond de la cellule en gris.

Cordialement, Mat'
 

Yaloo

XLDnaute Barbatruc
Re : optimiser un code fait avec l'enregistreur

Bonjour Pascal, Patichoux,

Pour le clic droit, il vaux mieux utiliser ça :

VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Not Application.Intersect(Target, Range("T4:W4")) Is Nothing Then
  If Target.Font.ColorIndex <> xlAutomatic Then
    Target.Font.ColorIndex = xlAutomatic
    Target.Interior.Pattern = xlNone
    Target.Interior.PatternTintAndShade = 0
  Else
    Target.Font.ThemeColor = xlThemeColorDark1
    Target.Interior.ThemeColor = xlThemeColorDark1
    Target.Interior.TintAndShade = -0.499984740745262
  End If
End If
End Sub

A+

Martial
 

Statistiques des forums

Discussions
312 613
Messages
2 090 231
Membres
104 453
dernier inscrit
benjiii88