Simplifier un select case

  • Initiateur de la discussion Initiateur de la discussion mroma
  • Date de début Date de début

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 !

M

mroma

Guest
bonjour à tous,

Je me permets de vous poser une nouvelle question sur ce superbe forum 😉

Alors voila, je souhaite simplifier mon Select case

Code:
            Select Case Cel.Offset(0, -1)
              Case Is = "AFCE"
                  If Kase.Offset(0, 8) = "IFCE" Or Kase.Offset(0, 8) = "IFC1E" Or Kase.Offset(0, 8) = "IFC2E" _
                    Or Kase.Offset(0, 8) = "IFC3E" Or Kase.Offset(0, 8) = "IFC4E" Or Kase.Offset(0, 8) = "IFC5E" Then
                      Kase.Offset(0, 8).Interior.ColorIndex = 10  ' Vert
                      Kase.Offset(0, 8).Font.Color = vbBlack
                  Else
                      Kase.Offset(0, 8).Interior.ColorIndex = 3  ' Rouge
                      Kase.Offset(0, 8).Font.Color = vbBlack
                      .Rows(Kase.Row).Copy Sheets("Error on the MSCode").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
                      Sheets("Error on the MSCode").Columns("A:U").Columns.AutoFit
                  End If
                
              Case Is = "AFDE"
                  If Kase.Offset(0, 8) = "IDDE" Or Kase.Offset(0, 8) = "IDD1E" Or Kase.Offset(0, 8) = "IDD2E" Or Kase.Offset(0, 8) = "IFDE" Then
                    Kase.Offset(0, 8).Interior.ColorIndex = 10  ' Vert
                    Kase.Offset(0, 8).Font.Color = vbBlack
                  Else
                    Kase.Offset(0, 8).Interior.ColorIndex = 3  ' Rouge
                    Kase.Offset(0, 8).Font.Color = vbBlack
                    .Rows(Kase.Row).Copy Sheets("Error on the MSCode").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
                    Sheets("Error on the MSCode").Columns("A:U").Columns.AutoFit
                 End If
                  
              Case Is = "IFRE"
                  If Kase.Offset(0, 8) = "IFAE" Or Kase.Offset(0, 8) = "IFRE" Or Kase.Offset(0, 8) = "IFR1" Or Kase.Offset(0, 8) = "IFR2" Then
                    Kase.Offset(0, 8).Interior.ColorIndex = 10  ' Vert
                    Kase.Offset(0, 8).Font.Color = vbBlack
                  Else
                    Kase.Offset(0, 8).Interior.ColorIndex = 3  ' Rouge
                    Kase.Offset(0, 8).Font.Color = vbBlack
                    .Rows(Kase.Row).Copy Sheets("Error on the MSCode").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
                    Sheets("Error on the MSCode").Columns("A:U").Columns.AutoFit
                 End If
             End Select

Merci !! 😉😀
 
Re : Simplifier un select case

Bonjour Mroma, bonjour le forum,

Je vois mal comment simplifier ton code si ce n'est en utilisant un second Select Case. Par contre, comment le rendre plus lisible ça oui :

Code:
Select Case Cel.Offset(0, -1)
    Case Is = "AFCE"
        If Kase.Offset(0, 8) = "IFCE" Or Kase.Offset(0, 8) = "IFC1E" Or Kase.Offset(0, 8) = "IFC2E" _
        Or Kase.Offset(0, 8) = "IFC3E" Or Kase.Offset(0, 8) = "IFC4E" Or Kase.Offset(0, 8) = "IFC5E" Then
            Kase.Offset(0, 8).Interior.ColorIndex = 10  ' Vert
            Kase.Offset(0, 8).Font.Color = vbBlack
        Else
            Kase.Offset(0, 8).Interior.ColorIndex = 3  ' Rouge
            Kase.Offset(0, 8).Font.Color = vbBlack
            .Rows(Kase.Row).Copy Sheets("Error on the MSCode").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
            Sheets("Error on the MSCode").Columns("A:U").Columns.AutoFit
        End If

    Case Is = "AFDE"
        If Kase.Offset(0, 8) = "IDDE" Or Kase.Offset(0, 8) = "IDD1E" Or Kase.Offset(0, 8) = "IDD2E" Or Kase.Offset(0, 8) = "IFDE" Then
            Kase.Offset(0, 8).Interior.ColorIndex = 10  ' Vert
            Kase.Offset(0, 8).Font.Color = vbBlack
        Else
            Kase.Offset(0, 8).Interior.ColorIndex = 3  ' Rouge
            Kase.Offset(0, 8).Font.Color = vbBlack
            .Rows(Kase.Row).Copy Sheets("Error on the MSCode").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
            Sheets("Error on the MSCode").Columns("A:U").Columns.AutoFit
        End If

    Case Is = "IFRE"
        If Kase.Offset(0, 8) = "IFAE" Or Kase.Offset(0, 8) = "IFRE" Or Kase.Offset(0, 8) = "IFR1" Or Kase.Offset(0, 8) = "IFR2" Then
            Kase.Offset(0, 8).Interior.ColorIndex = 10  ' Vert
            Kase.Offset(0, 8).Font.Color = vbBlack
        Else
            Kase.Offset(0, 8).Interior.ColorIndex = 3  ' Rouge
            Kase.Offset(0, 8).Font.Color = vbBlack
            .Rows(Kase.Row).Copy Sheets("Error on the MSCode").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
            Sheets("Error on the MSCode").Columns("A:U").Columns.AutoFit
        End If
End Select

Avec le second End Select :
Code:
Select Case Cel.Offset(0, -1)
    Case Is = "AFCE"
        Select Case Kase.Offset(0, 8).Value
            Case "IFCE", "IFC1E", "IFC2E", "IFC3E", "IFC4E", "IFC5E"
                Kase.Offset(0, 8).Interior.ColorIndex = 10  ' Vert
                Kase.Offset(0, 8).Font.Color = vbBlack
            Case Else
                Kase.Offset(0, 8).Interior.ColorIndex = 3  ' Rouge
                Kase.Offset(0, 8).Font.Color = vbBlack
                .Rows(Kase.Row).Copy Sheets("Error on the MSCode").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
                Sheets("Error on the MSCode").Columns("A:U").Columns.AutoFit
        End Select
    Case Is = "AFDE"
        Select Case Kase.Offset(0, 8).Value
            Case "IDDE", "IDD1E", "IDD2E", "IFDE"
                Kase.Offset(0, 8).Interior.ColorIndex = 10  ' Vert
                Kase.Offset(0, 8).Font.Color = vbBlack
            Case Else
                Kase.Offset(0, 8).Interior.ColorIndex = 3  ' Rouge
                Kase.Offset(0, 8).Font.Color = vbBlack
                .Rows(Kase.Row).Copy Sheets("Error on the MSCode").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
                Sheets("Error on the MSCode").Columns("A:U").Columns.AutoFit
        End Select
    Case Is = "IFRE"
        Select Case Kase.Offset(0, 8).Value
            Case "IFAE", "IFRE", "IFR1E", "IFRE2"
                Kase.Offset(0, 8).Interior.ColorIndex = 10  ' Vert
                Kase.Offset(0, 8).Font.Color = vbBlack
            Case Else
                Kase.Offset(0, 8).Interior.ColorIndex = 3  ' Rouge
                Kase.Offset(0, 8).Font.Color = vbBlack
                .Rows(Kase.Row).Copy Sheets("Error on the MSCode").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
                Sheets("Error on the MSCode").Columns("A:U").Columns.AutoFit
        End Select
End Select
 
Re : Simplifier un select case

Rebonjour.

Je verrais quand même bien quelque chose comme ça :
VB:
Dim Lst2 As String
Select Case Cel.Offset(0, -1)
    Case Is = "AFCE": Lst2 = "IFCE|IFC1E|IFC2E|IFC3E|IFC4E|IFC5E"
    Case Is = "AFDE": Lst2 = "IDDE|IDD1E|IDD2E|IFDE"
    Case Is = "IFRE": Lst2 = "IFCE|IFC1E|IFC2E|IFC3E|IFC4E|IFC5E"
    Case Else:        Lst2 = "…": End Select
If Lst2 <> "…" Then
   Kase.Offset(0, 8).Font.Color = vbBlack
   If InStr(Lst2, Kase.Offset(0, 8).Value) Then
      Kase.Offset(0, 8).Interior.ColorIndex = 10  ' Vert
   Else
      Kase.Offset(0, 8).Interior.ColorIndex = 3  ' Rouge
      .Rows(Kase.Row).Copy Sheets("Error on the MSCode").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
      Sheets("Error on the MSCode").Columns("A:U").Columns.AutoFit: End If: End If
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
847
Réponses
4
Affichages
550
Retour