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.
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