OVH Cloud OVH Cloud

.Interior.ColorIndex = 45 Inopérant ?

18 réponses
Avatar
LANIMAL
Bonjour,
(Excel 2000 sous XP)
Seule la ligne repérée en MAJUSC. et par !!!! pose pb.
Elle s'exécute en "pas à pas", mais pas en exécution normale.
Je ne trouve pas d'explication.
J'ai reproduit les qq lignes voisines pour donner le contexte.
En principe la ligne repérée ### n'est pas utile, je l'ai ajoutée pour
voir... mais je n'ai rien vu !
_____________________________________________
Sub Atteindre()
...
Sheets("Grille").Select
...

If Worksheets("param").Range("D20") = "OK" Then
LigneFiche = Worksheets("param").Range("C20")

Sheets("Données").Select
Range(Cells(LigneFiche, 1), Cells(LigneFiche, NbRub)).Select
Selection.Copy
Sheets("Grille").Select
Range("C4").PasteSpecial Paste:=xlValues, Transpose:=True
Range("C" & RubRéf + 3).Select
If Selection.Value <> Worksheets("param").Range("C17") Then
MsgBox "Valeur proche de la requête ... blabla"
End If
Else
### Sheets("Grille").Activate
Range("C" & RubRéf + 3).Select
!!!! SELECTION.INTERIOR.COLORINDEX = 45 'Rouge
MsgBox "Format de la requête... blabla"
SELECTION.INTERIOR.COLORINDEX = xlNone
LigneFiche = Worksheets("param").Range("C11")
Worksheets("Grille").Range("C" & RubRéf + 3) =
Worksheets("Données").Cells(LigneFiche, RubRéf)
End If
...
End Sub
__________________________________________

Merci à celui qui pourra m'éclairer.
Michel

8 réponses

1 2
Avatar
LANIMAL
Bonsoir
J'avais écrit la proc suivante et constaté qu'elle fonctionne

Sub Motif()
Range("A1").Interior.ColorIndex = 3
MsgBox "Vérifier la couleur de A1"
Range("A1").Interior.ColorIndex = xlNone
End Sub

J'ai alors écrit - isolément - l'adaptation telle que que tu me l'as
envoyée et ça marche chez moi aussi.
Alors il me reste a trouver pourquoi, dans mon contexte, ça marche en
mode pas à pas, et ça ne marche pas en mode normal.
Bonsoir et merci encore pour ton aide.


