Microsoft 365 Macro pour changer la couleur d'une cellule si...

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Toubabou

XLDnaute Impliqué
Bonsoir à tous,
Ma cellule B4...., est vide et de couleur bleu. Si je rempli cette cellule, je voudrai supprimer cette couleur, sans passer par la "MISE EN FORME CONDITIONNEL" (ce serait trop long).
Je recherche donc une macro pouvant modifier plusieurs cellules voir une série de cellule.

Merci beaucoup
 

Pièces jointes

Solution
Bonsoir Toubabou, TooFatBoy, sylvanu,

Mettez une macro de ce genre dans chaque feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With [B4:E4,C6:E6,F5:I7,C18:E20,G18:I20,C24:E26,G24:I26,C30:E32,G30:I32,C36:E38,G36:I38,C42:E44,G42:I44,C48:E50,G48:I50,C54:E56,G54:I56]
    If Intersect(Target, .Cells) Is Nothing Then Exit Sub
    For Each Target In Target
        If IsEmpty(Target) Then Target.Interior.Color = RGB(220, 230, 241) Else Target.Interior.ColorIndex = xlNone
    Next
End With
End Sub
Modifiez le contenu d'une ou plusieurs cellules colorées en bleu.

S'il y a beaucoup de cellules colorées il faudra faire l'union de plusieurs plages car le texte de chaque Range est limité à 255 caractères.

A+
Je viens de regarder ton classeur nommé 8.xls et effectivement, une fois que tu as protégé la feuille, tu ne peux plus avoir (et donc constater) le problème de logique de #5.

Mais du coup aussi tu n'as même plus besoin de tester si la cellule modifiée doit être coloriée ou non... (ça évite les erreurs LOL)
Et tu peux te contenter d'une seule macro qui fonctionnera pour toutes tes feuilles :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    With Target
        If .Cells(1, 1).Value = "" Then .Interior.Color = RGB(220, 230, 241) Else .Interior.Color = xlNone
    End With
End Sub



La solution de Job75 consistant de construire une MFC est pour moi la meilleure, car elle permet de re colorer la cellule si l’on efface la saisie Parfait.
Pourtant, bien que l'utilisation d'une MFC soit la solution la plus évidente au départ, c'est ce que tu demandais de ne pas faire et de passer obligatoirement par une macro.
Remarque : toutes les autres propositions permettent également de recolorer la cellule en bleu quand on supprime son contenu.

Mais, même si c'est l'exact opposé de ce que tu demandais en #1, au final le principal est que tu aies une solution qui te convienne. 👍
 
Dernière édition:
attention dans la macro de #5, la logique de comparaison entre Target et les cellules potentiellement coloriables est fausse. 🙁
Pourtant cela fonctionne correctement chez moi
Je te propose une correction de la macro de #5 pour que tu puisses les comparer et constater que, sauf erreur de ma part, contrairement à celle de #5, celle ci-dessous ne prend bien en compte que les cellules qui doivent l'être. 😉

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim MaPlage As Range, Cellule As Range

    Set MaPlage = Intersect(Target, Range("B4,D4,C6:E6,F5:I7,C18:E20,G18:I20,C24:E26,G24:I26,C30:E32,G30:I32,C36:E38,G36:I38,C42:E44,G42:I44,C48:E50,G48:I50,C54:E56,G54:I56"))
    If MaPlage Is Nothing Then Exit Sub

    For Each Cellule In MaPlage
        If Cellule = "" Then Cellule.Interior.Color = RGB(220, 230, 241) Else Cellule.Interior.ColorIndex = xlNone
    Next Cellule

End Sub

Pour moi, le mieux reste de faire cela dans Workbook_SheetChange plutôt que de mettre la même macro dans chaque feuille.


Sur ce, bon coloriages.
Tschüss
🖖
 

Pièces jointes

Il est dommage d'avoir déclaré comme solution un message qui donne une macro qui fonctionne, me semble-t-il, de façon un peu erronée.

Le but de déclarer un message comme étant la meilleure solution du fil de discussion, est d'aider les personnes ayant un problème identique à trouver plus facilement la meilleure proposition. 😉
 
Il est dommage d'avoir déclaré comme solution un message qui donne une macro qui fonctionne, me semble-t-il, de façon un peu erronée.

Le but de déclarer un message comme étant la meilleure solution du fil de discussion, est d'aider les personnes ayant un problème identique à trouver plus facilement la meilleure proposition. 😉
Je comprend bien , mais pour moi toutes les solutions sont bonnes . Mais je n'ai pas trouvé comment les marquer toutes
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
586
Réponses
3
Affichages
746
Retour