Mise en forme conditionnelle avec code VBA

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 !

gerard55

XLDnaute Occasionnel
Bonjour à tous,
j'ai une mise en forme conditionnelle avec un code VBA avec Target. ça fonctionne bien lorsque l'on tape le code souhaité. Mais lorsque ce code est issu d'une formule ou d'un autre fichier, ça ne fonctionne pas.
exemple : E8 est égal = f8 . Si CP n'était pas inscrit avant l'écriture de la formule, ça ne marche pas. (fichier joint)
Y-a-t-il une solution pour régler ce problème.
Merci d'avance.
Gérard
 

Pièces jointes

Re : Mise en forme conditionnelle avec code VBA

Bonjour,

peut être tester la cellule devant être réellement modifiée, dans ton exemple la cellule F1 et ensuite boucler sur les "Dependents"

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim c As Range
If Target.Count > 1 Or Target.Address <> "$F$1" Then Exit Sub
For Each c In Target.Dependents
    'ton code de mise enforme
Next c
End Sub

bonne journée
@+
 
Re : Mise en forme conditionnelle avec code VBA

Bonjour Pierrot et Gibert_RGI
Merci pour vos réponses
Le code de Pierrot ne fonctionne pas et il était limité à la formule liée à la cellule F1.

Le code de gibert_RGI me semble intéressant. Je l'ai ajouté dans la le code de la feuille 1 sans modifier mon code actuel. Mais, il me renvoie le message suivant:
Erreur d'éxécution 438 Propriété ou méthode non gérée par cet objet.
A+
Gérard
 
Re : Mise en forme conditionnelle avec code VBA

Re,

A voir le code que tu as utilisé.... pour compléter l'exemple :
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim c As Range
If Target.Count > 1 Or Target.Address <> "$F$1" Then Exit Sub
For Each c In Target.Dependents
    if c.Value = "CP" Then c.Interior.ColorIndex = 33
Next c
End Sub
 
Re : Mise en forme conditionnelle avec code VBA

Je te remercie Pierrot effectivement ça fonctionne. Mais, ça ne répond que partiellement à mon besoin car j'ai un tableau de 100 noms avec tous les jours du mois. Une formule (index / équiv) qui récupère les éléments dans une base de données. Je les récupère bien mais, la mise en forme ne se fait pas. Avec la formule que tu proposes, c'est difficile à adapter car il y a une cellule d'origine pour une cellule dépendante.
Gérard
 
Re : Mise en forme conditionnelle avec code VBA

Re,

A noter que l'on peut également contrôler une plage de cellules :
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim c As Range
If Target.Count > 1 Or Intersect(Target, Range("A1:F2")) Is Nothing Then Exit Sub
For Each c In Target.Dependents
With c
    Select Case LCase(.Value)
        Case "at", "m", "mt", "pt", "cp"
            .Interior.ColorIndex = 36
        Case "mtt"
            .Interior.ColorIndex = 38
        Case Else
            .Interior.ColorIndex = xlNone
    End Select
End With
Next c
End Sub
 
- 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
4
Affichages
283
Réponses
5
Affichages
631
W
Réponses
2
Affichages
214
Réponses
6
Affichages
304
Réponses
25
Affichages
1 K
Retour