Griser une ligne en fonction du résultat d'une cellule

Résolu
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008 - 31 janv. 2008 à 20:20
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008 - 2 févr. 2008 à 22:23
Bonjour,
Je cherche à "griser" une ligne (de A à S) lorsque la cellule S de cette ligne affiche "Retour SOGAL". C'est donc une mise en forme conditionnelle, mais étendue à la ligne....

(Excel 2003)

10 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
2 févr. 2008 à 21:57
L'idée de Molenn était pourtant très bonne. Il suffit seulement de changer la formule selon tes besoins.
plutôt que d'écrire dans la mise en forme conditionnelle
$A$15
écris
$S1"Retour SOGAL"
et ajuste le format que tu veux ...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
31 janv. 2008 à 20:36
Salut
C'est une bonne question.
Apparemment, on ne peut pas le faire avec la mise en forme conditionnelle qui ne peut porter que sur la cellule qui sert au test.
Va falloir le faire avec les macros.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008
31 janv. 2008 à 20:59
C'est bien ce que je me disais, mais je ne maitrise pas assez la syntaxe...un petit coup de pouce m'aiderai beaucoup. Ma difficulté est d'arriver à sélectionner la ligne qui correspond à la cellule. Lorsque j'enregistre la macro, évidemment elle re-grise la première ligne, qui ne correspond pas à la cellule sélectionnée.

Sub griser()
'
' griser Macro
' griser la ligne
'
' Touche de raccourci du clavier: Ctrl+s
'
    ActiveWindow.SmallScroll ToRight:=4
    Range("A2:S2").Select
    Range("S2").Activate
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.249977111117893
        .PatternTintAndShade = 0
    End With
End Sub

En plus, j'aimerai bien que toutes les lignes dont la cellule S donne ce résultat, se grisent dès l'ouverture du classeur....

Merci
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
31 janv. 2008 à 22:49
Tu pourrais le faire avec la mise en forme conditionnelle, mais il faudra que tu répètes la formule pour chaque cellule dont tu veux changer la couleur. De toutes façons, griser une ligne entière n'est pas à conseiller... C'est très gourmand la coloration sous Excel...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
1 févr. 2008 à 09:39
Bonjour

Pour le faire à l'ouverture du classeur, utilises (dans le module WorkBook) l'event Open.

Pour faire la coloration voici une piste (code tapé directement dans le forum, erreurs non exclues) :

Public sub Coloration()

Dim lRangeCtrl  as Range
dim lRangeAct as Range

Cells.Interior.ColorIndex=0

set lRangeCtrl=Range("S1:S" & cstr(Columns("S:S").Find("").Row-1))
set lrangeAct=lRangeCtrl.Find("Retour SOGAL")
set lRangeAct=Range("S1")

do until lRangeCtrl.FindNext(lRangeAct) is nothing
    set lRangeAct=lRangeCtrl.FindNext(lRangeAct)
    Range("A" & cstr(lrangeact.row) & ":S" & cstr(lrangeact.row)).interion.colorindex=3 'Ici l'index de la couleur
loop

End sub

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
1 févr. 2008 à 09:41
Bonjour

Ah j'oubliais, ajoute aussi
Application.ScreenUpdating=False 'Bloque le rafraichissement de l'affichage
Application.ScreenUpdating=True 'Permet le rafraichissement de l'affichage

quand ta macro sera OK.
Cela permettre une meilleur vitesse.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
1 févr. 2008 à 09:54
Ca n'a vraiment rien de compliqué à faire avec la mise en forme conditionnelle :

Tu veux griser une ligne en fonction du contenu de la cellule A1, et ton critère, c'est par exemple que A1 soit égal à 5.
Tu sélectionnes la/les ligne(s) que tu veux griser, tu fais Menu\Format\Mise en forme conditionnelle, et au lieu de prendre "la valeur de la cellule est", tu prends "la formule est" et tu colles la formule suivante
$A$15
Tu choisis les couleurs/bordures qui vont bien et tu valides.

Voilà, toutes les cellules de ta ligne seront grisées quand tu marqueras 5 dans A1.

Rien de sorcier.
Et bien entendu, ça fonctionne pareil en colonne

Molenn
0
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008
2 févr. 2008 à 13:11
Molenn, ta proposition est séduisante, mais ne fonctionne pas dans le cas présent puisque je veux prendre en compte l'ensemble des cellules de la colonne S pour ne griser que la ligne dont la cellule S remplie la condition.

Je tenterai le module proposé par Henri dès mon retour la semaine prochaine....

Merci à tous
0
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008
2 févr. 2008 à 21:27
salut NHenry,

Cette piste est la bonne, mais petit pb : l'exécution de la macro colore toutes les lignes de la colonne A à S, mais de la première à l'infini, en boule perpétuelle, sans tenir compte de la présence de "Retour SOGAL" dans la cellule S......

T'aurais pas un ptit truc....des fois que ça me fasse gagner un siècle de leture de "microapplication" ou de "VBA pour les nus !"

Merci
0
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008
2 févr. 2008 à 22:23
MIRACLE ça marche ! , mais il faut remplacer le 1 par un 2 car c'est la ligne d'en dessous qui se colore si je mets le chiffre 1....et là je ne saisis pas vraiment pourquoi il faut un 2 plutot qu'un 1

Merci !
0
Rejoignez-nous