Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

mise en forme conditionnelle

  • Initiateur de la discussion Initiateur de la discussion pierro77
  • Date de début Date de début

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 !

P

pierro77

Guest
Bonjour à tous,

Je bloque actuellement sur un problème de mise en forme conditionnelle. Je m'explique. Je voudrais développer une macro qui me permet de faire les choses suivantes :
J'ai dans ma colonne D des infos qui varient => FSR, CFM...
A chaque ligne je veux que :
Si on a "FSR" et si les valeurs dans la ligne sont >=4 alors il faut que ça soit coloré en vert
Si on a "CFM" et si les valeurs dans la ligne sont >=12 alors il faut que ça soit coloré en vert
Si on a "FSR" et si les valeurs dans la ligne sont <=4 alors il faut que ça soit coloré en rouge
Si on a "FSR" et si les valeurs dans la ligne sont <=12 alors il faut que ça soit coloré en rouge

J'ai commencé à écrire une macro je n'arrive pas à conclure :
Code:
Sub MFC()
Dim mycell As Range
Dim i As Integer
Application.ScreenUpdating = False
i = 1
    For Each mycell In Range("E2:AA" & Range("E65536").End(xlUp).Row)
        
        If mycell.Value >= 4 And Cells(i, 4) = "FSR" Then
        mycell.Interior.ColorIndex = 4
        
        If mycell.Value >= 12 And Cells(i, 4) = "CFM" Then
        mycell.Interior.ColorIndex = 4
        i = i + 1
        End If
    Next
Application.ScreenUpdating = True
End Sub
 
Re : mise en forme conditionnelle

Bonjour à tous,

Peux-tu essayer :

VB:
Option Explicit


Sub MFC()
    Dim Cel As Range
    Dim i As Integer
    Application.ScreenUpdating = False


    For Each Cel In Range("E2:AA" & Range("D65536").End(xlUp).Row)
        For i = 1 To Range("D65536").End(xlUp).Row
            If Cel.Value >= 4 And Cells(i, 4) = "FSR" Then Cel.Interior.ColorIndex = 4
            If Cel.Value >= 12 And Cells(i, 4) = "CFM" Then Cel.Interior.ColorIndex = 4
            If Cel.Value < 4 And Cells(i, 4) = "FSR" Then Cel.Interior.ColorIndex = 3
            If Cel.Value < 12 And Cells(i, 4) = "CFM" Then Cel.Interior.ColorIndex = 3
            If Cel = "" Then Cel.Interior.ColorIndex = xlNone
        Next i
    Next Cel
    Application.ScreenUpdating = True
End Sub

A + à tous
 
Re : mise en forme conditionnelle

Bonjour,

Merci pour ta réponse rapide. Pour l'instant, j'ai l'impression que l'instruction ne fonctionne que sur CFM (qui se met bien en vert comme dans les instructions). Pour le reste, c'est en rouge. Par exemple les valeurs de FSR ne passent pas du tous en vert lorsque >4.
N'y aurait il pas un pb dans l'enchainement des if?

Merci de votre aide précieuse
 
Re : mise en forme conditionnelle

Bonjour,

Je vous mets en pièce jointe le fichier excel qui me pose problème.
Les valeurs dans la colonne D sont variable => CFM, FSR, SS43, SS39... et jamais placée au même endroit.
Par exemple, je voudrais que lorsque dans une ligne, en D on a FSR, l'ensemble des cellules (dans la même ligne) qui sont supérieures ou égale à 4 soit colorisé en vert.
Pour l'instant, quelque soit la case dans le tableau où on a un résultat supérieur à 4, le résultat est colorisé en vert. La condition FSR n'a pas l'air de rentrer en ligne de compte.

Merci pour votre aide
 

Pièces jointes

Re : mise en forme conditionnelle

Bonjour,

Je ne peux pas vraiment étant donnée que mes lignes changent souvent d'emplacement (ceci est du à l'execution de la macro précédente) et donc les conditions ne sont pas fixes.
 
Re : mise en forme conditionnelle

Bonjour

N'ayant pas ton fichier réel sous les yeux, je ne sais si cela sera applicable. Regardes toujours le fichier en pièce jointe. Cela te donnera peut être des idées.

@ plus
 

Pièces jointes

Re : mise en forme conditionnelle

Bonjour à tous,

Peux-tu essayer ceci :

VB:
Option Explicit


Sub MFC()
    Dim Cel As Range
    Dim i As Integer
    Application.ScreenUpdating = False




    For Each Cel In Range("E2:AA" & Range("D65536").End(xlUp).Row)
        For i = 1 To Range("D65536").End(xlUp).Row
            If Cel.Value >= 4 And Cells(i, 4) = "FSR" Then Cel.Interior.ColorIndex = 4
            If Cel.Value < 4 And Cells(i, 4) = "FSR" Then Cel.Interior.ColorIndex = 3
            If Cel.Value >= 12 And Cells(i, 4) = "CFM" Then Cel.Interior.ColorIndex = 4
            If Cel.Value < 12 And Cells(i, 4) = "CFM" Then Cel.Interior.ColorIndex = 3
            If Cel = "" Or Cel = 0 Then Cel.Interior.ColorIndex = xlNone
        Next i
    Next Cel
    Application.ScreenUpdating = True
End Sub

A+ à tous
 
Re : mise en forme conditionnelle

Re Bonjour,

Ca marche très bien. Il faudrait que je puisse maintenant intégrer cette mise en forme conditionnelle à ma macro précédente pour ne pas perdre à chaque fois que je fais des mise à jour, cette mise en forme conditionnelle.

Merci en tout cas 😀
 
Re : mise en forme conditionnelle

Re bonjour JCGL,

Je m'adressais dans mon post précédent à CISCO.
La première macro s'appelle "consolide" et me permet d'importer des données de plusieurs fichier d'un répertoire dans mon fichier de synthese.
En fait, je voudrais que la mise en forme conditionnelle (avec les conditions énoncées précédemment) se fasse automatiquement pour toutes lignes de mon tableau lorsque j'importe ces données, sachant que le nombre de ligne de donnée varie suivant le nombre de fichier que j'ai dans mon répertoire.
C'est un peu compliqué mais j'essaye d'être le plus clair possible

Merci à toi JCGL en tout cas pour ton aide
 
Re : mise en forme conditionnelle

Bonjour

Si la colonne Sample Type ne change pas de position, il ni a pas de problème.
Si le nombre de lignes varie, il suffit de définir la plage d'action de la MFC sur une plage plus grande. Pour le moment, elle l'est sur $E$2:$AA$13, mais tu peux l'étendre à $E$2:$AA$13000... Si ton fichier est vraiment très grand, il faudra peut être voir à améliorer cela pour que cela ne prenne pas trop de temps de travail..

@ plus
 
Re : mise en forme conditionnelle

salut

et Si... tu rajoutes quelques lignes à ta première macro ?
Code:
...
  compteur = compteur + 1
  'contrôler la feuille de travail pour cet ajout
  Dim C As Range
  For Each C In Range("E2:AA" & Range("D65536").End(xlUp).Row)
    If Cells(C.Row, 4) = "FSR" Or Cells(C.Row, 4) = "CFM" Then
      C.Interior.ColorIndex = IIf(C < 4, 3, 4)
    End If
  Next
  Workbooks(nf).Close False
...
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
345
Réponses
5
Affichages
665
W
Réponses
5
Affichages
910
Réponses
25
Affichages
1 K
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…