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

Le
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 E5etc 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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Tatanka
Le #6670431
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"
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




Tatanka
Le #6670421
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" 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"
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








Domi
Le #6671231
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" 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" 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"
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













Philippe.R
Le #6678591
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" 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" 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" 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"
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

















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

"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" 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" 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" 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"
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




















Publicité
Poster une réponse
Anonyme