Couleur de cellule automatique sauf une couleur [Résolu]

Signaler
Messages postés
379
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
1 juillet 2020
-
Messages postés
379
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
1 juillet 2020
-
Bonjour le forum

Via une macro, je parviens à mettre en automatique la couleur de fond de mes cellules :

    With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With


Dans la même sélection, je cherche à exclure les cellules sur fond bleu de ce traitement automatique (.TintAndShade = -0.249977111117893)

Puis-je vous demander votre aide svp ?
Merci par avance !

Configuration: Windows / Excel 2016 / Firefox 77.0

6 réponses

Messages postés
2091
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
1 juillet 2020
276
Bonjour,

Essayez ceci
    If Selection.Interior.TintAndShade <> -0.249977111117893 Then
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If


Cdlt
Messages postés
2091
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
1 juillet 2020
276
Bonjour,

Il faut mettre le code dans le module de la feuille et non dans un module standard.
De plus, il faut utiliser le ET et non le OU pour tester les couleurs.
Ensuite; si vous voulez tester directement une couleur avec les le N° d'index de la couleur, la syntaxe est ".ColorIndex <> 4"
Voici le code à coller dans le module de la feuille.
La sélection d'une des cellules de "MaZone", déclenchera la macro, tout autre cellule en dehors de "MaZone" ne sera pas prise en compte?
Private [https://www.commentcamarche.net/contents/446-fichier-sub Sub] Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("MaZone")) Is Nothing Then
        If Target.Interior.TintAndShade <> -0.249977111117893 And Target.Interior.ColorIndex <> 4 Then
            With Target.Interior
                .Pattern = xlNone
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
        End If
    End If
End Sub


Cdlt
Messages postés
2091
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
1 juillet 2020
276
Si c'est à la demande via l'utilisation d'un bouton, alors voici la modif
Sub FondCellules()
    If Not Intersect(Selection, Range("MaZone")) Is Nothing Then
        If Selection.Interior.TintAndShade <> -0.249977111117893 And Selection.Interior.ColorIndex <> 4 Then
            With Selection.Interior
                .Pattern = xlNone
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
        End If
    End If
End Sub


Cdlt
Bonjour Frenchie

Merci beaucoup pour le code.
Appliqué à une petite sélection manuelle, ça fonctionne;
Mais en réalité je dois l'adapter en excluant 2 couleurs (bleu et jaune), et sur une zone nommée 'MaZone'

Voici mon code qui n'a aucun effet :

Sub FondCellules()
Range("MaZone").Select
If Selection.Interior.TintAndShade <> -0.249977111117893 Or Selection.Interior.TintAndShade <> 4 Then
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
End Sub


Puis-je te demander de regarder mon code ? Il doit y avoir un illogisme.

Merci par avance !
Messages postés
379
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
1 juillet 2020
8
Bonjour Frenchie

Lève-tôt je vois !

Je dois partir au travail mais j'intègre ça ce soir.

La sélection d'une des cellules de "MaZone", déclenchera la macro, tout autre cellule en dehors de "MaZone" ne sera pas prise en compte? 

Pas tout à fait.
La macro est déclenchée à la main via un bouton, de façon ponctuelle.
Déclenchement uniquement sur 'MaZone' et, effectivement, pas en dehors.

Je file

Merci beaucoup pour votre aide !
Messages postés
379
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
1 juillet 2020
8
Bonjour Frenchie

J'ai du ajouter une boucle sur Each Cell in Range, mais un final c'est parfait, c'est bien ça que je voulais faire.

Je te remercie vivement pour ton aide et je marque en Résolu.

Bonne soirée et encore merci