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 !
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.