J'ai actuellement un code VBA pour exécuter plusieurs actions dans Excel. J'ai notamment une condition qui dit que si ma valeur sélectionnée est égale à "Xxxxx" alors c'est en gras. J'ai fait également une condition pour la couleur.
Est-ce possible de simplifier ces conditions ?
Dim y As Integer
For y = Range("C" & Rows.Count).End(xlUp).Row To 2 Step -1
If Range("C" & y).Value = "Aaaaa" Or Range("C" & y).Value = "Bbbbb" Then Rows(y).Delete
If Range("C" & y).Value = "Xxxxxx" Or Range("C" & y).Value = "Yyyyyyy" Or Range("C" & y).Value = "Zzzz" Then Rows(y).Font.Bold = True
If Range("C" & y).Value = "Xxxxxx" Or Range("C" & y).Value = "Yyyyyyy" Or Range("C" & y).Value = "Zzzz" Then Rows(y).Font.Color = RGB(0, 0, 255)
Next y
vu que ce sont (a priori) pour les mêmes valeurs, pourquoi refaire le test ? tu peux faire plusieurs choses dans les if (il faut les mettre sur plusieurs lignes)
Dim y As Integer
For y = Range("C" & Rows.Count).End(xlUp).Row To 2 Step -1
If Range("C" & y).Value = "Aaaaa" Or Range("C" & y).Value = "Bbbbb" Then Rows(y).Delete
If Range("C" & y).Value = "Xxxxxx" Or Range("C" & y).Value = "Yyyyyyy" Or Range("C" & y).Value = "Zzzz" Then
Rows(y).Font.Bold = True
Rows(y).Font.Color = RGB(0, 0, 255)
End If
Next y
Tu peux aussi un peu allégé l'écriture en utilisant des array pour tes tests
Dim y As Integer
For y = Range("C" & Rows.Count).End(xlUp).Row To 2 Step -1
If isInArray(Range("C" & y).Value,Array("Aaaaa","Bbbbb")) Then Rows(y).Delete
If isInArray(Range("C" & y).Value, Array("Xxxxxx","Yyyyyyy","Zzzz")) Then
Rows(y).Font.Bold = True
Rows(y).Font.Color = RGB(0, 0, 255)
End If
Next y
..
' fonction de test de présence de value dans le tableau lArray
Function isInArray(value, lArray) As Boolean
Dim v
For Each v In lArray
If value = v Then
isInArray = True
Exit For
End If
Next v
End Function
- Edité par umfred 13 juin 2022 à 18:32:56
VBA Couleur cellule excel - Optimisation
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.