Circus Posté(e) le 20 mars 2012 Posté(e) le 20 mars 2012 Bonjour, tout d'abord , désolé si je poste mon probleme au mauvais endroit. Donc voila mon soucis :Je suis sur Excel 2003 Je souhaite colorer des cases sur une ligne en fonction d'une des cases de celle-ci.Jusque là, j'arrive.La ou je bloc c'est pour le faire sur une plage de ligne ! Private Sub couleur_auto() If Range("E1").Value = "D" Then Range("B1:E1").Interior.ColorIndex = 34 End If End Sub ----------------------------------------------------- Private Sub Workbook_Open() couleur_auto End Sub J'ai fais en sort que la macro se lance a l'ouverture du fichier excel, d'ailleur c'est possible de faire en sort quel se lance des qu'il y a une modification dans une case de la feuille ? Sinon je rajouterai un raccourci pour la lancer rapidement. Merci d'avanceCircus Autocad Architecture Inventor 3d Viz Paint
Circus Posté(e) le 4 avril 2012 Auteur Posté(e) le 4 avril 2012 J'ai une solution ! Private Sub Worksheet_Change(ByVal Target As Range) ' Zone 'surveillée" E1:E999 If Not Intersect(Range("E1:E999"), Target) Is Nothing And Target.Count = 1 Then If Target = "D" Then Range("B" & Target.Row & ":E" & Target.Row).Interior.ColorIndex = 34 Else Range("B" & Target.Row & ":E" & Target.Row).Interior.ColorIndex = xlNone End If End If End Sub code a inserer dans la page. Autocad Architecture Inventor 3d Viz Paint
stugeol Posté(e) le 4 avril 2012 Posté(e) le 4 avril 2012 Bonjour,Quand tu dis pour le faire sur une plage de ligne c'est à dir?Colorer la ligne entière?Dans ce cas tu peux essayer :Range("B1:E1").EntireRow.interior.colorIndex = 34Si tu veux le faire sur plusieur lignes différentes où la cellule de colonne D contient la valeur D, voici un moyen de procédé si tu n'as pas de cellule vide sur la colonne D :1) Faire un itération sur les cellules de la colonne D2)tester si la cellule est vide 2.1) si oui quiter l'itération. 2.2) si non, contient-elle la valeur D 2.2.1) si oui colore la plage de cellule (ou la ligne entière au choix) 2.2.2) Si non passer à la cellule suivanteCe qui te donne en code : Dim i As Integer i = 0 Do i = i + 1 Select Case (Cells(i, 4).Value) Case "D" Cells(i, 4).EntireRow.Interior.ColorIndex = 34 'Colore la ligne entière 'Range(Range(Cells(i, 2), Cells(i, 5))).Interior.ColorIndex = 34 pour colorer juste ta plage de cellule sur la ligne End Select Loop Until (Cells(i, 4).Value = Empty) Remarque tu peux emplacer le select case par if then else si tu n'as qu'un cas à traiter.Cordialement. Petit à petit on devient moins petit
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant