OVH Cloud OVH Cloud

Cellule active fond bleu

6 réponses
Avatar
Caroline L.
Bonjour !

J'ai besoin d'aide pour trouver ce qui cloche dans mon code (voir à la fin
du message).

Le code qui suit à pour but de colorer la cellule active en bleu (dans une
plage déterminé).
Tout fonctionne bien c'est-à-dire que dans la plage déterminée dans le code,
lorsque je clique sur une cellule, celle-ci devient bleue (ColorIndex = 37)
mais lorsqu'elle n'est plus active est reste bleue alors qu'elle devrait
revenir à "aucun remplissage, fond blanc par défaut".
Partout à l'extérieur de la plage, le remplissage est ColorIndex = 15
(c'est-à-dire Gris).

Avez-vous une idée de ce qui cloche dans mon code ?
Peut-être est-ce un tout p'tit détail ?

Merci à l'avance

Caroline


Voici le code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range

Application.ScreenUpdating = False
Set plage = Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24"))
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With

Set Rg = Intersect(Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24")), Target)

If Not Rg Is Nothing Then
Rg.Interior.ColorIndex = 37

End If
Application.ScreenUpdating = True

End Sub

6 réponses

Avatar
Daniel
Bonsoir.
Ajoute :
plage.Interior.ColorIndex = xlNone
avant :
If Not Rg Is Nothing Then
Cordialement.
Daniel
"Caroline L." a écrit dans le message de news:
usV%
Bonjour !

J'ai besoin d'aide pour trouver ce qui cloche dans mon code (voir à la fin
du message).

Le code qui suit à pour but de colorer la cellule active en bleu (dans une
plage déterminé).
Tout fonctionne bien c'est-à-dire que dans la plage déterminée dans le
code,
lorsque je clique sur une cellule, celle-ci devient bleue (ColorIndex =
37)
mais lorsqu'elle n'est plus active est reste bleue alors qu'elle devrait
revenir à "aucun remplissage, fond blanc par défaut".
Partout à l'extérieur de la plage, le remplissage est ColorIndex = 15
(c'est-à-dire Gris).

Avez-vous une idée de ce qui cloche dans mon code ?
Peut-être est-ce un tout p'tit détail ?

Merci à l'avance

Caroline


Voici le code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range

Application.ScreenUpdating = False
Set plage = Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24"))
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With

Set Rg = Intersect(Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24")), Target)

If Not Rg Is Nothing Then
Rg.Interior.ColorIndex = 37

End If
Application.ScreenUpdating = True

End Sub










Avatar
LSteph
Bonjour Caroline,

Si j'ai bien compris ce que tu veux :

mais lorsqu'elle n'est plus active est reste bleue alors qu'elle devrait
revenir à "aucun remplissage
non puisqu'il n'est pas prévu de changer la cellule antérieure à celle

sélectonnnée

'***
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range
Dim plage As Range
Application.ScreenUpdating = False
Set Rg = Union(Range("C6"), Range("C8:F8"), Range("C10:E10"), _
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"), _
Range("c20:g20"), Range("c22:g22"), Range("c24"))


Set plage = Intersect(Rg, Target)

If Not plage Is Nothing Then
ActiveSheet.Cells.Interior.ColorIndex = 15
plage.Interior.ColorIndex = 37

End If
Application.ScreenUpdating = True

End Sub
'***

'lSteph



"Caroline L." a écrit dans le message de news:
usV%
Bonjour !

J'ai besoin d'aide pour trouver ce qui cloche dans mon code (voir à la fin
du message).

Le code qui suit à pour but de colorer la cellule active en bleu (dans une
plage déterminé).
Tout fonctionne bien c'est-à-dire que dans la plage déterminée dans le
code,
lorsque je clique sur une cellule, celle-ci devient bleue (ColorIndex =
37)
mais lorsqu'elle n'est plus active est reste bleue alors qu'elle devrait
revenir à "aucun remplissage, fond blanc par défaut".
Partout à l'extérieur de la plage, le remplissage est ColorIndex = 15
(c'est-à-dire Gris).

Avez-vous une idée de ce qui cloche dans mon code ?
Peut-être est-ce un tout p'tit détail ?

Merci à l'avance

Caroline


Voici le code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range

Application.ScreenUpdating = False
Set plage = Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24"))
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With

Set Rg = Intersect(Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24")), Target)

If Not Rg Is Nothing Then
Rg.Interior.ColorIndex = 37

End If
Application.ScreenUpdating = True

End Sub










Avatar
Caroline L.
Bonsoir Daniel,

Merci beaucoup ! tout fonctionne.
Par contre si j'applique la protection de la feuille (j'ai déverrouillé
toutes les cellules de la plage), cela ne fonctionne plus.
J'ai le message d'erreur suivant :
Impossible de définir la propriété de la ColorIndex.
et c'est la ligne .ColorIndex = 15 qui est en jaune.



Caroline


"Daniel" a écrit dans le message de news:
#
Bonsoir.
Ajoute :
plage.Interior.ColorIndex = xlNone
avant :
If Not Rg Is Nothing Then
Cordialement.
Daniel
"Caroline L." a écrit dans le message de news:
usV%
Bonjour !

J'ai besoin d'aide pour trouver ce qui cloche dans mon code (voir à la
fin


du message).

Le code qui suit à pour but de colorer la cellule active en bleu (dans
une


plage déterminé).
Tout fonctionne bien c'est-à-dire que dans la plage déterminée dans le
code,
lorsque je clique sur une cellule, celle-ci devient bleue (ColorIndex > > 37)
mais lorsqu'elle n'est plus active est reste bleue alors qu'elle devrait
revenir à "aucun remplissage, fond blanc par défaut".
Partout à l'extérieur de la plage, le remplissage est ColorIndex = 15
(c'est-à-dire Gris).

Avez-vous une idée de ce qui cloche dans mon code ?
Peut-être est-ce un tout p'tit détail ?

Merci à l'avance

Caroline


Voici le code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range

Application.ScreenUpdating = False
Set plage = Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24"))
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With

Set Rg = Intersect(Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24")), Target)

If Not Rg Is Nothing Then
Rg.Interior.ColorIndex = 37

End If
Application.ScreenUpdating = True

End Sub














Avatar
garnote
Bonsoir Caroline,

Tu pourrais écrire
Sheets("Nom de ta feuille").Unprotect
au début de ta macro et
Sheets("Nom de ta feuille").Protect
à la fin.

Serge


"Caroline L." a écrit dans le message de news:

Bonsoir Daniel,

Merci beaucoup ! tout fonctionne.
Par contre si j'applique la protection de la feuille (j'ai déverrouillé
toutes les cellules de la plage), cela ne fonctionne plus.
J'ai le message d'erreur suivant :
Impossible de définir la propriété de la ColorIndex.
et c'est la ligne .ColorIndex = 15 qui est en jaune.



Caroline


"Daniel" a écrit dans le message de news:
#
Bonsoir.
Ajoute :
plage.Interior.ColorIndex = xlNone
avant :
If Not Rg Is Nothing Then
Cordialement.
Daniel
"Caroline L." a écrit dans le message de news:
usV%
Bonjour !

J'ai besoin d'aide pour trouver ce qui cloche dans mon code (voir à la
fin


du message).

Le code qui suit à pour but de colorer la cellule active en bleu (dans
une


plage déterminé).
Tout fonctionne bien c'est-à-dire que dans la plage déterminée dans le
code,
lorsque je clique sur une cellule, celle-ci devient bleue (ColorIndex >> > 37)
mais lorsqu'elle n'est plus active est reste bleue alors qu'elle
devrait
revenir à "aucun remplissage, fond blanc par défaut".
Partout à l'extérieur de la plage, le remplissage est ColorIndex = 15
(c'est-à-dire Gris).

Avez-vous une idée de ce qui cloche dans mon code ?
Peut-être est-ce un tout p'tit détail ?

Merci à l'avance

Caroline


Voici le code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range

Application.ScreenUpdating = False
Set plage = Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24"))
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With

Set Rg = Intersect(Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24")), Target)

If Not Rg Is Nothing Then
Rg.Interior.ColorIndex = 37

End If
Application.ScreenUpdating = True

End Sub


















Avatar
Caroline L.
Bonsoir LSteph,

merci pour ton aide !
J'ai fait le test avec ton code et tous les champs deviennent gris (sauf la
cellule active). Je désire que la plage du code soit sans aucun remplissage.
De plus, j'ignore pourquoi mais le changement de couleur est très lent.

Avec la ligne additionnelle de Daniel, tout fonctionne correctement sauf que
je désire protégé la feuille... là ça bloque sur le ColorIndex = 15 (dans le
fond c'est le gris qui est à l'extérieur de la plage).

J'ai verrouillé toutes les cellules sauf celles de la plage :
Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24"))

As-tu une idée comment résoudre le tout ?

Merci encore pour ton coup de main.

Caroline

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

Bonjour Caroline,

Si j'ai bien compris ce que tu veux :

mais lorsqu'elle n'est plus active est reste bleue alors qu'elle devrait
revenir à "aucun remplissage
non puisqu'il n'est pas prévu de changer la cellule antérieure à celle

sélectonnnée

'***
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range
Dim plage As Range
Application.ScreenUpdating = False
Set Rg = Union(Range("C6"), Range("C8:F8"), Range("C10:E10"), _
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"), _
Range("c20:g20"), Range("c22:g22"), Range("c24"))


Set plage = Intersect(Rg, Target)

If Not plage Is Nothing Then
ActiveSheet.Cells.Interior.ColorIndex = 15
plage.Interior.ColorIndex = 37

End If
Application.ScreenUpdating = True

End Sub
'***

'lSteph



"Caroline L." a écrit dans le message de news:
usV%
Bonjour !

J'ai besoin d'aide pour trouver ce qui cloche dans mon code (voir à la
fin


du message).

Le code qui suit à pour but de colorer la cellule active en bleu (dans
une


plage déterminé).
Tout fonctionne bien c'est-à-dire que dans la plage déterminée dans le
code,
lorsque je clique sur une cellule, celle-ci devient bleue (ColorIndex > > 37)
mais lorsqu'elle n'est plus active est reste bleue alors qu'elle devrait
revenir à "aucun remplissage, fond blanc par défaut".
Partout à l'extérieur de la plage, le remplissage est ColorIndex = 15
(c'est-à-dire Gris).

Avez-vous une idée de ce qui cloche dans mon code ?
Peut-être est-ce un tout p'tit détail ?

Merci à l'avance

Caroline


Voici le code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range

Application.ScreenUpdating = False
Set plage = Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24"))
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With

Set Rg = Intersect(Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24")), Target)

If Not Rg Is Nothing Then
Rg.Interior.ColorIndex = 37

End If
Application.ScreenUpdating = True

End Sub














Avatar
Caroline L.
Bonsoir Serge,

2 bonnes réponses sur 2 : 100 % ...... bravo monsieur l'enseignant !

Non mais sérieusement, je croyais que ta façon allait ralentir le tout mais
c'est très bien, cela me satisfait.

Merci encore et bonne soirée

Caroline


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

Bonsoir Caroline,

Tu pourrais écrire
Sheets("Nom de ta feuille").Unprotect
au début de ta macro et
Sheets("Nom de ta feuille").Protect
à la fin.

Serge


"Caroline L." a écrit dans le message de news:

Bonsoir Daniel,

Merci beaucoup ! tout fonctionne.
Par contre si j'applique la protection de la feuille (j'ai déverrouillé
toutes les cellules de la plage), cela ne fonctionne plus.
J'ai le message d'erreur suivant :
Impossible de définir la propriété de la ColorIndex.
et c'est la ligne .ColorIndex = 15 qui est en jaune.



Caroline


"Daniel" a écrit dans le message de news:
#
Bonsoir.
Ajoute :
plage.Interior.ColorIndex = xlNone
avant :
If Not Rg Is Nothing Then
Cordialement.
Daniel
"Caroline L." a écrit dans le message de news:
usV%
Bonjour !

J'ai besoin d'aide pour trouver ce qui cloche dans mon code (voir à
la




fin
du message).

Le code qui suit à pour but de colorer la cellule active en bleu
(dans




une
plage déterminé).
Tout fonctionne bien c'est-à-dire que dans la plage déterminée dans
le




code,
lorsque je clique sur une cellule, celle-ci devient bleue (ColorIndex
37)
mais lorsqu'elle n'est plus active est reste bleue alors qu'elle
devrait
revenir à "aucun remplissage, fond blanc par défaut".
Partout à l'extérieur de la plage, le remplissage est ColorIndex = 15
(c'est-à-dire Gris).

Avez-vous une idée de ce qui cloche dans mon code ?
Peut-être est-ce un tout p'tit détail ?

Merci à l'avance

Caroline


Voici le code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range

Application.ScreenUpdating = False
Set plage = Union(Range("C6"), Range("C8:F8"), Range("C10:E10"),
Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24"))
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With

Set Rg = Intersect(Union(Range("C6"), Range("C8:F8"),
Range("C10:E10"),




Range("C12:F12"), Range("C14:E14"), Range("C16"), Range("C18:G18"),
Range("c20:g20"), Range("c22:g22"), Range("c24")), Target)

If Not Rg Is Nothing Then
Rg.Interior.ColorIndex = 37

End If
Application.ScreenUpdating = True

End Sub