Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Coloration après double clic (1 des 3 cases seulement)

  • Initiateur de la discussion Initiateur de la discussion anthoYS
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

anthoYS

XLDnaute Barbatruc
Bonjour,

J'ai un fichier avec le niveau de maîtrise de tâches, le but est d'améliorer le code existant qui permet de colorer une ou les trois cases d'une même ligne soit en rouge, soit ou et en jaune, et soit ou et une autre en vert.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 2 Then
Cells(Target.Row, 2).Interior.ColorIndex = 3
End If
If Target.Column = 3 Then
Cells(Target.Row, 3).Interior.ColorIndex = 6
End If
If Target.Column = 4 Then
Cells(Target.Row, 4).Interior.ColorIndex = 4
End If
End Sub

Merci à vous par avance,

référez-vous au fichier joint, si après lecture, ça n'est pas suffisant. 🙂
 

Pièces jointes

Re : Coloration après double clic (1 des 3 cases seulement)

Bonjour,

Pour remettre à blanc, un essai ci-dessous (mais on doit pouvoir écrire mieux que ça ... 😱)
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 2 Then
    If Cells(Target.Row, 2).Interior.ColorIndex = 3 Then
        Cells(Target.Row, 2).Interior.ColorIndex = 0
        Else
        Cells(Target.Row, 2).Interior.ColorIndex = 3
    End If
End If
If Target.Column = 3 Then
    If Cells(Target.Row, 3).Interior.ColorIndex = 6 Then
        Cells(Target.Row, 3).Interior.ColorIndex = 0
        Else
        Cells(Target.Row, 3).Interior.ColorIndex = 6
    End If
End If
If Target.Column = 4 Then
    If Cells(Target.Row, 4).Interior.ColorIndex = 4 Then
        Cells(Target.Row, 4).Interior.ColorIndex = 0
        Else
        Cells(Target.Row, 4).Interior.ColorIndex = 4
    End If
End If
End Sub

Bonne journée,

mth
 
Re : Coloration après double clic (1 des 3 cases seulement)

Bonjour à tous,

Essayes ceci :
Pour colorier, j'utilise les couleurs de remplissage des cellules de la ligne 2 !

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Column >= 2 And Target.Column <= 4 Then
    If Target.Interior.ColorIndex = xlNone Then
      Range(Cells(Target.Row, 2), Cells(Target.Row, 4)).Interior.ColorIndex = xlNone
      Target.Interior.ColorIndex = Cells(2, Target.Column).Interior.ColorIndex
    Else
      Range(Cells(Target.Row, 2), Cells(Target.Row, 4)).Interior.ColorIndex = xlNone
    End If
  End If
  Cancel = True
End Sub

Caillou
 
Re : Coloration après double clic (1 des 3 cases seulement)

Re,

Merci mth, bien que tu a saisi, ça n'est pas exactement ce que je souhaite...
Ici, il faut un clic pour colorer et un autre pour décolorer, en plus, ça rentre dans la cellule, mon souhait c'est de colorer sans rentrer dans le cellule comme pour saisir, perte de temps.

Mais merci c'est un début, en espérant mieux.

Bonne journée à toi egalement.
 
Re : Coloration après double clic (1 des 3 cases seulement)

Re,

Merci Caillou, tout semble bon (rouge et jaune, en B et C), sauf que le problème est le suivant :
-Lorsque l'on clique en D.

Voici le débogage :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Column >= 2 And Target.Column <= 4 Then
    If Target.Interior.ColorIndex = xlNone Then
      Range(Cells(Target.Row, 2), Cells(Target.Row, 4)).Interior.ColorIndex = xlNone
     [COLOR="Red"] Target.Interior.ColorIndex = Cells(2, Target.Column).Interior.ColorIndex[/COLOR]
    Else
      Range(Cells(Target.Row, 2), Cells(Target.Row, 4)).Interior.ColorIndex = xlNone
    End If
  End If
  Cancel = True
End Sub

@+
 
Re : Coloration après double clic (1 des 3 cases seulement)

Re,

C'est exact, j'ai testé sur le fichier que j'ai posté.
Parce qu'en fait, je m'explique, j'ai transposé le code dans une feuille ou les cases sont disposés de la même manière...
Je pensait, que l'execution serait la même, ... en fait ... non!

Pourquoi? Je me le demande toujours...

Voilà
 
Re : Coloration après double clic (1 des 3 cases seulement)

Re,

Voici le message d'erreur :
Uniquement quand je clique en D uniquement, B et C étant fonctionnels (rouge et jaune)

Microsoft VB
Erreur d'execution '9'
L'indice n'appartient pas à la selection

Puis une image du débogage :



Merci et @+!
 
Re : Coloration après double clic (1 des 3 cases seulement)

re 🙂

Testé sur Excel 2007 donc comme toi anthoYS, le code proposé par Caillou fonctionne parfaitement chez moi 😕

@ +

m
 
Re : Coloration après double clic (1 des 3 cases seulement)

Salut

erreur vraiment bizarre !
essaie cette proposition (2 cas).
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim Li As Integer, Col As Byte, Coul
  Li = Target.Row: Col = Target.Column
  Coul = Target.Interior.ColorIndex
  [COLOR="DarkGreen"]'B, C et D[/COLOR]
  If Col > 1 And Col < 5 And Li > 2 Then
    Range("B" & Li & ":D" & Li).Interior.ColorIndex = xlNone
    If Coul = xlNone Then Target.Interior.ColorIndex = Cells(2, Col).Interior.ColorIndex
  End If
  '[COLOR="DarkGreen"]E et F[/COLOR]
  If Col > 4 And Col < 7 And Li > 2 Then
    Range("E" & Li & ":F" & Li).Interior.ColorIndex = xlNone
    If Coul = xlNone Then Target.Interior.ColorIndex = Cells(2, Col).Interior.ColorIndex
  End If
  Cancel = True
End Sub
 
Re : Coloration après double clic (1 des 3 cases seulement)

re,

Merci Fo_rum,

Je te cite :
erreur vraiment bizarre !
à qui le dit tu!?!!
Je sais mais je n'y peut rien. C'est parfois curieux.

J'essaierai quand j'aurais le fichier source sous la main. Car là, je ne suis plus chez moi.

@+
 
Re : Coloration après double clic (1 des 3 cases seulement)

Bonjour le fil 🙂,
Peut-être un soucis avec une couleur qui ne correspond pas exactement à un ColorIndex.
A essayer
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Column >= 2 And Target.Column <= 4 Then
    If Target.Interior.ColorIndex = xlNone Then
      Range(Cells(Target.Row, 2), Cells(Target.Row, 4)).Interior.ColorIndex = xlNone
[COLOR=red][B]      Target.Interior.Color = Cells(2, Target.Column).Interior.Color
[/B][/COLOR]    Else
      Range(Cells(Target.Row, 2), Cells(Target.Row, 4)).Interior.ColorIndex = xlNone
    End If
  End If
  Cancel = True
End Sub
Bonne journée 😎
 
Re : Coloration après double clic (1 des 3 cases seulement)

JNP,
Peut-être un soucis avec une couleur qui ne correspond pas exactement à un ColorIndex.
à mon avis le pb ne vient pas de là !
Par contre tu as raison, la propriété Color est plus adapté que ColorIndex. Je viens de faire un essai avec 2007 et avec ColorIndex, si le colorindex n'exite pas, Excel choisit une couleur différente, tandis-qu'avec Color cela fonctionne parfaitement.

Caillou
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
586
Réponses
3
Affichages
643
Réponses
3
Affichages
430
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…