Griser une ligne en fonction du résultat d'une cellule [Résolu]

allroadspp 38 Messages postés samedi 16 juin 2007Date d'inscription 31 octobre 2008 Dernière intervention - 31 janv. 2008 à 20:20 - Dernière réponse : allroadspp 38 Messages postés samedi 16 juin 2007Date d'inscription 31 octobre 2008 Dernière intervention
- 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)
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 2 févr. 2008 à 21:57
3
Merci
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

Merci cs_MPi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_MPi
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 31 janv. 2008 à 20:36
0
Merci
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)
Commenter la réponse de cs_Jack
allroadspp 38 Messages postés samedi 16 juin 2007Date d'inscription 31 octobre 2008 Dernière intervention - 31 janv. 2008 à 20:59
0
Merci
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
Commenter la réponse de allroadspp
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 31 janv. 2008 à 22:49
0
Merci
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
Commenter la réponse de cs_MPi
NHenry 14262 Messages postés vendredi 14 mars 2003Date d'inscription 22 septembre 2018 Dernière intervention - 1 févr. 2008 à 09:39
0
Merci
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
Commenter la réponse de NHenry
NHenry 14262 Messages postés vendredi 14 mars 2003Date d'inscription 22 septembre 2018 Dernière intervention - 1 févr. 2008 à 09:41
0
Merci
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
Commenter la réponse de NHenry
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 1 févr. 2008 à 09:54
0
Merci
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
Commenter la réponse de Molenn
allroadspp 38 Messages postés samedi 16 juin 2007Date d'inscription 31 octobre 2008 Dernière intervention - 2 févr. 2008 à 13:11
0
Merci
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
Commenter la réponse de allroadspp
allroadspp 38 Messages postés samedi 16 juin 2007Date d'inscription 31 octobre 2008 Dernière intervention - 2 févr. 2008 à 21:27
0
Merci
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
Commenter la réponse de allroadspp
allroadspp 38 Messages postés samedi 16 juin 2007Date d'inscription 31 octobre 2008 Dernière intervention - 2 févr. 2008 à 22:23
0
Merci
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 !
Commenter la réponse de allroadspp

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.