Partage
  • Partager sur Facebook
  • Partager sur Twitter

VBA Couleur cellule excel - Optimisation

Avis

    8 juin 2022 à 16:24:05

    Bonjour,

    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



    Cordialement.

    -
    Edité par DamienMerlin 8 juin 2022 à 16:32:02

    • Partager sur Facebook
    • Partager sur Twitter
      13 juin 2022 à 18:25:53

      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

      • Partager sur Facebook
      • Partager sur Twitter

      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.
      • Editeur
      • Markdown