Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro : format couleur caractères après changement valeur dans une cellule

5 réponses
Avatar
Domi
Bojour à tous,

J'utilisais depuis plusieurs années ce petit code qui me permettait de
colorier en rouge des caractères dans une cellule. Depuis que je suis passé
à Excel 2003, cela ne fonctionne plus. Où est l'erreur ?
Quelques explications.
Dans la cellule E5, je saisie une référence (16 caractères). J'ai dans la
plage G19:V19 des formules qui me renvoient un caractère issu d'une autre
feuille fonction de la valeur saisie en E5 (G19 : valeur fonction du 1er
caractère dans E5, dans H19 valeur fonction du 2eme caractère dans E5, dans
I19 valeur fonction du 3eme caractère dans E5...etc juqu'au 16eme dans V19.
pas de problème de ce côté...

Lorsque je valide la saisie dans E5 (Enter), les formules renvoient les
valeurs dans la plage G19:V19 puis la macro se poursuit pour colorier en
rouge les caractères de E5 qui sont différents de la valeur des cellules :
Ex si 3eme caractère en E5 = "E" et que la formule en I9 est <> de "E", le
"E" de E5 devient rouge.
J'ai un messag

'Pour mettre en rouge les caracteres incorrectes
For i = 1 To 16
If Range("g19:v19").Cells(i) <> Mid(Range("E5"), i, 1) Then
Range("E5").Characters(i, 1).Font.ColorIndex = 3 ''' ça
coince sur cette ligne......
Else
Range("E5").Characters(i, 1).Font.ColorIndex = 1
End If
Next

Merci pour votre aide
Domi

5 réponses

Avatar
Tatanka
Bonsoir,

Et comme ceci, ça fonctionne ?
La macro fait la différence entre minuscule et majuscule.

Sub Essai()
Set p = [e5]
Set q = [g19:v19]
For i = 1 To 16
If CStr(q(i)) = Mid(p, i, 1) Then
p.Characters(i, 1).Font.ColorIndex = 1
Else
p.Characters(i, 1).Font.ColorIndex = 3
End If
Next i
End Sub

Serge


"Domi" a écrit dans le message de news:

Bojour à tous,

J'utilisais depuis plusieurs années ce petit code qui me permettait de
colorier en rouge des caractères dans une cellule. Depuis que je suis
passé à Excel 2003, cela ne fonctionne plus. Où est l'erreur ?
Quelques explications.
Dans la cellule E5, je saisie une référence (16 caractères). J'ai dans la
plage G19:V19 des formules qui me renvoient un caractère issu d'une autre
feuille fonction de la valeur saisie en E5 (G19 : valeur fonction du 1er
caractère dans E5, dans H19 valeur fonction du 2eme caractère dans E5,
dans I19 valeur fonction du 3eme caractère dans E5...etc juqu'au 16eme
dans V19. pas de problème de ce côté...

Lorsque je valide la saisie dans E5 (Enter), les formules renvoient les
valeurs dans la plage G19:V19 puis la macro se poursuit pour colorier en
rouge les caractères de E5 qui sont différents de la valeur des cellules :
Ex si 3eme caractère en E5 = "E" et que la formule en I9 est <> de "E", le
"E" de E5 devient rouge.
J'ai un messag

'Pour mettre en rouge les caracteres incorrectes
For i = 1 To 16
If Range("g19:v19").Cells(i) <> Mid(Range("E5"), i, 1) Then
Range("E5").Characters(i, 1).Font.ColorIndex = 3 ''' ça
coince sur cette ligne......
Else
Range("E5").Characters(i, 1).Font.ColorIndex = 1
End If
Next

Merci pour votre aide
Domi




Avatar
Tatanka
Et celle-ci ne fait pas de différence entre minuscule et majuscule :

Sub Essai()
Set p = [e5]
Set q = [g19:v19]
For i = 1 To 16
If UCase(q(i)) = UCase(Mid(p, i, 1)) Then
p.Characters(i, 1).Font.ColorIndex = 1
Else
p.Characters(i, 1).Font.ColorIndex = 3
End If
Next i
End Sub

Serge



"Tatanka" a écrit dans le message de news:
m7FYj.39290$
Bonsoir,

Et comme ceci, ça fonctionne ?
La macro fait la différence entre minuscule et majuscule.

Sub Essai()
Set p = [e5]
Set q = [g19:v19]
For i = 1 To 16
If CStr(q(i)) = Mid(p, i, 1) Then
p.Characters(i, 1).Font.ColorIndex = 1
Else
p.Characters(i, 1).Font.ColorIndex = 3
End If
Next i
End Sub

Serge


"Domi" a écrit dans le message de news:

Bojour à tous,

J'utilisais depuis plusieurs années ce petit code qui me permettait de
colorier en rouge des caractères dans une cellule. Depuis que je suis
passé à Excel 2003, cela ne fonctionne plus. Où est l'erreur ?
Quelques explications.
Dans la cellule E5, je saisie une référence (16 caractères). J'ai dans la
plage G19:V19 des formules qui me renvoient un caractère issu d'une autre
feuille fonction de la valeur saisie en E5 (G19 : valeur fonction du 1er
caractère dans E5, dans H19 valeur fonction du 2eme caractère dans E5,
dans I19 valeur fonction du 3eme caractère dans E5...etc juqu'au 16eme
dans V19. pas de problème de ce côté...

Lorsque je valide la saisie dans E5 (Enter), les formules renvoient les
valeurs dans la plage G19:V19 puis la macro se poursuit pour colorier en
rouge les caractères de E5 qui sont différents de la valeur des cellules
:
Ex si 3eme caractère en E5 = "E" et que la formule en I9 est <> de "E",
le "E" de E5 devient rouge.
J'ai un messag

'Pour mettre en rouge les caracteres incorrectes
For i = 1 To 16
If Range("g19:v19").Cells(i) <> Mid(Range("E5"), i, 1) Then
Range("E5").Characters(i, 1).Font.ColorIndex = 3 ''' ça
coince sur cette ligne......
Else
Range("E5").Characters(i, 1).Font.ColorIndex = 1
End If
Next

Merci pour votre aide
Domi








Avatar
Domi
Merci pour la rapidité,
hélas j'ai toujours le même plantage
sur p.Characters(i, 1).Font.ColorIndex = 1
si j'intègre ton code (en remplacement du mien dans ma macro.

Si j'utilise ton code seul, j'ai aussi un plantage "erreur d'execution
1004..

Ci dessous l'intégralité de la macro (dont je ne suis pas l'auteur)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Application.ScreenUpdating = False
Dim isect As Range
On Error GoTo errhnd
Set isect = Application.Intersect(Target, Range("E5"))
If isect Is Nothing Then Exit Sub

Application.EnableEvents = False

For Each c In isect.Cells
Target.Value = UCase(Target.Value)
Next

errhnd:

'Pour mettre en rouge les caracteres qui sont inconnus
For i = 1 To 16
If Range("g19:v19").Cells(i) <> Mid(Range("E5"), i, 1) Then
Range("E5").Characters(i, 1).Font.ColorIndex = 3
Else
Range("E5").Characters(i, 1).Font.ColorIndex = 1
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True

If Range("E5") = "" Then [H21].Value = ""
Range("E5").Select

End Sub



"Tatanka" a écrit dans le message de news:
BiFYj.39490$
Et celle-ci ne fait pas de différence entre minuscule et majuscule :

Sub Essai()
Set p = [e5]
Set q = [g19:v19]
For i = 1 To 16
If UCase(q(i)) = UCase(Mid(p, i, 1)) Then
p.Characters(i, 1).Font.ColorIndex = 1
Else
p.Characters(i, 1).Font.ColorIndex = 3
End If
Next i
End Sub

Serge



"Tatanka" a écrit dans le message de news:
m7FYj.39290$
Bonsoir,

Et comme ceci, ça fonctionne ?
La macro fait la différence entre minuscule et majuscule.

Sub Essai()
Set p = [e5]
Set q = [g19:v19]
For i = 1 To 16
If CStr(q(i)) = Mid(p, i, 1) Then
p.Characters(i, 1).Font.ColorIndex = 1
Else
p.Characters(i, 1).Font.ColorIndex = 3
End If
Next i
End Sub

Serge


"Domi" a écrit dans le message de news:

Bojour à tous,

J'utilisais depuis plusieurs années ce petit code qui me permettait de
colorier en rouge des caractères dans une cellule. Depuis que je suis
passé à Excel 2003, cela ne fonctionne plus. Où est l'erreur ?
Quelques explications.
Dans la cellule E5, je saisie une référence (16 caractères). J'ai dans
la
plage G19:V19 des formules qui me renvoient un caractère issu d'une
autre
feuille fonction de la valeur saisie en E5 (G19 : valeur fonction du 1er
caractère dans E5, dans H19 valeur fonction du 2eme caractère dans E5,
dans I19 valeur fonction du 3eme caractère dans E5...etc juqu'au 16eme
dans V19. pas de problème de ce côté...

Lorsque je valide la saisie dans E5 (Enter), les formules renvoient les
valeurs dans la plage G19:V19 puis la macro se poursuit pour colorier en
rouge les caractères de E5 qui sont différents de la valeur des cellules
:
Ex si 3eme caractère en E5 = "E" et que la formule en I9 est <> de "E",
le "E" de E5 devient rouge.
J'ai un messag

'Pour mettre en rouge les caracteres incorrectes
For i = 1 To 16
If Range("g19:v19").Cells(i) <> Mid(Range("E5"), i, 1) Then
Range("E5").Characters(i, 1).Font.ColorIndex = 3 ''' ça
coince sur cette ligne......
Else
Range("E5").Characters(i, 1).Font.ColorIndex = 1
End If
Next

Merci pour votre aide
Domi













Avatar
Philippe.R
Bonsoir,
A tout hasard, n'y aurait il pas un problème de variables non déclarées ou
mal typées ?
Tente un débogage aves éventuellement l'ajout de l'instruction option
explicit en tête de module
(chez moi, ton code fonctionne apparemment sans difficulté)
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Domi" a écrit dans le message de
news:
Merci pour la rapidité,
hélas j'ai toujours le même plantage
sur p.Characters(i, 1).Font.ColorIndex = 1
si j'intègre ton code (en remplacement du mien dans ma macro.

Si j'utilise ton code seul, j'ai aussi un plantage "erreur d'execution
1004..

Ci dessous l'intégralité de la macro (dont je ne suis pas l'auteur)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Application.ScreenUpdating = False
Dim isect As Range
On Error GoTo errhnd
Set isect = Application.Intersect(Target, Range("E5"))
If isect Is Nothing Then Exit Sub

Application.EnableEvents = False

For Each c In isect.Cells
Target.Value = UCase(Target.Value)
Next

errhnd:

'Pour mettre en rouge les caracteres qui sont inconnus
For i = 1 To 16
If Range("g19:v19").Cells(i) <> Mid(Range("E5"), i, 1) Then
Range("E5").Characters(i, 1).Font.ColorIndex = 3
Else
Range("E5").Characters(i, 1).Font.ColorIndex = 1
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True

If Range("E5") = "" Then [H21].Value = ""
Range("E5").Select

End Sub



"Tatanka" a écrit dans le message de news:
BiFYj.39490$
Et celle-ci ne fait pas de différence entre minuscule et majuscule :

Sub Essai()
Set p = [e5]
Set q = [g19:v19]
For i = 1 To 16
If UCase(q(i)) = UCase(Mid(p, i, 1)) Then
p.Characters(i, 1).Font.ColorIndex = 1
Else
p.Characters(i, 1).Font.ColorIndex = 3
End If
Next i
End Sub

Serge



"Tatanka" a écrit dans le message de news:
m7FYj.39290$
Bonsoir,

Et comme ceci, ça fonctionne ?
La macro fait la différence entre minuscule et majuscule.

Sub Essai()
Set p = [e5]
Set q = [g19:v19]
For i = 1 To 16
If CStr(q(i)) = Mid(p, i, 1) Then
p.Characters(i, 1).Font.ColorIndex = 1
Else
p.Characters(i, 1).Font.ColorIndex = 3
End If
Next i
End Sub

Serge


"Domi" a écrit dans le message de news:

Bojour à tous,

J'utilisais depuis plusieurs années ce petit code qui me permettait de
colorier en rouge des caractères dans une cellule. Depuis que je suis
passé à Excel 2003, cela ne fonctionne plus. Où est l'erreur ?
Quelques explications.
Dans la cellule E5, je saisie une référence (16 caractères). J'ai dans
la
plage G19:V19 des formules qui me renvoient un caractère issu d'une
autre
feuille fonction de la valeur saisie en E5 (G19 : valeur fonction du
1er
caractère dans E5, dans H19 valeur fonction du 2eme caractère dans E5,
dans I19 valeur fonction du 3eme caractère dans E5...etc juqu'au 16eme
dans V19. pas de problème de ce côté...

Lorsque je valide la saisie dans E5 (Enter), les formules renvoient les
valeurs dans la plage G19:V19 puis la macro se poursuit pour colorier
en
rouge les caractères de E5 qui sont différents de la valeur des
cellules
:
Ex si 3eme caractère en E5 = "E" et que la formule en I9 est <> de "E",
le "E" de E5 devient rouge.
J'ai un messag

'Pour mettre en rouge les caracteres incorrectes
For i = 1 To 16
If Range("g19:v19").Cells(i) <> Mid(Range("E5"), i, 1) Then
Range("E5").Characters(i, 1).Font.ColorIndex = 3 ''' ça
coince sur cette ligne......
Else
Range("E5").Characters(i, 1).Font.ColorIndex = 1
End If
Next

Merci pour votre aide
Domi

















Avatar
Domi
Tout est rentré dans l'ordre, problème de protection de feuille à priori.
Merci ;o)
Domi

"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Bonsoir,
A tout hasard, n'y aurait il pas un problème de variables non déclarées ou
mal typées ?
Tente un débogage aves éventuellement l'ajout de l'instruction option
explicit en tête de module
(chez moi, ton code fonctionne apparemment sans difficulté)
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Domi" a écrit dans le message de
news:
Merci pour la rapidité,
hélas j'ai toujours le même plantage
sur p.Characters(i, 1).Font.ColorIndex = 1
si j'intègre ton code (en remplacement du mien dans ma macro.

Si j'utilise ton code seul, j'ai aussi un plantage "erreur d'execution
1004..

Ci dessous l'intégralité de la macro (dont je ne suis pas l'auteur)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Application.ScreenUpdating = False
Dim isect As Range
On Error GoTo errhnd
Set isect = Application.Intersect(Target, Range("E5"))
If isect Is Nothing Then Exit Sub

Application.EnableEvents = False

For Each c In isect.Cells
Target.Value = UCase(Target.Value)
Next

errhnd:

'Pour mettre en rouge les caracteres qui sont inconnus
For i = 1 To 16
If Range("g19:v19").Cells(i) <> Mid(Range("E5"), i, 1) Then
Range("E5").Characters(i, 1).Font.ColorIndex = 3
Else
Range("E5").Characters(i, 1).Font.ColorIndex = 1
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True

If Range("E5") = "" Then [H21].Value = ""
Range("E5").Select

End Sub



"Tatanka" a écrit dans le message de news:
BiFYj.39490$
Et celle-ci ne fait pas de différence entre minuscule et majuscule :

Sub Essai()
Set p = [e5]
Set q = [g19:v19]
For i = 1 To 16
If UCase(q(i)) = UCase(Mid(p, i, 1)) Then
p.Characters(i, 1).Font.ColorIndex = 1
Else
p.Characters(i, 1).Font.ColorIndex = 3
End If
Next i
End Sub

Serge



"Tatanka" a écrit dans le message de news:
m7FYj.39290$
Bonsoir,

Et comme ceci, ça fonctionne ?
La macro fait la différence entre minuscule et majuscule.

Sub Essai()
Set p = [e5]
Set q = [g19:v19]
For i = 1 To 16
If CStr(q(i)) = Mid(p, i, 1) Then
p.Characters(i, 1).Font.ColorIndex = 1
Else
p.Characters(i, 1).Font.ColorIndex = 3
End If
Next i
End Sub

Serge


"Domi" a écrit dans le message de news:

Bojour à tous,

J'utilisais depuis plusieurs années ce petit code qui me permettait de
colorier en rouge des caractères dans une cellule. Depuis que je suis
passé à Excel 2003, cela ne fonctionne plus. Où est l'erreur ?
Quelques explications.
Dans la cellule E5, je saisie une référence (16 caractères). J'ai dans
la
plage G19:V19 des formules qui me renvoient un caractère issu d'une
autre
feuille fonction de la valeur saisie en E5 (G19 : valeur fonction du
1er
caractère dans E5, dans H19 valeur fonction du 2eme caractère dans E5,
dans I19 valeur fonction du 3eme caractère dans E5...etc juqu'au 16eme
dans V19. pas de problème de ce côté...

Lorsque je valide la saisie dans E5 (Enter), les formules renvoient
les
valeurs dans la plage G19:V19 puis la macro se poursuit pour colorier
en
rouge les caractères de E5 qui sont différents de la valeur des
cellules
:
Ex si 3eme caractère en E5 = "E" et que la formule en I9 est <> de
"E",
le "E" de E5 devient rouge.
J'ai un messag

'Pour mettre en rouge les caracteres incorrectes
For i = 1 To 16
If Range("g19:v19").Cells(i) <> Mid(Range("E5"), i, 1) Then
Range("E5").Characters(i, 1).Font.ColorIndex = 3 '''
ça
coince sur cette ligne......
Else
Range("E5").Characters(i, 1).Font.ColorIndex = 1
End If
Next

Merci pour votre aide
Domi