Couleur de cellule automatique sauf une couleur

Résolu
touroul Messages postés 520 Date d'inscription   Statut Membre Dernière intervention   -  
touroul Messages postés 520 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour,

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


    Cdlt
    1
  2. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    1
  3. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    1
  4. touroul
     
    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 !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. touroul Messages postés 520 Date d'inscription   Statut Membre Dernière intervention   16
     
    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 !
    0
  7. touroul Messages postés 520 Date d'inscription   Statut Membre Dernière intervention   16
     
    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
    0