Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion Toubabou
  • Date de début Date de début

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

Bonsoir Toubabou, TooFatBoy,
Idem, pas bien compris le "ce serait trop long" .
Un essai au pif en PJ. Lorsqu'on modifie une cellule quelconque d'une quelconque feuille, elle devient bleu si vide et blanche si non vide.
Macro à mettre dans ThisWorkbook.
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo Fin
With Sh.Range(Target.Address)
    If Target = "" Then
        .Interior.Color = RGB(220, 230, 240)
    Else
        .Interior.Color = vbWhite
    End If
End With
Fin:
End Sub
 

Pièces jointes

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+
 

Pièces jointes

Je voudrais le faire pour tout le fichier
Proposition :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Intersect(Target, Range("B4")) Is Nothing Then Exit Sub
    With Range("B4")
        If .Value = "" Then
            .Interior.Color = RGB(220, 230, 241)
        Else
            .Interior.Color = xlNone
        End If
    End With
End Sub
 
Dernière édition:
@TooFatBoy il est évident que le problème ne concerne pas seulement B4 !!!
La question est pourtant :
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 voudrais le faire pour tout le fichier
Je recherche donc une macro pouvant modifier plusieurs cellules voir une série de cellule.

Come quoi, une question mal posée est évidemment non claire et donne lieu à divers interprétations.
 
Merci beaucoup
 
Merci beaucoup
@TooFatBoy il est évident que le problème ne concerne pas seulement B4 !!!
Oui effectivement cela concerne toutes les cellules bleu de mon fichier
 
Bonjour le forum,

Le plus simple est quand même de construire la MFC :

- touche F5 et entrez la plage :
Code:
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
- puis entrez le critère de la MFC : Cellules vides => couleur

A+
 

Pièces jointes

Vous allez me dire : comment faire pour obtenir la référence de la plage de la MFC, ce n'est pas évident.

En effet, il vaut mieux avant toute chose exécuter cette macro (à placer où vous voulez) :
VB:
Sub PlageMFC()
Dim c As Range, P As Range
For Each c In ActiveSheet.UsedRange
    If c.Interior.Color = RGB(220, 230, 241) Then Set P = Union(IIf(P Is Nothing, c, P), c) 'à partir des cellules colorées en bleu
Next
If P Is Nothing Then Exit Sub
P.Name = "Plage" 'plage nommée
P.Interior.ColorIndex = xlNone 'efface la couleur de fond
End Sub
Ensuite touche F5 => sélectionnez "Plage" et construisez la MFC (Cellules vides => couleur).

Une chose importante à noter : la formule définissant le nom "Plage" ne doit pas dépasser la limite de 8192 caractères.
 
- 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
482
Réponses
3
Affichages
613
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…