Macro Coloriage de cellules

copahotl

XLDnaute Nouveau
Macro de recherche de cellules

Bonjour à tous,

J'aimerais savoir si la création d'une macro répondant à mes besoins est faisable.

J'aimerais que la macro recherche toutes les cellules qui sont coloriées dans une couleur précise (jaune ici). Une fois qu'elle les a trouvées, j'aimerais qu'elle vérifie que la cellule située à sa gauche (c'est-à-dire à gauche de chaque cellule coloriée en jaune) est vide. Si c'est le cas, elle y met un 0. Par contre, si elle est non vide, elle ne fait rien.

Qu'en pensez-vous ?

Cordialement,

Copahotl
 
Dernière édition:

soenda

XLDnaute Accro
Re : Macro Coloriage de cellules

Bonjour le fil, copahotl

Vois l'exemple ci-dessous, la plage (en vert) est à adapter
Code:
For Each c In [COLOR=green][B][B2:F10][/B][/COLOR]
   If c.Interior.ColorIndex = 6 And c.Offset(, -1) = "" Then c.Offset(, -1) = 0
Next
A plus
 

copahotl

XLDnaute Nouveau
Re : Macro Coloriage de cellules

Merci pour ta réponse Soenda.

Ce code fonctionne effectivement pour des cellules dont le format (fond jaune) a été changé manuellement. Malheureusement pour moi, les cellules qui ont un fond jaune sont issues d'une mise en forme conditionnelle.
J'ai également trouvé un code pour compter les cellules qui ont un fond d'une certaine couleur. Pareil, les cellules qui ont un fond jaune et qui sont issues d'une MFC ne sont pas prises en compte.
Aucun des codes ne les prend en compte. Comment puis-je m'en sortir ?

Cordialement
 

Hulk

XLDnaute Barbatruc
Re : Macro Coloriage de cellules

Slt Copahotl, Soenda,

Je ne sais pas si j'ai bien compris, mais essaie ces macros dans un bouton sur ta feuille, avec la plage à adapter.
Code:
Private Sub CommandButton1_Click()
    
    Dim c As Range
    Dim MaPlage As Range
    
    Set MaPlage = [A1:M40] 'A MODIFIER
    
    For Each c In MaPlage
        If c.FormatConditions.Count <> 0 Then
            If c.Offset(0, -1) = "" Then c = 0
        End If
    Next c

End Sub
Si tu préfères qu'elles restent jaunes même avec le zéro, tu fais comme ceci (tjrs si j'ai bien compris :D)
Code:
Private Sub CommandButton1_Click()
    
    Dim c As Range
    Dim MaPlage As Range
    
    Set MaPlage = [A1:M40] 'A MODIFIER
    
    For Each c In MaPlage
        If c.FormatConditions.Count <> 0 Then
            If c.Offset(0, -1) = "" Then
                c = 0
                c.Interior.ColorIndex = 6
            End If
        End If
    Next c

End Sub
Attention, elles ne perdront pas pour autant leur MFC !

Cdt, Hulk.
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
293