Changement couleur si double cllick cellule + texte avec VBA

Bonjour à tous,

Je suis à la recherche d'une macro VBA qui me permettrait de colorer la cellule en colonne N si sa cellule associée en B est RGB (255,0,0)

La cellule en N doit se colorer de la manière suivante:

Par défaut, RGB (169,208,142) + texte "Faible"

Si double click: RGB (224,249,101) + texte "Moyen"

Si double click: RGB (196,89,60) + texte "Haut"

Si double click on revient à RGB (169,208,142) + texte "Faible"

Dans l'idéal, j'aimerais que ce code soit fait avec VBA plutôt qu'une mise en forme conditionnelle

Merci à vous :)

JB

Bonsoir,

voici un code à mettre sur la feuille concernée :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    ' on test le "lieu" du double clic, si c'est un tableau structuré alors adaptation du code
    ' pour cibler que la colonne voulue
    If Not Intersect(Target, Range("N:N")) Is Nothing And Target.CountLarge = 1 And Range("B" & Target.Row).Interior.Color = RGB(255,0,0) Then
        ' inihibition de l'entrée en saisie de la saisie
        Cancel = True
        ' arrêt de la surveillance événementielle
        Application.EnableEvents = False
        If Target.Value = "Faible" Then
            Target.Value = "Moyen"
            Target.Interior.Color = RGB(224, 249, 101)
        ElseIf Target.Value = "Moyen" Then
            Target.Value = "Fort"
            Target.Interior.Color = RGB(196, 89, 60)
        ElseIf Target.Value = "Fort" Then
            Target.Value = "Faible"
            Target.Interior.Color = RGB(169, 208, 142)
        Else
            ' si la cellule est vide on commence à faible
            Target.Value = "Faible"
            Target.Interior.Color = RGB(169, 208, 142)
        End If
        ' mise en marche de la surveillance événementielle
        Application.EnableEvents = True
    End If
End Sub

@ bientôt

LouReeD

Edit : Merci X Cellus d'avoir mis le doigt sur une partie de la demande que je n'avais pas pris en compte dans ma précipitation !

Bonsoir JeanBaptisteP,

En retour un exemple à essayer.

Voir notes en rouge.

Bonsoir LouReeD, XCellus,

Merci pour vos propositions!

LouReed, la vôtre me correspond davantage, seulement pour colorer en colonne N je voudrais qu'on prenne en compte la couleur de la colonne B et ce pour chaque ligne.

Si en colonne B on a RGB (255,0,0) alors dans ce cas on autorise la coloration en N

Est-ce possible de modifier le code du type:

If Range("B"&i).InteriorColor = RGB (255,0,0)  then
If Not Intersect(Target, Range("N"&i)) Is Nothing And Target.CountLarge = 1 Then
        ' inihibition de l'entrée en saisie de la saisie
        Cancel = True
        ' arrêt de la surveillance événementielle
        Application.EnableEvents = False
        If Target.Value = "Faible" Then
            Target.Value = "Moyen"
            Target.Interior.Color = RGB(224, 249, 101)
        ElseIf Target.Value = "Moyen" Then
            Target.Value = "Fort"
            Target.Interior.Color = RGB(196, 89, 60)
        ElseIf Target.Value = "Fort" Then
            Target.Value = "Faible"
            Target.Interior.Color = RGB(169, 208, 142)
        Else
            ' si la cellule est vide on comme

Merci à vous

JB

Bonjour,

comme indiqué dans mon message précédent, j'ai fait une édition de celui-ci à la lecture instructive de celui de X Cellus ! Donc normalement suite à cette dernière édition le code devrait vous convenir.

@ bientôt

LouReeD

Bonjour JeanBaptisteP, LouReedD,

Bon, j'ai lu comme je voulais voir

Alors je t'envoies le modèle clic-clic (clic-clac c'est autre chose) comme tu souhaites.

Gardes seulement la macro ci-dessous dans le fichier.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Count = 1 And Target.Column = 14 And Range("B" & Target.Row).Interior.Color = vbRed Then
Cancel = True
Select Case Left(Target, 1)
Case Is = "F"
ActiveCell.Interior.Color = RGB(224, 249, 101): ActiveCell = "Moyen"
Case Is = "M"
ActiveCell.Interior.Color = RGB(196, 89, 60): ActiveCell = "Haut"
Case Is = "H", ""
ActiveCell.Interior.Color = RGB(169, 208, 142): ActiveCell = "Faible"
End Select
End If
End Sub

Bonjour LouReeD,XCellus,

Merci beaucoup à vous 2 pour avoir passé du temps sur ma problématique !

Le code proposé répond à mon besoin. Par contre j'ai un dernier souci, en fait j'ai déjà une macro qui me permet de colorer les cases A ou B par un double click ou annuler la coloration par un click droit.

J'aimerais, dès lors que la cellule en colonne B repasse en incolore, que le fond de cellule N repasse lui aussi en incolore (le texte disparait lui aussi).

Par contre ce que je n'ai pas réussi à tester, c'est dès lors que je fais un double click gauche en colonne B, la cellule passe en rouge mais en N la coloration verte "Faible" n'apparait pas automatiquement. Est-ce possible de modifier cela ?

Je dépose mon fichier ici, cela sera plus simple pour comprendre.

Merci encore à vous 2

JB

Bonsoir JeanBaptisteP,

Selon ta dernière remarque, si double-clic sur la colonne B l'amenant en fond rouge. Alors en colonne N apparaît la coloration vert (léger) avec le mot "Faible".

Puis en colonne N on peut faire évoluer l'inscription par double-clic.

Si double-clic en colonne A alors elle passe en fond vert, en colonne B pas de couleur et idem en colonne N avec effacement du texte.

Ci-dessous le fichier pour cela. voir code en feuille VT1

Bonjour XCellus,

Merci c'est parfait !

Juste une dernière demande, un click droit en colonne A ou B sur la feuille VT1 me permet d'enlever la coloration de la cellule. Le code est présent sous la feuille de la feuille VT1. J'aimerais que si on fait un click droit en colonne A ou B (la coloration dans la cellule disparait) que l'on puisse effacer la coloration en colonne N ainsi que le texte.

Est-ce possible de modifier le code s'il vous plait ?

Encore un grand merci, mon projet avance grâce à vous !

JB

Bonjour JeanBaptisteP,

Adaptation du clic droit comme ci-dessous.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column < 3 And Target.Row > 7 And Target.Text = "" Then Range("A" & Target.Row & ":B" & Target.Row).Interior.Pattern = xlNone Else Exit Sub
If Target.Column < 3 Then Range("N" & Target.Row) = "": Range("N" & Target.Row).Interior.Color = xlNone
Cancel = True
End Sub

Avec une deuxième condition If Target.column < 3 Then Range...

Cela mettra les 2 ières colonnes en blanc ainsi que la colonne N

Note: que dans le fichier précédent le double-clic sur colonne A (passage au vert) efface aussi la colonne N.

Bonjour XCellus,

Tout est parfait, cela fonctionne très bien sur mon projet !

Un grand merci à vous :)

Bonne journée

JB

Rechercher des sujets similaires à "changement couleur double cllick texte vba"