bonjour le forum
existe t il un code évènementiel qui agirai lors d un changement de couleur du texte d'une cellule ou du fond de la cellule?
Merci
bonjour le forum
existe t il un code évènementiel qui agirai lors d un changement de couleur du texte d'une cellule ou du fond de la cellule?
Merci
Bonjour,
Réponse : Non.
De plus une modification de couleur n'active aucun événement de feuille, donc pas possible d'employer une astuce pour y arriver.
A+
Bonjour,
Ce code fonctionne mais uniquement si la modification de couleur est générée par l'utilisateur
Code à coller au niveau de la feuille a surveiller
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Public StrAddresse As String Public StrValeur As String Private Sub Worksheet_SelectionChange(ByVal Target As Range) If StrAddresse <> "" Then If StrValeur <> Range(StrAddresse).Interior.Color Then MsgBox "Modification de la cellule" End If StrValeur = Target.Interior.Color StrAddresse = Target.Address End Sub
Bonjour,
Ton code marche bien, merci.
deux petites questions (enfin, une petite et une grande) :
Étant débutant, dans ton code tu utilises deux IF et un seul END IF. je pensais que l on ne pouvait pas. Peut tu m'expliquer?
J ai essayé de modifier ton code pour l adapter à mon problème, pour le cibler à une colonne particulière, et uniquement a 2 couleurs particulières (comme indiqué dans les msgbox du code ci dessous).
Dans mon code final, selon la couleur, il mettra en place des formules différents dans d autre cellule, mais avant je veux bien comprendre.
ce que j ai fait ne marche pas.
merci pour ton aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If StrAddresse <> "" Then For Each c In Range("A1", "A" & Range("A65535").End(xlUp).Row) If StrValeur <> Range(StrAddresse).Interior.Color Then MsgBox "Modification de la cellule de noir en rouge" Else: MsgBox "vous avez modifié de rouge en noir" Else: MsgBox "cette couleur n'est pas autorisé" End If Next End If StrValeur = Target.Interior.Color StrAddresse = Target.Address End Sub
lene nécessite pas un end if
Code : Sélectionner tout - Visualiser dans une fenêtre à part if machin then truc
leend if obligatoire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if machin then truc else toto end if
leend if aussi obligatoire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if machin then truc end if
regarde déjà cela dans ton bout de code qui ne marchera pas certainement
à 1 seul if, 1 seul else
regarde aussi le elseif
reformule ta question
pour faire le test seulement sur la colonne, regarde du côte Target.Column
Tu n'es pas obligé de mettre end if si tout est écrit sur la meme ligne
Ce code t'oblige a mettre une couleur rouge ou noir si tu te trouve pas la colonne A
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Public rngAdresse As Range Public lngCouleur As Long Dim Bolretour As Boolean Private Sub Worksheet_SelectionChange(ByVal Target As Range) If rngAdresse Is Nothing Then Set rngAdresse = Target If rngAdresse.Column = 1 And Bolretour = True Then 'Test si la couleur est autorisé Select Case rngAdresse.Interior.Color Case 0, 255 If lngCouleur <> rngAdresse.Interior.Color Then MsgBox "vous avez modifié de rouge en noir" End If rngAdresse = Target Case Else MsgBox "cette couleur n'est pas autorisé" Bolretour = False rngAdresse.Select Exit Sub End Select Else Bolretour = True End If Set rngAdresse = Target lngCouleur = Target.Interior.Color End Sub
re
merci mais...
j ai un peu de mal et je ne vois pas comment l adapter a ce que je veux faire donc je vais vous reexpliquer par rapport a mon problème réel (j aurai certainement du le faire dés le debut,)
Voila j ai un premier code:
Ce code évènementiel adapte, au changement de la cellule $B$4, une formule dans les cellules ("V15", "V" & Range("C65535").End(xlUp).Row) selon la couleur du texte des cellules(C15 : "C" & Range("C65535").End(xlUp).Row)) .
Quand je change B4 si les noms dans la colonne C est écrit en rouge une formule en V de la même ligne va calculer un abattement de "B4"%
Il marche très bien dans le cas d une modification de B4.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 'calcul selon 2 formules différentes et selon couleur de C Private Sub Worksheet_Change(ByVal target As Range) If target.Address = Range("B4").Address Then For Each c In Range("V15", "V" & Range("C65535").End(xlUp).Row) If Range("C" & c.Row).Font.ColorIndex = 3 Then c.FormulaLocal = "=ARRONDI((H" & c.Row & "/100*(U" & c.Row & "-(U" & c.Row & "*$B$4/100)));0)" Else c.FormulaLocal = "=ARRONDI(H" & c.Row & "/100*U" & c.Row & ";0)" End If Next End If End Sub
Maintenant imaginons que je change la couleurs de texte d une des cellules (C15 : "C" & Range("C65535").End(xlUp).Row)) ;
deux solutions par exemple:
- le texte de c17 passe de Rouge en Noir alors V17 appliquerai la formule suivante :
- le texte C17 passe de noir en rouge alors V17 doit appliquer cette formule
Code : Sélectionner tout - Visualiser dans une fenêtre à part FormulaR1C1 = "=ROUND(RC[-14]/100*RC[-1],0)"
j espère que je suis clair, enfin pour moi mais je désespère pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part FormulaR1C1 ="=ROUND((RC[-15]/100*(RC[-1]-(RC[-1]*R4C2/100))),0)"
Merci pour l'aide
Partager