Macro : mise en forme de certaines lignes en particulier
Bonjour à tous,
Je rencontre un petit problème sur une macro, j'espère que vous allez pouvoir m'aider.
C'est une macro pour la mise en forme d'une page. Et sur un tableau, j'ai besoin qu'il me mette en forme plusieurs lignes en fonction de certaines conditions.
Pour les conditions, aucun problème, j'arrive a mettre en place les conditions sur une ligne, par exemple sur la ligne 67 si la cellule >95% alors telle ou telle couleur.
Mais j'aimerai pouvoir appliquer ces condition à plusieurs lignes en particulier (ligne 69, ligne 71 et ligne 79) à la fois sans avoir a reécrire la macro pour chaque ligne.
Je ne sais pas si je suis claire ou non. N'hésitez pas à me demander si vous ne comprenez pas ce que je dis.
Voici la macro :
Sub MEF_SYNTHESE_TAB4()
'
'Macro permettant d'appliquer une mise en forme conditionnelle selon 4 conditions
'Sélectionner le fichier puis l'onglet concerné: ici fichier "CM_PASSAGES EN IRR" - Onglet :[SYNTHESE]
Windows("CM_FACTURES INTERVENANTS.xlsm").Activate
Sheets("SYNTHESE").Select
'Identifier les N° de lignes et de colonnes des plages concernées par la mise en forme conditionnelle
Dim C As Integer 'Nomme une variable C pour les N° de colonne
Dim L As Integer 'Nomme une variable L pour les N° de ligne
For C = 3 To 14
For L = 67 To 67 Jusque la tout va bien, et c'est ici que j'aimerai rajouter des ligne à checker
'Poser les conditions (If...Then...Else...End If)de la mise en forme conditionnelle
If Cells(L, C).Value = "NA" Then 'Si la cellule (N°de ligne,N° de colonne) = NA alors
Cells(L, C).Interior.ColorIndex = xlNone
With Selection.Font
.TintAndShade = -0.499984740745262
End With
Else
If Cells(L, C).Value >= 0.95 Then
Cells(L, C).Interior.Color = 13434828
Cells(L, C).Font.ColorIndex = 1
Cells(L, C).Font.Italic = True
Else
If Cells(L, C).Value >= 0.9 And Cells(L, C).Value < 0.95 Then
Cells(L, C).Interior.Color = 16764057
Cells(L, C).Font.ColorIndex = 1
Cells(L, C).Font.Italic = True
Else
If Cells(L, C).Value >= 0.85 And Cells(L, C).Value < 0.9 Then
Cells(L, C).Interior.Color = 13434879
Cells(L, C).Font.ColorIndex = 1
Cells(L, C).Font.Italic = True
Else
If Cells(L, C).Value < 0.85 Then
Cells(L, C).Interior.Color = 16751103
Cells(L, C).Font.ColorIndex = 1
Cells(L, C).Font.Italic = True
End If
End If
End If
End If
End If
Next
Next
End Sub
Sub MEF_SYNTHESE_TAB4()
'Macro permettant d'appliquer une mise en forme conditionnelle selon 4 conditions
'Sélectionner le fichier puis l'onglet concerné: ici fichier "CM_PASSAGES EN IRR" - Onglet :[SYNTHESE]
Windows("CM_FACTURES INTERVENANTS.xlsm").Activate
Sheets("SYNTHESE").Select
'Identifier les N° de lignes et de colonnes des plages concernées par la mise en forme conditionnelle
Dim C As Integer 'Nomme une variable C pour les N° de colonne
Dim L As Integer 'Nomme une variable L pour les N° de ligne
For C = 3 To 14
For L = 67 To 67 'Jusque la tout va bien, et c'est ici que j'aimerai rajouter des ligne à checker
'Poser les conditions (If...Then...Else...End If)de la mise en forme conditionnelle
If Cells(L, C).Value = "NA" Then 'Si la cellule (N°de ligne,N° de colonne) = NA alors
Cells(L, C).Interior.ColorIndex = xlNone
With Selection.Font
.TintAndShade = -0.499984740745262
End With
Else
If Cells(L, C).Value >= 0.95 Then
Cells(L, C).Interior.Color = 13434828
Cells(L, C).Font.ColorIndex = 1
Cells(L, C).Font.Italic = True
Else
If Cells(L, C).Value >= 0.9 And Cells(L, C).Value < 0.95 Then
Cells(L, C).Interior.Color = 16764057
Cells(L, C).Font.ColorIndex = 1
Cells(L, C).Font.Italic = True
Else
If Cells(L, C).Value >= 0.85 And Cells(L, C).Value < 0.9 Then
Cells(L, C).Interior.Color = 13434879
Cells(L, C).Font.ColorIndex = 1
Cells(L, C).Font.Italic = True
Else
If Cells(L, C).Value < 0.85 Then
Cells(L, C).Interior.Color = 16751103
Cells(L, C).Font.ColorIndex = 1
Cells(L, C).Font.Italic = True
End If
End If
End If
End If
End If
Next
Next
End Sub1. Ton code posté avec les Balises Code ... pour la lisibilté ...
2. Si le chiffre 67 peut varier ... il suffit qu'il devienne une variable ...
Du coup je rajoute des variables c'est ca ?
Genre :
Dim C As Integer 'Nomme une variable C pour les N° de colonne
Dim L As Integer 'Nomme une variable L pour les N° de ligne
Dim M As Integer 'Nomme une variable L pour les N° de ligne
Dim N As Integer 'Nomme une variable L pour les N° de ligne
For C = 3 To 14
For L = 67 To 67
For M = 69 To 69
For N= 71 To 71
Merci beaucoup
Re,
Non ... pas tout à fait ...
Ta variable L désigne déjà le nombre de Lignes ...
Cette variable possède deux bornes ... deux chiffres qui peuvent changer ... dans ton cas de 67 à 71 ...
Du coup, tu pourrais par exemple avoir
Dim x As Long ' définir la première Borne des Lignes
Dim y As Long ' définier la seconde Borne des Lignes
x = 67
y = 71
' par conséquent For L = 67 To 67 devient
For L = x To yEst-ce-que cette explication est assez claire ....?
Oui mais du coup ca va me prendre les lignes entre 67 et 71 non ?
Re,
Oui ... effectivement ... cela concerner toutes les lignes 67,68,69,70 et 71 ....
Si tu ne veux intervenir, dans cette plage, que sur une ligne sur deux :
For L = x To y Step 2Merci beaucoup, ca marche !!!!
Bonne fin de journée
Content que 'çà marche ...'
Merci .... pour tes remerciements ...