allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 octobre 2008
-
31 janv. 2008 à 20:20
allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 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....
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 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....
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 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
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 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
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 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
allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 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....
allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 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 !"
allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 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