Autres Colorer une cellule en un clic

baguihome

XLDnaute Nouveau
Bonjour à tous,

J'ai crée un fichier excel dans lequel je souhaiterai rendre une colonne interactive : pour chacune des cellules de cette colonne, un clic = colore la cellule en rouge ; un deuxième clic dans cette même cellule = colore en vert (passe du rouge au vert) ; un troisième clic = retour à la couleur initiale de la cellule (passe du vert à la couleur initiale de la cellule).
J'ai trouvé un code qui fonctionne assez bien (je le mets en fin de post). Reste quelques petits problèmes : le 3ème clic colore la cellule en blanc alors que les lignes de mon fichier sont alternativement blanches et grises. C'est pour ça que je souhaiterais pouvoir ramener la cellule à sa couleur d'origine au 3ème clic. Deuxième petit problème, quand j'essaie de protéger le reste du fichier (toutes les cellules sauf celle de la colonne colorable) la macro ne fonctionne plus. 3ème problème, le code que j'ai trouvé s'applique sur 2 colonnes, quelles modifications apporter au code pour qu'il ne concerne plus que la colonne D. Enfin, le code suivant fonctionne avec un double clic, je souhaiterai qu'il fonctionne avec un clic gauche.

Est-ce faisable de faire ce que je souhaite ?

Merci d'avance pour votre aide et désolé pour mon ignorance…:rolleyes:☺️

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim couleurs()
If Not Intersect(Target, Range("D:E")) Is Nothing Then
couleurs = Array(RGB(255, 0, 0), RGB(13, 241, 105), RGB(255, 255, 255))
On Error GoTo color
Target.Interior.color = couleurs(Application.WorksheetFunction.Match(Target.Interior.color, couleurs, 0) Mod 3)
Cancel = True
End If
Exit Sub
color:
Target.Interior.color = couleurs(0)
Cancel = True
End Sub
 

bsalv

XLDnaute Occasionnel
bonjour, il faut ajouter "ime" dans les lignes "protect" et "unprotect"
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

     Dim Couleurs(): Couleurs = Array(-1, RGB(255, 0, 0), RGB(13, 241, 105))

     If Intersect(Target, Range("D:E")) Is Nothing Then Exit Sub

     With Target
          Me.Unprotect "ime"   'avec mot de passe
          ic = .Interior.Color
           .....
          Cancel = True
          Me.Protect "ime" 'avec mot de passe
     End With

End Sub
 

baguihome

XLDnaute Nouveau
Bonjour, c'est encore moi... désolé... 😅

Pour un autre document excel j'aimerai pouvoir colorer des cellules de la même façon que dans mes postes précédents, mais en plus j'aimerai verrouiller les colonnes A, B et C et seulement celles-ci, avec le code "ime". Ci-après le code que j'ai réussi à rentrer pour colorer les colonnes D, E et F. Mais il ne fait pas qu'elles soient protégées car je souhaiterai pouvoir y ajouter du texte.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim couleurs()
If Not Intersect(Target, Range("D:F")) Is Nothing Then
couleurs = Array(RGB(255, 0, 0), RGB(0, 176, 240), RGB(146, 208, 80), RGB(255, 255, 255))
On Error GoTo color
Target.Interior.color = couleurs(Application.WorksheetFunction.Match(Target.Interior.color, couleurs, 0) Mod 4)
Cancel = True
End If
Exit Sub
color:
Target.Interior.color = couleurs(0)
Cancel = True
End Sub

Merci d'avance...!
 

Discussions similaires

Statistiques des forums

Discussions
315 095
Messages
2 116 169
Membres
112 676
dernier inscrit
little_b