Macro pour couleurs cellules au double click

Bonjour le forum

Dans la macro ci-dessous je voudrais ajouter au double click:

Colonne E la couleur 15 (gris) dans les cellules suivantes E3, E5, E6, E7,E8

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim Cell As Range
    If Not Intersect(Target, Range("A2,I2")) Is Nothing Then
        Cancel = True
        Select Case Target.Column
            Case 1:
                For Each Cell In Sh.Range("E18:I24")
                    If Cell.Locked = False Then
                      If Cell.Interior.ColorIndex = 34 Then               'Couleur au Double Click cellule A2
                        If Cell.Column = 5 Or Cell.Column = 6 Then
                          Cell.Interior.ColorIndex = 2                    'Couleur blanc avant Double Click (colonnes E & F)
                        Else
                          Cell.Interior.ColorIndex = 36                   'Couleur jaune au Double Click (colonnes G à I)
                        End If
                      Else
                        Cell.Interior.ColorIndex = 34                     'Couleur au Double Click cellule A2
                      End If
                    End If
                Next Cell
            Case 9:
                Sh.Columns(10).Hidden = Not Sh.Columns(10).Hidden
        End Select
        Cells(1).Select
    End If
End Sub

Et ensuite dans la macro ci-dessous les faire revenir à leurs couleurs d'origine à l'enregistrement

E3 = 34 (turquoise clair)

E5, E6 = 40 (brun)

E7 = 35 (vert clair)

E8 = 36 (jaune clair)

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)    
Dim J As Long, Feuille As Worksheet, Cell As Range   
    Application.ScreenUpdating = False
    If ActiveSheet.Name = "MENU" Then                     
      Set Feuille = Sheets("Charges " & Year(Date))      
    Else                                                  
      Set Feuille = ActiveSheet                          
    End If                                                
    With Feuille                                          
'      .Columns("G:I").Hidden = True                      'Mettre cette ligne en commentaires pour afficher colonnes G à I à l'ouverture et à l'Enregistrement
        For J = 12 To 112
          Select Case J
            Case 17, 32 To 38, 44, 59 To 65, 71, 86 To 92, 98
            Case Else
            If .Range("E" & J) = "" Then .Rows(J).Hidden = True
          End Select
        Next J

        ' Début modif pour remettre les couleurs à l'état initial lors de l'enregistrement le 05/09/2020
        '
        For Each Cell In .Range("E18:I24")
            If Cell.Locked = False Then
              If Cell.Interior.ColorIndex = 34 Then               'Couleur au Double Click cellule A2
                If Cell.Column = 5 Or Cell.Column = 6 Then
                  Cell.Interior.ColorIndex = 2                    'Couleur blanc avant Double Click (colonnes E & F)
                Else
                  Cell.Interior.ColorIndex = 36                   'Couleur jaune au Double Click (colonnes G à I)
                End If
              End If
            End If
        Next Cell
        '
        ' Fin modif pour remettre les couleurs à l'état initial lors de l'enregistrement le 05/09/2020

      Application.GoTo .Range("A12"), True
      ActiveSheet.Range("A1").Select
  End With

Application.ScreenUpdating = True
End Sub

Merci à vous pour vos éventuels retours

Cordialement

Bonjour Al87,

A rajouter dans la 1ière macro juste avant For Each. Ne pas oublier de dimensionner Plage

Dim Plage as Range
.......
Case 1:
Set Plage = Application.Union(Range("E3"), Range("E5:E8"))
Plage.Interior.Color = 15
For Each Cell in Sh.Range("E18:I24")
.......

Puis à ajouter dans la 2ième macro pour revenir au colori de départ

Dim Plage as Range
....... 
Set Plage = Application.Union(Range("E3"), Range("E5:E8"))
Plage.Interior.Color = 2
For Each Cell In .Range("E18:I24")
......

Bons tests, bonne continuation.

Bonjour X Cellus

Ça me colorie en noir les cellules E3, E5:E8

Mais je pense que je n'ai pas compris où mettre tes modifs

Merci à toi

cordialement

A nouveau,

En fait en vérifiant en haut de ton message quelle couleur tu souhaitais. Donc la couleur grise.

J'ai tapé Interior.Color = 15 dans mon code au lieu de Interior.ColorIndex = 15. Et c'est bien ce dernier qui ressort la bonne couleur.

Désolé pour ce contre-temps.

Bonsoir X Cellus

C'est déjà mieux mais le double clic n'efface pas la couleur 15 dans les cellules E3, E5:E8 ni à l'enregistrement

Je pense que je le place mal ou alors il y a autre chose?

En tout cas un grand merci

