Mise en forme conditionelle

Bonjour,

j'aimerai mettre en place une mise en forme conditionnelle qui modifierai le format de ma cellule si celui-ci n'est pas une formule mais un nombre.

pour être plus clair, j'ai une colonne (de plus de 10 000 lignes) avec des formules donnant des nombres. Certaines de ces formules ont été effacées et remplacées par un nombre (qui n'est pas celui donné par la formule).

J'aimerai donc de façon automatique les colorer afin de les repérer plus facilement pour les étudier.

Merci de votre aide

Bonjour,

Je n'ai pas trouvé de solution pour la mise en forme, si c'est une formule ou pas. Mais tu peux utiliser la fonctionnalité d'Excel "Afficher les formules", mais c'est sur que sur 10000 lignes cela va être fastidieux.

aff formule

Ou, sinon j'ai trouver une macro sur un autre post qui permet de faire ce que tu souhaites.

Sub sc()

Dim maFeuille As Worksheet
Dim cellule As Range
     Set maFeuille = ActiveSheet
        For Each cellule In maFeuille.UsedRange
            If Not cellule.HasFormula Then
                cellule.Font.ColorIndex = xlColorIndexAutomatic
            Else
                cellule.Font.ColorIndex = 3
            End If
        Next
     Exit Sub
End Sub

Cordialement,

Merci pour la réponse,

je vais tenter d'utiliser la macro en la modifiant pour l'appliquer à ma colonne plutôt que la feuille entière.

Si j'ai un problème, je reviendrai vers vous.

re bonjour

j'ai réussi à modifier la macro en ceci :

Sub formule()

Dim maFeuille As Worksheet
Dim cellule As Range
    Set maFeuille = ActiveSheet
        Range("B2:B20000").Select
        For Each cellule In Selection
            If cellule.HasFormula Then
                cellule.Font.ColorIndex = xlColorIndexAutomatic
            Else
                cellule.Interior.ColorIndex = 6
            End If
        Next
     Set maFeuille = ActiveSheet
        Range("Y2:Y20000").Select
        For Each cellule In Selection
            If cellule.HasFormula Then
                cellule.Font.ColorIndex = xlColorIndexAutomatic
            ElseIf IsEmpty(cellule) Then
                cellule.Font.ColorIndex = xlColorIndexAutomatic
            Else
                cellule.Interior.ColorIndex = 6
            End If
        Next
     Exit Sub
End Sub

Y-a-t-il plus simple pour faire la même chose ?

Sinon, j'aimerai que si je modifie une cellule contenant une formule en y mettant une valeur, elle change automatiquement de couleur sans devoir relancer la macro à chaque fois. Est-ce possible ?

merci de votre aide

Bonjour,

Essaie comme cela

Sub formule()

Dim maFeuille As Worksheet
Dim cellule As Range
    Set maFeuille = ActiveSheet
         For Each cellule In Range("B2:B20000")
            If cellule.HasFormula Then
                cellule.Font.ColorIndex = xlColorIndexAutomatic
            Else
                cellule.Interior.ColorIndex = 6
            End If
        Next
     Set maFeuille = ActiveSheet
        For Each cellule InRange("Y2:Y20000")
            If cellule.HasFormula Then
                cellule.Font.ColorIndex = xlColorIndexAutomatic
            ElseIf IsEmpty(cellule) Then
                cellule.Font.ColorIndex = xlColorIndexAutomatic
            Else
                cellule.Interior.ColorIndex = 6
            End If
        Next
     Exit Sub
End Sub

Et pour que sa soit automatique, dans le code de la feuille:

Private Sub Worksheet_Change(ByVal Target As Range)
If target.Hasformula 
Target.Font.ColorIndex = xlColorIndexAutomatic
Elseif IsEmpty(target)
target.Font.ColorIndex = xlColorIndexAutomatic
Else
target.Interior.ColorIndex = 6
End If
End Sub

Je n'ai pas du tout testé j'ai fait ça à vue de nez, la syntaxe est surement à revoir mais sa te donne une piste.

J'espère t'avoir aidé.

Bonne journée, cordialement,

merci pour ces éléments de syntaxe,

j'ai eu un peu de mal car je ne connais pas VBA, mais merci à Internet qui m'a permis de modifier la routine.

Je donne le code final dans le cas où cela intéresserait une autre personne

Private Sub Worksheet_Change(ByVal Target As Range)
    If (Not (Application.Intersect(Target, Range("Y2:Y20000")) Is Nothing) Or Not (Application.Intersect(Target, Range("b2:b20000")) Is Nothing)) Then
        If Target.HasFormula Then
            Target.Interior.ColorIndex = xlColorIndexAutomatic
        ElseIf IsEmpty(Target) Then
            Target.Interior.ColorIndex = xlColorIndexAutomatic
        Else
            Target.Interior.ColorIndex = 6
        End If
    End If
End Sub

et la macro pour commencer le travail est

Sub formule()

Dim maFeuille As Worksheet
Dim cellule As Range
    Set maFeuille = ActiveSheet
         For Each cellule In Range("B2:B20000")
            If cellule.HasFormula Then
                cellule.Interior.ColorIndex = xlColorIndexAutomatic
            Else
                cellule.Interior.ColorIndex = 6
            End If
        Next
     Set maFeuille = ActiveSheet
        For Each cellule In Range("Y2:Y20000")
            If cellule.HasFormula Then
                cellule.Interior.ColorIndex = xlColorIndexAutomatic
            ElseIf IsEmpty(cellule) Then
                cellule.Interior.ColorIndex = xlColorIndexAutomatic
            Else
                cellule.Interior.ColorIndex = 6
            End If
        Next
     Exit Sub
End Sub

encore merci à VH_AE pour ces réponses

Rechercher des sujets similaires à "mise forme conditionelle"