Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Simplification code VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

maninwhite

XLDnaute Occasionnel
Bonjour à toutes et à tous

Je reviens sur le forum afin d'obtenir la simplification du code suivant.

Ce code me permet de colorer des formes automatiques suivant la valeur d'une cellule.

Merci

Code:
Worksheets("Stats FY 1314").Activate
With Worksheets("Stats FY 1314")

If Range("B93").Value >= 1 Then
ActiveSheet.Shapes("tete").DrawingObject.Interior.ColorIndex = 3
Else: ActiveSheet.Shapes("Oval 8").DrawingObject.Interior.ColorIndex = 4
End If

If Range("B94").Value >= 1 Then
ActiveSheet.Shapes("oeild").DrawingObject.Interior.ColorIndex = 3
Else: ActiveSheet.Shapes("oeild").DrawingObject.Interior.ColorIndex = 4
End If

If Range("B95").Value >= 1 Then
ActiveSheet.Shapes("oeilg").DrawingObject.Interior.ColorIndex = 3
Else: ActiveSheet.Shapes("oeilg").DrawingObject.Interior.ColorIndex = 4
End If

If Range("B96").Value >= 1 Then
ActiveSheet.Shapes("cou").DrawingObject.Interior.ColorIndex = 3
Else: ActiveSheet.Shapes("cou").DrawingObject.Interior.ColorIndex = 4
End If

If Range("B97").Value >= 1 Then
ActiveSheet.Shapes("epauleD").DrawingObject.Interior.ColorIndex = 3
Else: ActiveSheet.Shapes("epauleD").DrawingObject.Interior.ColorIndex = 4
End If

End With
 
Re : Simplification code VBA

Bonjour maninwhite

A tester:

Code:
cellules = Array(93, 94, 95, 96, 97)
corps = Array("tete", "oeild", "oeilg", "cou", "epauleD")
For n = LBound(cellules) To UBound(cellules)
 If Range("B" & cellules(n)).Value >= 1 Then
 ActiveSheet.Shapes(corps(n)).DrawingObject.Interior.ColorIndex = 3
 Else: ActiveSheet.Shapes(corps(n)).DrawingObject.Interior.ColorIndex = 4
Next
 
Re : Simplification code VBA

bonjour 🙂

une solution à tester :
Code:
Worksheets("Stats FY 1314").Activate

With Worksheets("Stats FY 1314")
    For i = 93 To 97
        Select Case i
            Case 93: a = "tete": b = "Oval 8"
            Case 94: a = "oeild": b = "oeild"
            Case 95: a = "oeilg": b = "oeilg"
            Case 96: a = "cou": b = "cou"
            Case 97: a = "epauleD": b = "epauleD"
        End Select
        If .Range("b" & i) >= 1 Then
            ActiveSheet.Shapes(a).DrawingObject.Interior.ColorIndex = 3
        Else
            ActiveSheet.Shapes(b).DrawingObject.Interior.ColorIndex = 4
        End If
    Next i
End With

salut

edit : coucou pierrejean, content de te croiser, joli code minimaliste
 
Re : Simplification code VBA

Re

Salut Hervé
Heureux également de te croiser à nouveau (tu te fais vraiment rare en ce moment)
Correction : Avais pas percuté l'Ovale
Code:
cellules = Array(93, 94, 95, 96, 97)
corps = Array("tete", "oeild", "oeilg", "cou", "epauleD")
corps_b=Array("Oval 8","oeild", "oeilg", "cou", "epauleD")
For n = LBound(cellules) To UBound(cellules)
 If Range("B" & cellules(n)).Value >= 1 Then
 ActiveSheet.Shapes(corps(n)).DrawingObject.Interior.ColorIndex = 3
 Else: ActiveSheet.Shapes(corps_b(n)).DrawingObject.Interior.ColorIndex = 4
Next
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
914
Réponses
2
Affichages
411
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
4
Affichages
756
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…