Mise en forme conditionnelle en fonction du résultat d'un calcul

BenLar

XLDnaute Nouveau
Bonjour,

Dans un ensemble de cellule, j'utilise la formule =RECHERCHEV(B2;Classification_type;2). Cette formule me retourne une valeur dans l'ensemble {1,2,3,4}.

Je voudrais qu'en fonction du résultat, le fond de la cellule soit {vert, jaune, orange, rouge}.

J'ai essayé la macro suivante (que j'ai trouvé sur le net) :

Private Sub Worksheet_Change(ByVal target As Range)
Select Case target.Text
'Vert'
Case "1": target.Interior.ColorIndex = 4
'Jaune'
Case "2": target.Interior.ColorIndex = 6
'Orange'
Case "3": target.Interior.ColorIndex = 45
'Rouge'
Case "4": target.Interior.ColorIndex = 3
Case Else
target.Interior.ColorIndex = xlNone
End Select
End Sub

Elle fonctionne bien si j'affecte la valeur manuellement mais pas dans le cas du résultat d'un calcul.

Pour info : je suis en excel 2002 et je n'y connais rien en macro et vba.

Merci pour votre aide,

Ben
 

tototiti2008

XLDnaute Barbatruc
Re : Mise en forme conditionnelle en fonction du résultat d'un calcul

Re,

Bon, en admettant qu'elles sont changées manuellement :
Dans l'exemple, C2 à C19 où j'ai mes recherchev...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cellule As Range
    For Each Cellule In Target.Dependents
        If Not Application.Intersect(Cellule, Range("[COLOR=red][B]c2:c19[/B][/COLOR]")) Is Nothing Then
            Select Case Cellule.Value
            'Vert'
            Case 1: Cellule.Interior.ColorIndex = 4
            'Jaune'
            Case 2: Cellule.Interior.ColorIndex = 6
            'Orange'
            Case 3: Cellule.Interior.ColorIndex = 45
            'Rouge'
            Case 4: Cellule.Interior.ColorIndex = 3
            Case Else
                Cellule.Interior.ColorIndex = xlNone
            End Select
        End If
    Next Cellule
End Sub
 

BenLar

XLDnaute Nouveau
Re : Mise en forme conditionnelle en fonction du résultat d'un calcul

Merci, ça fonctionne pour une cellule. C'est ce que je veux mais presque à cause de la plage en dure. Mais, je n'ai pas clairement défini mon besoin ;o/

En fait, j'ai une feuille avec une liste (Type ressource,D,I,C,P)
Pour chaque type de ressource, on définit manuellement les critères D,I,C et P avec une valeur dans {1,2,3,4}. A partir de là, la macro que j'avais récupéré positionne la bonne couleur.