Mon cher Michel (prénom cher à mon coeur)
Ceci fonctionne chez moi (le : je passe à l'orange, ya pu rien !)
Sub Atteindre()
RubRéf = 2 'pour faire fonctionner le "Else"

'...
Sheets("Grille").Select
'...

If Worksheets("param").Range("D20") = "OK" Then
LigneFiche = Worksheets("param").Range("C20")

Sheets("Données").Select
Range(Cells(LigneFiche, 1), Cells(LigneFiche, NbRub)).Select
Selection.Copy
Sheets("Grille").Select
Range("C4").PasteSpecial Paste:=xlValues, Transpose:=True
Range("C" & RubRéf + 3).Select
If Selection.Value <> Worksheets("param").Range("C17") Then
MsgBox "Valeur proche de la requête ... blabla"
End If
Else

Range("C" & RubRéf + 3).Select
Selection.Interior.ColorIndex = 45 'Rouge
MsgBox "Format de la requête... blabla"
Selection.Interior.ColorIndex = xlNone
LigneFiche = Worksheets("param").Range("C11")
'Worksheets("Grille").Range("C" & RubRéf + 3) = _
'Worksheets("Données").Cells(LigneFiche, RubRéf)
End If
'...
End Sub




Avatar
jps
c'est peut-être parce qu'excel ne sait plus très bien où il est dans les
changements de feuilles
un petit ActiveSheet.Range ne mange pas de pain, parfois
comment t'as dit, twinley? comme dab?
jps

"LANIMAL" a écrit dans le message de news:
%23$
Bonsoir
J'avais écrit la proc suivante et constaté qu'elle fonctionne

Sub Motif()
Range("A1").Interior.ColorIndex = 3
MsgBox "Vérifier la couleur de A1"
Range("A1").Interior.ColorIndex = xlNone
End Sub

J'ai alors écrit - isolément - l'adaptation telle que que tu me l'as
envoyée et ça marche chez moi aussi.
Alors il me reste a trouver pourquoi, dans mon contexte, ça marche en
mode pas à pas, et ça ne marche pas en mode normal.
Bonsoir et merci encore pour ton aide.


Mon cher Michel (prénom cher à mon coeur)
Ceci fonctionne chez moi (le : je passe à l'orange, ya pu rien !)
Sub Atteindre()
RubRéf = 2 'pour faire fonctionner le "Else"

'...
Sheets("Grille").Select
'...

If Worksheets("param").Range("D20") = "OK" Then
LigneFiche = Worksheets("param").Range("C20")

Sheets("Données").Select
Range(Cells(LigneFiche, 1), Cells(LigneFiche, NbRub)).Select
Selection.Copy
Sheets("Grille").Select
Range("C4").PasteSpecial Paste:=xlValues, Transpose:=True
Range("C" & RubRéf + 3).Select
If Selection.Value <> Worksheets("param").Range("C17") Then
MsgBox "Valeur proche de la requête ... blabla"
End If
Else

Range("C" & RubRéf + 3).Select
Selection.Interior.ColorIndex = 45 'Rouge
MsgBox "Format de la requête... blabla"
Selection.Interior.ColorIndex = xlNone
LigneFiche = Worksheets("param").Range("C11")
'Worksheets("Grille").Range("C" & RubRéf + 3) = _
'Worksheets("Données").Cells(LigneFiche, RubRéf)
End If
'...
End Sub





Avatar
LANIMAL
Bonsoir... Suite et fin ... de cette histoire de fou que je suis ! !
J'avais simplement oublié que, comme dans ma proc je me ballade de
feuilles en feuilles, j'avais mis au début un
Application.ScreenUpdating = False
pour éviter le clignottement de l'écran pendant l'exécution.
Et voilà donc pourquoi ça marchait en pas à pas, et pas en normal.
Je me doutais bien que le hic était dans le contexte, mais fallait-il le
dénicher !
Et voilà aussi pourquoi en supprimant la ligne Color = xlNone, la
coloration apparaissait "après" la MsgBox, l'affichage de celle-ci
obligeant le raffraîchissement d'écran.
Du même coup (cela peut intéresser les débutants, comme celui que je
suis) j'ai compris qu'il faut éviter les couples d'instructions du type
Worksheets("xxxx").Range("A1").Select
Selection.Interior.ColorIndex = 3
qui sont à l'origine du clignottement d'écran. Ainsi il ny a plus besoin
de faire un Application.ScreenUpdating = False
Je le faisais souvent, en prenant modèle sur les macro "Enregistrées" -
méthode bien connue des débutants !

- - -Une question subsidiaire : Quand, comme dans le cas présent, je
veux répondre à plusieurs intervenants, est-il necessaire de répondre à
chacun (comme je le fais ici à jps et P.Aime),
ou sinon quel est l'usage ?
Encore merci à vous et merci aussi à Jacky.
Excusez-moi d'être aussi prolixe, je dois ennuyer qq lecteurs :-(((
Michel


c'est peut-être parce qu'excel ne sait plus très bien où il est dans les
changements de feuilles
un petit ActiveSheet.Range ne mange pas de pain, parfois
comment t'as dit, twinley? comme dab?
jps

"LANIMAL" a écrit dans le message de news:
%23$

Bonsoir
J'avais écrit la proc suivante et constaté qu'elle fonctionne

Sub Motif()
Range("A1").Interior.ColorIndex = 3
MsgBox "Vérifier la couleur de A1"
Range("A1").Interior.ColorIndex = xlNone
End Sub

J'ai alors écrit - isolément - l'adaptation telle que que tu me l'as
envoyée et ça marche chez moi aussi.
Alors il me reste a trouver pourquoi, dans mon contexte, ça marche en
mode pas à pas, et ça ne marche pas en mode normal.
Bonsoir et merci encore pour ton aide.



Mon cher Michel (prénom cher à mon coeur)
Ceci fonctionne chez moi (le : je passe à l'orange, ya pu rien !)
Sub Atteindre()
RubRéf = 2 'pour faire fonctionner le "Else"

'...
Sheets("Grille").Select
'...

If Worksheets("param").Range("D20") = "OK" Then
LigneFiche = Worksheets("param").Range("C20")

Sheets("Données").Select
Range(Cells(LigneFiche, 1), Cells(LigneFiche, NbRub)).Select
Selection.Copy
Sheets("Grille").Select
Range("C4").PasteSpecial Paste:=xlValues, Transpose:=True
Range("C" & RubRéf + 3).Select
If Selection.Value <> Worksheets("param").Range("C17") Then
MsgBox "Valeur proche de la requête ... blabla"
End If
Else

Range("C" & RubRéf + 3).Select
Selection.Interior.ColorIndex = 45 'Rouge
MsgBox "Format de la requête... blabla"
Selection.Interior.ColorIndex = xlNone
LigneFiche = Worksheets("param").Range("C11")
'Worksheets("Grille").Range("C" & RubRéf + 3) = _
'Worksheets("Données").Cells(LigneFiche, RubRéf)
End If
'...
End Sub







Avatar
LANIMAL
Bonsoir... Suite et fin ... de cette histoire de fou que je suis ! !
J'avais simplement oublié que, comme dans ma proc je me ballade de
feuilles en feuilles, j'avais mis au début un Application.ScreenUpdating
= False
pour éviter le clignottement de l'écran pendant l'exécution.
Et voilà donc pourquoi ça marchait en pas à pas, et pas en normal.
Je me doutais bien que le hic était dans le contexte, mais fallait-il le
dénicher !
Et voilà aussi pourquoi en supprimant la ligne Color = xlNone, la
coloration apparaissait "après" la MsgBox, l'affichage de celle-ci
obligeant le raffraîchissement d'écran.
Du même coup (cela peut intéresser les débutants, comme celui que je
suis) j'ai compris qu'il faut éviter les couples d'instructions du type
Worksheets("xxxx").Range("A1").Select
Selection.Interior.ColorIndex = 3
qui sont à l'origine du clignottement d'écran. Ainsi il ny a plus besoin
de faire un Application.ScreenUpdating = False
Je le faisais souvent, en prenant modèle sur les macro "Enregistrées" -
méthode bien connue des débutants !

- - -Une question subsidiaire : Quand, comme dans le cas présent, je
veux répondre à plusieurs intervenants, est-il necessaire de répondre à
chacun (comme je le fais ici à jps et P.Aime),
ou sinon quel est l'usage ?
Encore merci à vous et merci aussi à Jacky.
Excusez-moi d'être aussi prolixe, je dois ennuyer qq lecteurs :-(((
Michel

Mon cher Michel (prénom cher à mon coeur)
Ceci fonctionne chez moi (le : je passe à l'orange, ya pu rien !)
Sub Atteindre()
RubRéf = 2 'pour faire fonctionner le "Else"

'...
Sheets("Grille").Select
'...

If Worksheets("param").Range("D20") = "OK" Then
LigneFiche = Worksheets("param").Range("C20")

Sheets("Données").Select
Range(Cells(LigneFiche, 1), Cells(LigneFiche, NbRub)).Select
Selection.Copy
Sheets("Grille").Select
Range("C4").PasteSpecial Paste:=xlValues, Transpose:=True
Range("C" & RubRéf + 3).Select
If Selection.Value <> Worksheets("param").Range("C17") Then
MsgBox "Valeur proche de la requête ... blabla"
End If
Else

Range("C" & RubRéf + 3).Select
Selection.Interior.ColorIndex = 45 'Rouge
MsgBox "Format de la requête... blabla"
Selection.Interior.ColorIndex = xlNone
LigneFiche = Worksheets("param").Range("C11")
'Worksheets("Grille").Range("C" & RubRéf + 3) = _
'Worksheets("Données").Cells(LigneFiche, RubRéf)
End If
'...
End Sub


"LANIMAL" a écrit dans le message de news:
%23DDy7$%

Non, ça ne va pas mieux.
Curieusement, en essayant (pour voir) le conseil de jps, j'ai constaté que
l'instruction : .interior.colorindex = 45
s'exécute "après" la validation de MsgBox...
Mon intention est de colorer la cellule "pendant" l'affichage du message
MsgBox, et de supprimer la couleur après la validation de la MsgBox.
Je dois m'absenter, je reviendrai à 20 h
Merci qd même.


Bonjour,

Et si tu écris directement (pas testé) :

Range("C" & RubRéf + 3).interior.colorindex = 45

cela fonctionne-t-il mieux ?

Michel


"LANIMAL" a écrit dans le message de news:
%


Bonjour,
(Excel 2000 sous XP)
Seule la ligne repérée en MAJUSC. et par !!!! pose pb.
Elle s'exécute en "pas à pas", mais pas en exécution normale.
Je ne trouve pas d'explication.
J'ai reproduit les qq lignes voisines pour donner le contexte.
En principe la ligne repérée ### n'est pas utile, je l'ai ajoutée pour
voir... mais je n'ai rien vu !
_____________________________________________
Sub Atteindre()
...
Sheets("Grille").Select
...

If Worksheets("param").Range("D20") = "OK" Then
LigneFiche = Worksheets("param").Range("C20")

Sheets("Données").Select
Range(Cells(LigneFiche, 1), Cells(LigneFiche, NbRub)).Select
Selection.Copy
Sheets("Grille").Select
Range("C4").PasteSpecial Paste:=xlValues, Transpose:=True
Range("C" & RubRéf + 3).Select
If Selection.Value <> Worksheets("param").Range("C17") Then
MsgBox "Valeur proche de la requête ... blabla"
End If
Else
### Sheets("Grille").Activate
Range("C" & RubRéf + 3).Select
!!!! SELECTION.INTERIOR.COLORINDEX = 45 'Rouge
MsgBox "Format de la requête... blabla"
SELECTION.INTERIOR.COLORINDEX = xlNone
LigneFiche = Worksheets("param").Range("C11")
Worksheets("Grille").Range("C" & RubRéf + 3) =
Worksheets("Données").Cells(LigneFiche, RubRéf)
End If
...
End Sub
__________________________________________

Merci à celui qui pourra m'éclairer.
Michel











Avatar
jps
bonjour lanimal
comme quoi, de l'échange jaillit parfois la lumière, même si ce n'est que la
faible flamme d'une bougie rabougrie...
je ne pense pas qu'à part mes c.....ies, le fait d'être prolixe soit ici une
tare : regarde AV, par exemple....
quant à ta question subsidiaire, sache qu'il te suffit d'envoyer un seul
post sur ce forum où il (le post) sera lu par tout un chacun qui l'ouvrira ;
s'il fallait envoyer un message à chacun de ceux par qui tu voudrais qu'il
soit lu, tu te rends compte du boulot que j'aurais, moi qui, cabotin,
souhaite que personne n'échappe auxdites c......ies
jps

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

Bonsoir... Suite et fin ... de cette histoire de fou que je suis ! !
J'avais simplement oublié que, comme dans ma proc je me ballade de
feuilles en feuilles, j'avais mis au début un Application.ScreenUpdating =
False
pour éviter le clignottement de l'écran pendant l'exécution.
Et voilà donc pourquoi ça marchait en pas à pas, et pas en normal.
Je me doutais bien que le hic était dans le contexte, mais fallait-il le
dénicher !
Et voilà aussi pourquoi en supprimant la ligne Color = xlNone, la
coloration apparaissait "après" la MsgBox, l'affichage de celle-ci
obligeant le raffraîchissement d'écran.
Du même coup (cela peut intéresser les débutants, comme celui que je suis)
j'ai compris qu'il faut éviter les couples d'instructions du type
Worksheets("xxxx").Range("A1").Select
Selection.Interior.ColorIndex = 3
qui sont à l'origine du clignottement d'écran. Ainsi il ny a plus besoin
de faire un Application.ScreenUpdating = False
Je le faisais souvent, en prenant modèle sur les macro "Enregistrées" -
méthode bien connue des débutants !

- - -Une question subsidiaire : Quand, comme dans le cas présent, je veux
répondre à plusieurs intervenants, est-il necessaire de répondre à chacun
(comme je le fais ici à jps et P.Aime),
ou sinon quel est l'usage ?
Encore merci à vous et merci aussi à Jacky.
Excusez-moi d'être aussi prolixe, je dois ennuyer qq lecteurs :-(((
Michel


c'est peut-être parce qu'excel ne sait plus très bien où il est dans les
changements de feuilles
un petit ActiveSheet.Range ne mange pas de pain, parfois
comment t'as dit, twinley? comme dab?
jps

"LANIMAL" a écrit dans le message de news:
%23$

Bonsoir
J'avais écrit la proc suivante et constaté qu'elle fonctionne

Sub Motif()
Range("A1").Interior.ColorIndex = 3
MsgBox "Vérifier la couleur de A1"
Range("A1").Interior.ColorIndex = xlNone
End Sub

J'ai alors écrit - isolément - l'adaptation telle que que tu me l'as
envoyée et ça marche chez moi aussi.
Alors il me reste a trouver pourquoi, dans mon contexte, ça marche en
mode pas à pas, et ça ne marche pas en mode normal.
Bonsoir et merci encore pour ton aide.



Mon cher Michel (prénom cher à mon coeur)
Ceci fonctionne chez moi (le : je passe à l'orange, ya pu rien !)
Sub Atteindre()
RubRéf = 2 'pour faire fonctionner le "Else"

'...
Sheets("Grille").Select
'...

If Worksheets("param").Range("D20") = "OK" Then
LigneFiche = Worksheets("param").Range("C20")

Sheets("Données").Select
Range(Cells(LigneFiche, 1), Cells(LigneFiche, NbRub)).Select
Selection.Copy
Sheets("Grille").Select
Range("C4").PasteSpecial Paste:=xlValues, Transpose:=True
Range("C" & RubRéf + 3).Select
If Selection.Value <> Worksheets("param").Range("C17") Then
MsgBox "Valeur proche de la requête ... blabla"
End If
Else

Range("C" & RubRéf + 3).Select
Selection.Interior.ColorIndex = 45 'Rouge
MsgBox "Format de la requête... blabla"
Selection.Interior.ColorIndex = xlNone
LigneFiche = Worksheets("param").Range("C11")
'Worksheets("Grille").Range("C" & RubRéf + 3) = _
'Worksheets("Données").Cells(LigneFiche, RubRéf)
End If
'...
End Sub









Avatar
AV
je ne pense pas qu'à part mes c.....ies, le fait d'être prolixe soit ici une
tare : regarde AV, par exemple....


J'ose espérer que tu veux dire prolifique ...
;-)
AV

Avatar
jps
peut-on dire, comme pour l'alligator et le crocodile, que c'est caïman la
même chose, AV?
jps

"AV" a écrit dans le message de
news:
je ne pense pas qu'à part mes c.....ies, le fait d'être prolixe soit ici
une


tare : regarde AV, par exemple....


J'ose espérer que tu veux dire prolifique ...
;-)
AV





Avatar
AV
peut-on dire, ...


Ben je ne dirais pas.. mais bon "ça, pas être grave" ..

AV

1 2