Bonne fin de soirée

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim Cell As Range
    If Not Intersect(Target, Range("A2,I2")) Is Nothing Then
        Cancel = True
        Select Case Target.Column
            Dim Plage As Range
            Case 1:
            Set Plage = Application.Union(Range("E3"), Range("E5:E8"))
            Plage.Interior.ColorIndex = 15
                For Each Cell In Sh.Range("E18:I24")
                    If Cell.Locked = False Then
                      If Cell.Interior.ColorIndex = 15 Then               'Couleur au Double Click cellule A2
                        If Cell.Column = 5 Or Cell.Column = 6 Then
                          Cell.Interior.ColorIndex = 2                    'Couleur blanc avant Double Click (colonnes E & F)
                        Else
                          Cell.Interior.ColorIndex = 36                   'Couleur jaune au Double Click (colonnes G à I)
                        End If
                      Else
                        Cell.Interior.ColorIndex = 15                     'Couleur au Double Click cellule A2
                      End If
                    End If
                Next Cell
            Case 9:
                Sh.Columns(10).Hidden = Not Sh.Columns(10).Hidden
        End Select
        Cells(1).Select
    End If
End Sub

Bonjour Al87,

Si tu souhaites un système à bascule modifie le code comme ci-dessous dans la 1ière macro.

If Plage.Interior.ColorIndex = 15 Then Plage.Interior.ColorIndex = xlNone Else Plage.Interior.ColorIndex = 15

Ainsi un 1ier double clic sur A2 ou I2 mettra la plage de cellules sous fond gris. Puis un second double clic l'annulera pour remettre la cellule sans couleur.

Pour la deuxième macro faire seulement Plage.Interior.ColorIndex = xlNone

Bonne continuation.

Bonjour X Cellus

On progresse on progresse

Effectivement au 2èe click ça remet bien couleur 2 (blanc) alors qu'il faut que ça soit les couleurs d'origne.

E3 = 34 (turquoise clair)

E5, E6 = 40 (brun)

E7 = 35 (vert clair)

E8 = 36 (jaune clair)

Voici la macro 2

Je met où STP

On va bien finir par y arriver?

Merci beaucoup à toi

A+

Plage.Interior.ColorIndex = xlNone
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim J As Long, Feuille As Worksheet, Cell As Range   ' Ajouter Cell As Range pour modif du 05/09/2020
    Application.ScreenUpdating = False
    If ActiveSheet.Name = "MENU" Then                     'Ces 6 lignes pour Enregistrement par Feuille MENU ou Année en cours
      Set Feuille = Sheets("Charges " & Year(Date))       '********************************
    Else                                                  '********************************
      Set Feuille = ActiveSheet                           '********************************
    End If                                                '********************************
    With Feuille                                          '********************************
'      .Columns("G:I").Hidden = True                      'Mettre cette ligne en commentaires pour afficher colonnes G à I à l'ouverture et à l'Enregistrement
        For J = 12 To 112
          Select Case J
            Case 17, 32 To 38, 44, 59 To 65, 71, 86 To 92, 98
            Case Else
            If .Range("E" & J) = "" Then .Rows(J).Hidden = True
          End Select
        Next J

        ' Début modif pour remettre les couleurs à l'état initial lors de l'enregistrement le 05/09/2020
        '
        For Each Cell In .Range("E18:I24")
            If Cell.Locked = False Then
              If Cell.Interior.ColorIndex = 34 Then               'Couleur au Double Click cellule A2
                If Cell.Column = 5 Or Cell.Column = 6 Then
                  Cell.Interior.ColorIndex = 2                    'Couleur blanc avant Double Click (colonnes E & F)
                Else
                  Cell.Interior.ColorIndex = 36                   'Couleur jaune au Double Click (colonnes G à I)
                End If
              End If
            End If
        Next Cell
        '
        ' Fin modif pour remettre les couleurs à l'état initial lors de l'enregistrement le 05/09/2020

      Application.GoTo .Range("A12"), True
      ActiveSheet.Range("A1").Select
  End With

Application.ScreenUpdating = True
End Sub

A nouveau,

Effectivement j'ai repris ton 1ier message. Il y a des couleurs d'origine pour ces cellules. Faut que je prenne RDV chez l'opticien/oculiste....

Bon, on modifie (une dernière fois) j'espère. Avec un code un peu plus long. En 1ière macro

Dim Plage As Range
Kolor = "3440403536": C = -1
Set Plage = Application.Union(Range("E3"), Range("E5:E8"))
If Plage.Interior.ColorIndex = 15 Then
For Each Cell In Plage
C = C + 2
Cell.Interior.ColorIndex = CInt(Mid(Kolor, C, 2))
Next
Else: Plage.Interior.ColorIndex = 15
End If

Toujours à placer comme dans les précédents messages.

En 2ième macro ne pas reprendre le Else: Plage.interior.ColorIndex=15. Ce qui remettrait en fonds gris.

Bons tests, bonne continuation.

Bonjour X Cellus

Merci pour ton calme et ton abnégation.

Il faut reconnaitre que sans fichier ça n'aide pas.

On y est presque je vais finaliser quelques bricoles.

Un grand merci à toi

Je te souhaite une bonne journée

Très cordialement

Rechercher des sujets similaires à "macro couleurs double click"