Maintenant, j'ai une deuxième feuille ou je fais la liste des ressources. Ce que je voudrais faire c'est :
Pour chaque ressource, je choisis le type de ressource (j'ai nommé une plage "classification_type"=$a$a à partir de l'autre feuille et j'ai défini une liste dessus) et dans les 4 colonnes voisines, je voudrais qu'il déduise de l'autre feuille la valeur et la couleur.

Pour la valeur, ça fonctionne grâce à la fonction recherchev mais pas pour la couleur (mieux depuis ton indication).

Je vais essayer de comprendre a minima et d'adapter.

Merci beaucoup pour ton aide qui me dépanne.
 

BenLar

XLDnaute Nouveau
Re : Mise en forme conditionnelle en fonction du résultat d'un calcul

Ok. J'y suis arrivé sans trop de difficulté en remplacant la plage par $c:$f.

Par contre, si je modifie une valeur sur la première feuille, le changement est pris en compte sur la seconde mais pas la couleur.

Comment faire ? Est-ce compliqué ?
 

tototiti2008

XLDnaute Barbatruc
Re : Mise en forme conditionnelle en fonction du résultat d'un calcul

Bonjour BenLar,

désolé, mais je n'ai pas tout compris.

visiblement tu gères plusieurs feuilles et ma macro était prévue avec tout dans la même feuille.
Si tu nous poste un petit classeur exemple, je pourrais sans doute mieux comprendre ce que tu veux.
 

BenLar

XLDnaute Nouveau
Re : Mise en forme conditionnelle en fonction du résultat d'un calcul

Voilà, un exemple du fichier en pièce jointe.

Lorsque je modifie une valeur D,I,C,P de la classification, la couleur est bien modifiée. Par contre, dans l'inventaire, la modif n'est pas prise en compte.

De plus, quand je remplis le nom d'une ressource dans l'onglet inventaire et que je me déplace avec les flèches, j'ai un message d'erreur.

Je te remercie de ton aide.
 

Pièces jointes

  • Inventaire.xls
    44.5 KB · Affichages: 102
  • Inventaire.xls
    44.5 KB · Affichages: 108
  • Inventaire.xls
    44.5 KB · Affichages: 113

Maspalio

XLDnaute Occasionnel
Re : Mise en forme conditionnelle en fonction du résultat d'un calcul

Hello,

Private Sub Worksheet_Change(ByVal target As Range)
Select Case target.Text
'K'
Case "1": target.Interior.ColorIndex = 4
'U'
Case "2": target.Interior.ColorIndex = 6
'V'
Case "3": target.Interior.ColorIndex = 45
'Z'
Case "4": target.Interior.ColorIndex = 3
Case Else
target.Interior.ColorIndex = xlNone
End Select
End Sub

Question on le colle ou ??? Feuil1 pour l'appliquer a la feuil1 ? car chez moi cela ne donne rien...
En gros, J'ai une grosse plage avec diverses entrées, et je voudrais colorier les cellules selon la valeur entrée (une lettre)
Dois-je indiquer une plage ?? j'ai essayé un peu tout ce qui me passer par la tête et vu sur internet sans résultats.

Merci
 

BenLar

XLDnaute Nouveau
Re : Mise en forme conditionnelle en fonction du résultat d'un calcul

Pour moi (mais je suis pas un pro), je colle dans la feuille ou tu veux l'utiliser.

Après, tu saisies la valeur et en validant ca colore la cellule.

En fait, pour toi, il faut remplacer case '1' par case 'MaLettre'...
 

tototiti2008

XLDnaute Barbatruc
Re : Mise en forme conditionnelle en fonction du résultat d'un calcul

Bonjour à tous,

Bon, une "bidouille" pour que ça marche :

dans la feuille inventaire, met le code là :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cellule As Range
    On Error GoTo errChange
    For Each Cellule In Target.Dependents
        If Not Application.Intersect(Cellule, Range("$c:$f")) Is Nothing Then
            If IsError(Cellule.Value) Then
                Cellule.Interior.ColorIndex = xlNone
                Exit Sub
            End If
            Select Case Cellule.Value
            'Vert'
            Case 1: Cellule.Interior.ColorIndex = 4
            'Jaune'
            Case 2: Cellule.Interior.ColorIndex = 6
            'Orange'
            Case 3: Cellule.Interior.ColorIndex = 45
            'Rouge'
            Case 4: Cellule.Interior.ColorIndex = 3
            Case Else
                Cellule.Interior.ColorIndex = xlNone
            End Select
        End If
    Next Cellule
    On Error GoTo 0
    Exit Sub
errChange:
End Sub

et dans la feuille classification, celui-ci :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
Select Case Target.Text
'Vert'
Case "1": Target.Interior.ColorIndex = 4
'Jaune'
Case "2": Target.Interior.ColorIndex = 6
'Orange'
Case "3": Target.Interior.ColorIndex = 45
'Rouge'
Case "4": Target.Interior.ColorIndex = 3
Case Else
        Target.Interior.ColorIndex = xlNone
End Select
For i = 1 To Feuil2.Range("B65536").End(xlUp).Row
    Feuil2.Range("B" & i).Formula = Feuil2.Range("B" & i).Formula
Next i
End Sub

voilà qui indique que la macro de mDF pour faire plus de 3 MFC doit être plutôt balaise...

mDF MFCmultiples v5.0 : myDearFriend! Excel Pages
 

Discussions similaires

Statistiques des forums

Discussions
312 756
Messages
2 091 749
Membres
105 062
dernier inscrit
Ret78