Macro Changement de couleur
Fernand
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à vous tous,
Je sollicite votre aide car mon code ne fonctionne pas du tout et en plus il me semble qu'il y aurait une façon plus simple d'y arriver.
Ce que je cherche à faire, je le fais déjà avec mise en forme conditionnelle, mais je suis rendu déjà rendu à 4 choix de couleur.
si(a1)=1;mettre(A1:A3)de tel couleur;si(a1)=2;mettre(A1:A3)de tel couleur;..etc.
J'ai dans mon tableau 17 casé qui peut changer de valeur et ceux-ci provient d'une autre feuille ça risque d'être d'une longueur excessif.
Voici le code que j'ai pensé mais comme je vous dis il ne fonctionne pas correctement.
Merci de votre aide.
Je sollicite votre aide car mon code ne fonctionne pas du tout et en plus il me semble qu'il y aurait une façon plus simple d'y arriver.
Ce que je cherche à faire, je le fais déjà avec mise en forme conditionnelle, mais je suis rendu déjà rendu à 4 choix de couleur.
si(a1)=1;mettre(A1:A3)de tel couleur;si(a1)=2;mettre(A1:A3)de tel couleur;..etc.
J'ai dans mon tableau 17 casé qui peut changer de valeur et ceux-ci provient d'une autre feuille ça risque d'être d'une longueur excessif.
Voici le code que j'ai pensé mais comme je vous dis il ne fonctionne pas correctement.
Merci de votre aide.
Sub worksheet_change(ByVal target As Range) If Not Intersect(target, Range("a1")) Is Nothing Then On Error Resume Next If Worksheets(1).Range.Value("a1") = "Vac" _ Then Worksheets(1).Range("a1:a3").Interior.ColorIndex = 1 If Worksheets(1).Range.Value("a1") = "For" _ Then Worksheets(1).Range("a1:a3").Interior.ColorIndex = 2 If Worksheets(1).Range.Value("a1") = "Pre" _ Then Worksheets(1).Range("a1:a3").Interior.ColorIndex = 3 If Worksheets(1).Range.Value("a1") = "Mal" _ Then Worksheets(1).Range("a1:a3").Interior.ColorIndex = 4 ElseIf Not Intersect(target, Range("b1")) Is Nothing Then If Worksheets(1).Range.Value("b1") = "Vac" _ Then Worksheets(1).Range("b1:b3").Interior.ColorIndex = 1 If Worksheets(1).Range.Value("b1") = "For" _ Then Worksheets(1).Range("b1:b3").Interior.ColorIndex = 2 If Worksheets(1).Range.Value("b1") = "Pre" _ Then Worksheets(1).Range("b1:b3").Interior.ColorIndex = 3 If Worksheets(1).Range.Value("b1") = "Mal" _ Then Worksheets(1).Range("b1:b3").Interior.ColorIndex = 4 ElseIf Not Intersect(target, Range("c1")) Is Nothing Then If Worksheets(1).Range.Value("c1") = "Vac" _ Then Worksheets(1).Range("c1:c3").Interior.ColorIndex = 1 If Worksheets(1).Range.Value("c1") = "For" _ Then Worksheets(1).Range("c1:c3").Interior.ColorIndex = 2 If Worksheets(1).Range.Value("c1") = "Pre" _ Then Worksheets(1).Range("c1:c3").Interior.ColorIndex = 3 If Worksheets(1).Range.Value("c1") = "Mal" _ Then Worksheets(1).Range("c1:c3").Interior.ColorIndex = 4 ElseIf Not Intersect(target, Range("d1")) Is Nothing Then If Worksheets(1).Range.Value("d1") = "Vac" _ Then Worksheets(1).Range("d1:d3").Interior.ColorIndex = 1 If Worksheets(1).Range.Value("d1") = "For" _ Then Worksheets(1).Range("d1:d3").Interior.ColorIndex = 2 If Worksheets(1).Range.Value("d1") = "Pre" _ Then Worksheets(1).Range("d1:d3").Interior.ColorIndex = 3 If Worksheets(1).Range.Value("d1") = "Mal" _ Then Worksheets(1).Range("d1:d3").Interior.ColorIndex = 4 End If End Sub
A voir également:
- Macro Changement de couleur
- Changer de dns - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Excel cellule couleur si condition texte - Guide
- Boite a couleur - Télécharger - Divers Photo & Graphisme
- Changer la couleur de la barre des taches - Guide
4 réponses
Bonjour
autre méthode VBA uniquement
attention , sensible à la casse mais facilement adaptable
Select case Ucase(cible)
Case is ="VAC"
etc.
Michel
autre méthode VBA uniquement
Private Sub Worksheet_Change(ByVal Target As Range) Dim Adresse As String If Not Intersect(Target, Range("A1:D1")) Is Nothing Then Adresse = Target.Address Select Case Adresse Case Is = "$A$1" colorier Target, "A1:A3" Case Is = "$B$1" colorier Target, "B1:B3" '.... à complèter End Select End If End Sub '------------------------ Sub colorier(cible, plage) With Sheets(1).Range(plage).Interior Select Case cible Case Is = "Vac" ColorIndex = 1 Case Is = "For" .ColorIndex = 2 Case Is = "Pre" .ColorIndex = 3 Case Is = "Mal" .ColorIndex = 4 Case Else MsgBox "erreur de saisie", vbCritical Exit Sub End Select End With End Sub
attention , sensible à la casse mais facilement adaptable
Select case Ucase(cible)
Case is ="VAC"
etc.
Michel
Merci à vous tous d'avoir pris le temps de m'aider et c'est grandement apprécié, je test le tous ce soir et je vous redonne des nouvelles bientôt.
Merci.
Merci.