Changement couleur cellule double-clic

Bonsoir,,

Je me casse les dents sur ce code trouvé... quelque part :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Target.Address <> "$A$10" Then Exit Sub
Application.EditDirectlyInCell = False
Select Case Target.Interior.ColorIndex
Case Is = xlNone 'rien
Target.Interior.ColorIndex = 4 ' vert
Case Is = 4 'vert
Target.Interior.ColorIndex = 3 'rouge
Case Is = 3 'rouge
Target.Interior.ColorIndex = xlNone
End Select
End Sub

Il permet de faire changer la couleur de la cellule A10 par double-clic, parfait c'est ce que je voulais.

Mais je n'arrive pas à le faire fonctionner pour une plage de cellule, par exemple (H3:H20).

j'ai remplacé "$A$10" dans le code par "Range(H3:H20)" et d'autres versions mais impossible ça ne fonctionne pas. C'est quoi le truc ? (Le top ce serait que le code fonctionne sur 2 plages précises sur la feuille)

Merci.

Bonsoir,

Ceci devrait pouvoir faire l'affaire.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Union([A2:A15], [D2:D15])) Is Nothing Then Exit Sub
Application.EditDirectlyInCell = False
Select Case Target.Interior.ColorIndex
Case Is = xlNone 'rien
Target.Interior.ColorIndex = 4 ' vert
Case Is = 4 'vert
Target.Interior.ColorIndex = 3 'rouge
Case Is = 3 'rouge
Target.Interior.ColorIndex = xlNone
End Select
End Sub

Bonsoir et merci pour votre réponse,

Malheureusement cela ne fonctionne, j'ai beau double-cliquer sur les cellules concernés cela n'est d'aucun effet. Une autre chose me chagrine un peu c'est ce bout de code Application.EditDirectlyInCell = False il empêcher "d'entrer" dans une cellule pour y éditer le contenu, ce qui est compréhensible au vu de ce que la macro demande de faire.

N'y a-t-il pas moyen d'effectuer le changement de couleur par simple-clic afin d'éviter ceci ?

Merci,

Bizarre, chez moi ça fonctionnait bien de mémoire. Je vérifierai à nouveau demain.

Pour le simple clic, c'est ce qui permet de sélectionner les cellules. On ne pourrait donc plus sélectionner une cellule de la zone sans lancer la macro ?

Sinon, quel est le but exactement de tout cela ?

SI la macro ne fonctionne que pour une plage de cellules le simple clic devrait fonctionner normalement en dehors de cette plage non ? Sinon ce n'est pas très grave.
Voici pourquoi cette macro m'intéresse : je voudrais que les utilisateurs du fichier puisse donner une tendance commerciale en colorant en vert ou en orange une cellule, vert si la tendance est positive, orange si elle est neutre.

Je n'ai pas trouvé d'autres méthodes pour que cela soit simple et surtout bien visible. Si vous avez d'autres idées n'hésitez pas.

Merci et bonne nuit.

Salut Nicolas, Salut JoyeuxNoel,

Ce n'est peut-être pas ça mais ça ne coûte rien d'ajouter un petit Case Else pour gérer les cas où les cellules seraient d'une autre couleur, ce qui rendrait la procédure vaine.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Union([A2:A15], [D2:D15])) Is Nothing Then Exit Sub
Application.EditDirectlyInCell = False
Select Case Target.Interior.ColorIndex
Case Is = xlNone 'rien
Target.Interior.ColorIndex = 4 ' vert
Case Is = 4 'vert
Target.Interior.ColorIndex = 3 'rouge
Case else 'rouge ou toute autre couleur
Target.Interior.ColorIndex = xlNone
End Select
End Sub

Bonne soirée à vous deux,

Bonsoir nocturne 3GB,

Bien sûr que c'est ça ! As usual ! Merci beaucoup !

Et maintenant

  1. Une "pitite" macro pour remettre toutes les cases à blanc ?
  2. Et est-ce qu'il est possible d'intégrer le fait qu'une cellule soit colorée en vert dans une formule ? =SI(A1 est vert);1;2)

Merci !

Laissez tomber, j'ai abandonné l'idée... Je suis certain qu'il y a mieux à faire que cette histoire de couleur. sorry.

Euh... finalement... quel code dans une macro pour remettre toutes les cases non colorées ? Merci de votre aide.

Salut Nicolas,

Bon alors, c'est oui ou c'est non ?

Je crois qu'il faut quelque chose comme ça :

Range(XXX).Interior.ColorIndex = xlNone

en adaptant à la range que vous ciblez bien sûr.

A bientôt,

Bonsoir…

2 autres propositions, la seconde pourrait t’intéresser :

Private Sub Worksheet_BeforeDoubleClick(ByVal R As Range, Cancel As Boolean)
    If R.Address = "$A$1" Then Cancel = 1: Union([A2:A15], [D2:D15]).Interior.Color = vbWhite: Exit Sub
    If Intersect(R, Union([A2:A15], [D2:D15])) Is Nothing Then Exit Sub
    Cancel = 1
    If R = "" Then
        R.Interior.ColorIndex = xlNone
    Else
        R.Interior.ColorIndex = IIf(R.Interior.ColorIndex = 4, 3, 4)
        R(1, 2).Select
    End If
End Sub

Private Sub Worksheet_Change(ByVal R As Range)
   If Intersect(R, Union([A2:A15], [D2:D15])) Is Nothing Then Exit Sub
   If R = "" Then
        R.Interior.ColorIndex = xlNone
    Else
        R.Interior.ColorIndex = IIf(R.Interior.ColorIndex = 4, 3, 4)
        R(1, 2).Select
    End If
End Sub
Rechercher des sujets similaires à "changement couleur double clic"