Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Format conditionnel spécifique!besoin de macro ou pas?
Re : Format conditionnel spécifique!besoin de macro ou pas?
Re
A tester :
Code:
Sub ColorierLigne()
Dim DerLigne As Long, c As Long
DerLigne = Range("A" & Rows.Count).End(xlUp).Row
For c = DerLigne To 2 Step -1
If Range(Range("A" & c), Range("E" & c)).Interior.ColorIndex <> xlColorIndexNone Then
If Range("A" & c).Value = Range("A" & c - 1).Value Then
Range(Range("A" & c - 1), Range("E" & c - 1)).Interior.ColorIndex = 7
End If
End If
Next c
End Sub
Re : Format conditionnel spécifique!besoin de macro ou pas?
Salut idimpact et le forum
Si tu expliquais le but ? On peut sans doute le faire par macro, mais aussi pas MFC. Mais avec juste les indications que tu donnes, il y a trop de possibilités de fonctionnement.
Pour ce que tu donnes : on colorie si la ligne ou la ligne du dessus contient "test" en E
A+
Re : Format conditionnel spécifique!besoin de macro ou pas?
Re
histoire d'adapter le code à des tableaux de différentes grandeurs (et de m'exercer par la même occasion), une autre manière de l'écrire :
Code:
Sub ColorierLigne2()
Dim DerLigne As Long, c As Long, Plage As Range
DerLigne = Range("A" & Rows.Count).End(xlUp).Row
Set Plage = [A1].CurrentRegion.Offset(1, 0).Resize(DerLigne - 1)
For c = DerLigne To 2 Step -1
If Range(Cells(c, 1), Cells(c, Plage.Columns.Count)).Interior.ColorIndex _
<> xlColorIndexNone Then
If Cells(c, 1).Value = Cells(c - 1, 1).Value Then
Range(Cells(c - 1, 1), Cells(c - 1, Plage.Columns.Count)).Interior.ColorIndex = 7
End If
End If
Next c
End Sub
Ne pas hésiter à me corriger ou me conseiller si nécessaire.
A+
Pour définir la plage. J'avoue ne pas comprendre ta formule (sans parler de sheet1)
cellule de référence A2
décalée de 0 ligne, 0 colonne (cellule de référence, (toujours A2 pour réf)
Pour la hauteur, tu prends le numéro de la ligne de la première occurrence de "test" et E
Déjà, je mettrais une largeur de 1 colonne, mais là n'est pas le problème (j'ai dit que je ne comprenais pas tout).
Par contre, si tu mets un deuxième "test", en E11 (et rien n'indique qu'il n'y aura qu'un seul "test"), je ne suis pas sûr du résultat.
De plus, la demande laisse planer le doute :
- Doit-on colorier toute les lignes comportant AAA en A ou seulement celle précédant "test" ?
- Est-ce que dans le fichier de travail les compagnies (colonne A) seront classées par ordre croissant ?
C'est pas une critique pour critiquer, juste une explication du pourquoi je demande des précisions.
Personnellement, je trouve qu'un sujet qui dépasse les dix postes, signifie que je n'ai pas su répondre correctement à la demande (sauf, si on étoffe la demande initiale).
A+
Re : Format conditionnel spécifique!besoin de macro ou pas?
Merci à tous pour vos réponses! J'ai opté pour la solution formule, mes données en colonne A seront toujours classées par ordre croissant afin que la forumule fonctionne. La solution formule semble fonctionner correctement mais je souhaite encore faire quelques tests pour l'adapter à mon fichier.
Pour chaque compagnie dans mon fichier il existe des codes, codes d'avancement de projet! Certains sont définitifs et d'autres non! Quand un projet est terminé, je souhaite que toutes les lignes ou apparait le nom de la compagnie soient de la couleur du code définitif.
J'espère que la solution fonctionnera, je me pose la question des conflits entre différentes MFC. Je vais travailler dessus et vous tiens informé!! En tout cas merci pour vos solutions et vos conseils.
Pour éviter le soucis du classement par ordre croissant des compagnies, il me faudrait une macro qui : si le code "test" apparait dans la colonne E10 alors toutes les lignes qui ont la meme valeur que A10 se colorient de la couleur de la ligne 10. il faut que je regarde ca mais je debute en macro.
Re : Format conditionnel spécifique!besoin de macro ou pas?
RE le forum!!
Il s'avère que le système de formules ralentisse pas mal la machine... J'ai plusieurs codes possibles avec différentes couleurs (5 couleurs pour une dizaine de codes)
Alors je pensais faire un mix des deux solutions : je garde mes MFC pour colorier la ligne si dans la colonne E j'ai la valeur "test".
et je souhaite dire à ma macro:
Regarde dans mon joli tableau les lignes qui sont coloriées. Lorsque tu trouves une ligne coloriée tu regardes la valeur présente dans la colonne A, si tu retrouves cette valeur ailleurs dans cette meme colonne A alors colorie moi la ligne entière ou la valeur se trouve... et ainsi de suite sachant que je vais avoir 5 couleurs de lignes différentes...
Re : Format conditionnel spécifique!besoin de macro ou pas?
Re,
A priori, il suffit de compléter où il faut la colonne E :
Code:
Sub EtendreTest()
Dim plage As Range, cel As Range, txt As String
Application.ScreenUpdating = False
On Error Resume Next
Set plage = [E2:E65536].SpecialCells(xlCellTypeConstants, 2)
For Each cel In plage
txt = cel.Offset(, -4)
[A:A].Replace txt, 1, LookAt:=xlWhole
Set plage = Nothing
Set plage = [A:A].SpecialCells(xlCellTypeConstants, 1)
plage.Offset(, 4) = "test"
plage = txt
Next
End Sub
Fichier (3) joint.
Edit : il n'y a ici qu'une seule couleur de MFC, on pourrait en mettre jusqu'à 3 en traitant 3 colonnes E F G.
Re : Format conditionnel spécifique!besoin de macro ou pas?
Re,
Cette macro sera plus rapide s'il y a des valeurs "test" redondantes (c'est le cas une fois la colonne E complétée) :
Code:
Sub EtendreTest()
Dim plage As Range, d As Object, cel As Range, txt
Application.ScreenUpdating = False
On Error Resume Next
Set plage = [E2:E65536].SpecialCells(xlCellTypeConstants, 2)
Set d = CreateObject("Scripting.Dictionary")
For Each cel In plage.Offset(, -4)
d(cel.Value) = cel.Value
Next
For Each txt In d.items
[A:A].Replace txt, 1, LookAt:=xlWhole
Set plage = Nothing
Set plage = [A:A].SpecialCells(xlCellTypeConstants, 1)
plage.Offset(, 4) = "test"
plage = txt
Next
End Sub
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.