Calcul tableau

Bonsoir,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim i%
    If Target.Address = "$E$3" Then
        Me.[E3].Interior.Color = RGB(0, 176, 80)
        Me.[G3].Interior.ColorIndex = xlColorIndexNone
    ElseIf Target.Address = "$G$3" Then
        Me.[G3].Interior.Color = RGB(0, 176, 80)
        Me.[E3].Interior.ColorIndex = xlColorIndexNone
    End If
End Sub

dans le module de la feuille.

Cordialement.

Salut erni,

Bien le bonjour MFerrand,

juste pour faire joujou...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
If Not Intersect(Target, Union(Range("E3"), Range("G3"))) Is Nothing Then
    With Target
        .Interior.Color = IIf(.Interior.Color = RGB(0, 176, 80), xlNone, RGB(0, 176, 80))
        .Offset(0, IIf(.Column = 5, 2, -2)).Interior.Color = IIf(.Interior.Color = RGB(0, 176, 80), xlNone, RGB(0, 176, 80))
    End With
End If
'
End Sub

A+

Salut erni,

pas de souci...

Deux cellules :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
If Not Intersect(Target, Union(Range("H3"), Range("H5"), Range("E5"))) Is Nothing Then
    With Target
        .Interior.Color = IIf(.Interior.Color = RGB(0, 176, 80), xlNone, RGB(0, 176, 80))
        .Offset(IIf(.Row = 3, 2, -2), 0).Interior.Color = IIf(.Interior.Color = RGB(0, 176, 80), xlNone, RGB(0, 176, 80))
    End With
End If
'
End Sub

Trois cellules :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
If Not Intersect(Target, Union(Range("H3"), Range("H5"), Range("E5"))) Is Nothing Then
    With Target
        If .Column = 8 Then
            .Interior.Color = IIf(.Interior.Color = RGB(0, 176, 80), xlNone, RGB(0, 176, 80))
            .Offset(IIf(.Row = 3, 2, -2), 0).Interior.Color = IIf(.Interior.Color = RGB(0, 176, 80), xlNone, RGB(0, 176, 80))
            .Offset(IIf(.Row = 3, 2, -2), -3).Interior.Color = xlNone
        Else
            .Interior.Color = RGB(0, 176, 80)
            .Offset(0, 3).Interior.Color = xlNone
            .Offset(-2, 3).Interior.Color = xlNone
        End If
    End With
End If
'
End Sub

A+

Bonjour,

Si ta feuille est protégée, tu lèves la protection en début de macro :

    Me.Unprotect

et tu la rétablis en fin :

    Me.Protect

Si mot de passe, tu le rajoutes en argument sur les 2 lignes, après une espace et en le mettant entre guillemets.

Cordialement.

Bonjour

Bonjour,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim i%
    Me.Unprotect
    If Target.Address = "$E$3" Then
        Me.[E3].Interior.Color = RGB(0, 176, 80)
        Me.[G3].Interior.ColorIndex = xlColorIndexNone
    ElseIf Target.Address = "$G$3" Then
        Me.[G3].Interior.Color = RGB(0, 176, 80)
        Me.[E3].Interior.ColorIndex = xlColorIndexNone
    End If
    Me.Protect
End Sub

Pas compliqué début et fin !

Les première et dernière ligne constituent la déclaration de procédure. A l'intérieur le code de la procédure, qui commence (éventuellement) par les déclarations de variables, et à la suite, le code exécutable (parce que les déclarations ne s'exécutent pas, elles permettent à VBA de gérer l'espace mémoire dévolu aux variables).

Donc, juste après les déclarations, et avant End Sub, tu codes la déprotection et la reprotection.

Cordialement.

Bonjour

Rechercher des sujets similaires à "calcul tableau"