Macro conditionnelle

Bonjour tout le monde,

Je voudrais faire que ma macro s'applique aux lignes colorées en jaune (font = 36)

En gros : if activecell (en jaune) = ... (100, 0 ou entre les 2) alors celle du dessus (offset (-1,0)) soit dans la couleur adaptée (vert, rouge, bleu)

Mais je ne vois pas comment formuler l'application seulement aux lignes jaunes ?

Voici la macro actuelle :

Sub Couleur2()
Dim c As Variant
For m = 6 To 100
For n = 6 To 55
 If Cells(m, n).Value = 100 Then
   Cells(m, n).Offset(-1, 0).Font.ColorIndex = 43
 Else
   If Cells(m, n).Value = 0 Then
   Cells(m, n).Offset(-1, 0).Font.ColorIndex = 3
   Else
   Cells(m, n).Offset(-1, 0).Font.ColorIndex = 5
   End If
    End If
Next
Next
End Sub

Merci d'avance

bonjour gabyzedog le forum

bon alors les explications ou la traduction de ci-dessous

soit dans la couleur adaptée (vert, rouge, bleu)

c'est quoi la couleur adaptée??

en gros si ta cellule est de couleur jaune et que la valeur et comprise entre 0 et 100

alors la cellule offset(-1,0) donc du dessus doit être de quelle couleur ???????????

a te relire

a+

papou

Bonjour,

il te suffit de rajouter un test entre tes boucles et ton premier traitement :

If Cells(m,n).Interior.ColorIndex = 36 then

et ne pas oublier le end if après tes traitements de lignes.

Cordialement,

bonjour Zirak le forum

oui mais sa macro ne s'adresse qu'au valeur 100 et 0 mais entre les deux???

j'avais demandé des explications pour refaire sa macro !

a+

papou

Entre les deux dans son code, il y a cela :

Else
Cells(m, n).Offset(-1, 0).Font.ColorIndex = 5

Je ne vois pas où se trouve le souçis ?

Cordialement,

Re Zirak le forum

ta remarque m'a fait relire l'énoncé, et ce que j'avais compris au départ, et que toutes les valeurs entre 0 et 100 étaient concernées,

hors c'est Zéro , cent , ou les autres

c'est pour cela que je ne comprenais plus

a+

Papou

Merci paritec, zirak.

Je viens de formuler ça, mais ca colle pas non plus !

Détail auquel je viens de penser :

La couleur de fond est due à une mise en forme conditionnelle (=MOD(LIGNE();2)=0). Vu que ce n'est pas directement fait sur la grille excel, est ce que la macro détecte la couleur ???

Sub Couleur2()

Dim c As Variant

For m = 6 To 100

For n = 6 To 55

If Cells(m, n).Interior.ColorIndex = 36 Then

If Cells(m, n).Value = 100 Then

Cells(m, n).Offset(-1, 0).Font.ColorIndex = 43

Else

If Cells(m, n).Value = 0 Then

Cells(m, n).Offset(-1, 0).Font.ColorIndex = 3

Else

Cells(m, n).Offset(-1, 0).Font.ColorIndex = 5

End If

End If

End If

Next

Next

End Sub

Bonjour

La macro ne détectera pas la couleur du fond, on pourrait la trouver en vérifiant le numéro de ligne

Mais le fait de mettre une autre couleur "en dur" sur une cellule de Mise En Forme Conditionnelle, c'est perdu

C'est la couleur de la MEFC qui prime

Euh moi pas tout comprendre :

Banzai64 a écrit :

Bonjour

La macro ne détectera pas la couleur du fond, on pourrait la trouver en vérifiant le numéro de ligne

Mais le fait de mettre une autre couleur "en dur" sur une cellule de Mise En Forme Conditionnelle, c'est perdu

C'est la couleur de la MEFC qui prime

Ca veut dire que dans la tête de la macro, la case est jaune ? donc ca devrait tourner non ?

La page de base est incolore.

Bonjour

Ce que je veux dire, que si la couleur que tu rechercher (numéro 36 : Jaune Clair) est obtenue par une MEFC, la macro ne la trouvera pas comme tu l'indiques

If Cells(m, n).Interior.ColorIndex = 36 Then

Si ta page est incolore toutes tes cellules auront comme couleur "absence de couleur"

Et pour y remédier, y a un moyen simple ? via macro ?

Ou il faut plutôt que je fasse une macro qui remplace la MEFC et que j'intègre ensuite dans ma macro de départ ?

Si c'est ça je veux bien de l'aide aussi

Bonjour

Pour trouver une solution, cela serait pratique (indispensable) d'avoir un fichier reflétant ton fichier réel

Ça c'est une idée

Voici le TCD en question, j'ai mis ce que je cherche à faire dans le 1er onglet, si ca vous inspire plus que moi !

3tcd.zip (30.66 Ko)

Bonjour

Un bémol à ce que j'ai dit

Je pensais que la couleur à modifiée était sur la même ligne que la MEFC : Dans ce cas c'est la MEFC qui prime

Sinon à voir

Je t'ai fait les deux cas

Merci c'est parfait, l'objectif était que la valeur en ligne "MEFC" détermine la couleur de la ligne non "MEFC" (celle du dessus)

Juste un détail, comment je fais pour mettre en gras, je peux pas simplement ajouter Bold comme dans la formule ci-dessous ? je dois formuler ça comment ?

Cells(J - 1, I).Font.Bold.ColorIndex = 43

Bonjour

Juste

Cells(J - 1, I).Font.Bold. =  True

Merci, j'ai testé ca, mais ca tournait pas,

Cells(J - 1, I).Font.ColorIndex = 43 And Cells(J - 1, I).Font.Bold = True

donc j'ai enlevé le "And" et mis sur 2 lignes et c'est bon

Merci beaucoup pour les différentes étapes.

[Resolved Checked]

Rechercher des sujets similaires à "macro conditionnelle"