Colorer cellules avec double-Clic

Bonjour à tous,

Je m’adresse à vous pour m’aider à résoudre la fin de mon code.

La partie du code que j’ai réussi à faire, consiste sur la fait que lorsque je double-Clic sur une cellule se terminant par le caractère "F", cette dernière se colore avec la couleur RGB(255, 204, 153)

J’ai également réussi de la même manière à colorer en jaune les cellules se terminant par la lettre "M", couleur RGB(255, 255, 0)

Par contre, la partie du code que je n’arrive pas à résoudre est celle pour effacer la couleur d’une cellule déjà colorée via le double-Clic, C.-à-d. lorsque je double-Clic sur une cellule déjà colorée, la cellule sera non colorée.

D’avance merci de votre aide.

Bien à vous.

Salut,

change ton code comme ceci :

If Target.Interior.Color <> 16777215 Then
                Target.Interior.Color = 16777215
            ElseIf UCase(Right(Target.Value, 1)) = "F" Then
                Target.Interior.Color = RGB(255, 204, 153)
            ElseIf UCase(Right(Target.Value, 1)) = "M" Then
                 Target.Interior.Color = RGB(255, 255, 0)
            End If

mais vaut mieux décocher l'option "show gridlines"

Cordialement

G O

Bonsoir,

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim dernligneefface&, clr&
    dernligneefface = Range("BF:BB").Find("*", , , , xlByRows, xlPrevious).Row
    If Target.Row < 3 Or Target.Row > dernligneefface Then Exit Sub
    If Target.Column < 40 Or Target.Column > 54 Then Exit Sub
    If Target.Column Mod 2 = 0 Then
        If Target Like "*[fF]" Then
            clr = RGB(255, 204, 153)
        ElseIf Target Like "*[mM]" Then
            clr = vbYellow
        Else
            clr = xlNone
        End If
        With Target.Interior
            .Color = IIf(.Color = clr, xlNone, clr)
        End With
        Cancel = True
    End If
End Sub

Je me suis permis quelques petites modifications, histoire d'alléger un tout petit peu le volume écrit, et sans doute aussi montrer qu'il y a des façons variées de parvenir au même résultat...

Dans ton code initial, il aurait suffi de placer ta dernière condition en premier ...

Cordialement.

Bonjour Game Over et MFerrand,

Je viens de tester vos deux propositions, elles sont fonctionnelles et répondent toutes les deux à ma demande.

Grand MERCI à tous les deux pour vos contributions.

Bonjour à tous,

Je rouvre momentanément cette discussion pour demander une petite mise à jour, à savoir comment peut-on (toujours) avec un double-clic sur les cellules de la colonne "BB" (N° colonne = 54) et toujours avec l’opérateur "Like" :

si une cellule de la colonne "BB" se termine avec les deux caractères "MM", cette dernière se colore en gris, de même, si je double-clic (de nouveau) sur cette même cellule (colorée) le fond de couleur grise sera effacé.

J’ai essayé d’ajouter un test supplémentaire à la suite de ce que MFerrand m’a déjà proposé mais rien n’est fait :

ElseIf Target.Column = 54 And Target Like "*[MM]" Then

clr = RGB(234, 234, 234)

D’avance Merci de votre soutien.

Bonjour,

Pas de chances ! J'avais rédigé une explication à peu près complète de l'utilisation de l'opérateur Like mais mon message est parti à la trappe (micro coupure réseau...)... un peu trop long de le réécrire en entier, je vais me limiter aux éléments utilisés dans le code (pour une vue plus complète, tu te réfèreras à l'Aide, l'article en est suffisamment explicite).

Avec Like, on compare une chaîne texte à un modèle. Par ailleurs la comparaison peut se faire en mode texte ou en mode binaire, l'option par défaut (quand on n'en indique pas en tête de module) est en mode binaire, qui différencie donc majuscules et minuscules.

*[fF] est un modèle qui permet de rechercher une chaîne se terminant par la lettre F (f ou F) [plusieurs caractères entre crochets signifient un seul caractère de la chaîne à la position indiquée pouvant l'un des caractères mentionnés]

*[mM] est un modèle qui permet de rechercher une chaîne se terminant par la lettre M (m ou M)...

si une cellule de la colonne "BB" se termine avec les deux caractères "MM", cette dernière se colore en gris, de même, si je double-clic (de nouveau) sur cette même cellule (colorée) le fond de couleur grise sera effacé.

Il est donc question de distinguer pour les chaînes se terminant par un M, celles dont l'avant-dernier caractère est également un M de celles dont ce n'est pas le cas :

  • pour les chaînes se terminant par deux M (maj. ou min.) on établira le modèle : *[mM][mM]
  • et pour les chaînes dont l'avant dernier caractère n'est pas un M : *[!mM][mM] [le point d'exclamation placé devant les caractères mis entre crochets indique que ces caractères doivent être absents, cela inverse le sens de la comparaison]

Le code deviendrait donc :

        If Target Like "*[fF]" Then
            clr = RGB(255, 204, 153)
        ElseIf Target Like "*[!mM][mM]" Then
                clr = vbYellow
        ElseIf Target Like "*[mM][mM]" Then
            clr = RGB(234, 234, 234)
        Else
            clr = xlNone
        End If

Toutefois ce code s'applique sur les colonnes 40 à 54... Si la dernière disposition introduite ne doit concerner que la colonne 54, il convient alors de la placer en cas particulier du cas des chaînes se terminant en M :

        If Target Like "*[fF]" Then
            clr = RGB(255, 204, 153)
        ElseIf Target Like "*[mM]" Then
            If Target.Column = 54 And Target Like "*[mM][mM]" Then
                clr = RGB(234, 234, 234)
            Else
                clr = vbYellow
            End If
        Else
            clr = xlNone
        End If

Cordialement.

Bonjour MFerrand,

Merci pour la 2eme solution, c'est elle qui répond à mon cas.

Merci également pour les explications, d’être disponible pour les autres et surtout le fait de partager son savoir.

Amicalement et cordiale poignée de mains.

Bonne continuation.

Rechercher des sujets similaires à "colorer double clic"