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

Simplifier mon codage

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 !

siocnarf

XLDnaute Occasionnel
Bonjour,

J'ai un bout de code où j'utilise des Select Case. Je me demandais si quelqu'un aurait une idée sur comment le simplifier. Puis-je incrémenter string1 à String11 puis lire ce qui se retrouve dans la variable sans systématiquement écrire strstring1,...?

Code:
Sub ExtraireCodedErreurs(EC_VFeuilExtractData, EC_Extraire_Message, EC_Extraire_Message2, EC_Extraire_ligne)
    
Dim strStringaTester As String
Dim strString1 As String
Dim strString2 As String
Dim strString3 As String
Dim strString4 As String
Dim strString5 As String
Dim strString6 As String
Dim strString7 As String
Dim strString8 As String
Dim strString9 As String
Dim strString10 As String
Dim strString11 As String
Dim strString12 As String

strString1 = "Code de l'événement : "
strString2 = "WSE050: The following exception was encountered: <Erreur><NumeroErreur>"
strString3 = "Aucune zone de partage (contexte service) de trouv pour ce id"
strString4 = "Cette zone de partage n'est pas valide pour cet utilisateur"
strString5 = "<IdInscriptionTraite>0</IdInscriptionTraite>"
strString6 = "LGSIEE.FiltreWSEFiltre.ServeurIntrant.ProcessMessage"
strString7 = "LGSIEE.FiltreWSEFiltre.FiltreServeurExtrant.ProcessMessage.JournaliserTransaction"
strString8 = "WSE050: The following exception was encountered: System.Exception"
strString9 = "System.Exception: .JournaliserTransaction"
strString10 = "Access denied --- Error Code :"
strString11 = "System.Web.HttpException: Client déconnecté."
strString12 = "System.Web.HttpException: Délai d 'attente de la demande"
    
    
    
compteurerreur = 1
Do While compteurerreur <= 12
    
    Select Case compteurerreur
        
        Case 1
                
            IntDecalage = 0
            StrStringaAnalyser = strString1
                                
        Case 2
            
            IntDecalage = 0
            StrStringaAnalyser = strString2
            
        Case 3
            
            IntDecalage = 0
            StrStringaAnalyser = strString3
            
        Case 4
            
            IntDecalage = 0
            StrStringaAnalyser = strString4
            
        Case 5
            
            IntDecalage = 0
            StrStringaAnalyser = strString5
            
        Case 6
            
            IntDecalage = 0
            StrStringaAnalyser = strString6
            
        Case 7
            
            IntDecalage = 0
            StrStringaAnalyser = strString7
            
        Case 8
            
            IntDecalage = 0
            StrStringaAnalyser = strString8
            
        Case 9
            
            IntDecalage = 0
            StrStringaAnalyser = strString9
            
        Case 10
            
            IntDecalage = 0
            StrStringaAnalyser = strString10
            
        Case 11
            
            IntDecalage = 0
            StrStringaAnalyser = strString11
            
        Case 12
            
            IntDecalage = 0
            StrStringaAnalyser = strString10
                
    End Select
    
    If Len(EC_Extraire_Message) > 0 Then
        'On test dans le message de l'événement
        strStringaTester = EC_Extraire_Message
    Else
        'S'il n'y a rien dans le message de l'événement alors on recherche dans le Insertion String
        strStringaTester = EC_Extraire_Message2
    End If
    
    testinstrerreur = InStr(1, strStringaTester, StrStringaAnalyser, vbTextCompare)
    
    If testinstrerreur <> 0 Then
    
        Select Case compteurerreur
        
                Case 12 'System.Web.HttpException: Délai d 'attente de la demande
                    Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = "Délai d 'attente de la demande"
                    Exit Do
                
                Case 11 'System.Web.HttpException: Client déconnecté.
                    Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = "Client déconnecté"
                    Exit Do
        
                Case 10 'Access denied --- Error Code :
                    Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = "Access denied --- Error Code"
                    Exit Do

                Case 9 'System.Exception: .JournaliserTransaction
                    Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = "System.Exception: .JournaliserTransaction"
                    Exit Do
        
                Case 8 'WSE050: The following exception was encountered: System.Exception
                    Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = "WSE050: The following exception was encountered: System.Exception"
                    Exit Do
        
                Case 7 'LGSIEE.FiltreWSEFiltre.FiltreServeurExtrant.ProcessMessage.JournaliserTransaction
                    Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = "LGSIEE.FiltreWSEFiltre.FiltreServeurExtrant.ProcessMessage.JournaliserTransaction"
                    Exit Do
        
                Case 6 'LGSIEE.FiltreWSEFiltre.ServeurIntrant.ProcessMessage
                    Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = "LGSIEE.FiltreWSEFiltre.ServeurIntrant.ProcessMessage"
                    Exit Do
        
                Case 5 '<IdInscriptionTraite>0</IdInscriptionTraite>
                    Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = "IdInscriptionTraite>0</IdInscriptionTraite"
                    Exit Do
        
                Case 4 'Cette zone de partage n'est pas valide pour cet utilisateur--> Il n'y a pas de code d'erreur attaché
                    Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = "Zone de partage invalide"
                    Exit Do
                
                Case 3 'Aucune zone de partage (contexte service) de trouv pour ce id--> Il n'y a pas de code d'erreur attaché
                    Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = strString3
                    Exit Do
                    
                Case 2
                
                    strChaine1 = testinstrerreur + Len(StrStringaAnalyser)
                    strChaine2 = Mid(EC_Extraire_Message, strChaine1, 5)
                    Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = strChaine2
                    Exit Do
                    
                Case Else
                
                    strChaine1 = testinstrerreur + Len(StrStringaAnalyser)
                    strChaine2 = Mid(strStringaTester, strChaine1, 4)
                    Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = strChaine2
                    Exit Do
        End Select
        
    End If
        
    compteurerreur = compteurerreur + 1
    
    If compteurerreur > 12 Then Exit Do
                
Loop

End Sub
 
Re : Simplifier mon codage

Bonsoir,

Proposition:

Code:
Dim strStrings
strStrings = Array("Code de l'événement : ", _
"WSE050: The following exception was encountered: <Erreur><NumeroErreur>", _
"Aucune zone de partage (contexte service) de trouv pour ce id", _
"Cette zone de partage n'est pas valide pour cet utilisateur", _
"<IdInscriptionTraite>0</IdInscriptionTraite>", _
"LGSIEE.FiltreWSEFiltre.ServeurIntrant.ProcessMessage", _
"LGSIEE.FiltreWSEFiltre.FiltreServeurExtrant.ProcessMessage.JournaliserTransaction", _
"WSE050: The following exception was encountered: System.Exception", _
"System.Exception: .JournaliserTransaction", _
"Access denied --- Error Code :", _
"System.Web.HttpException: Client déconnecté.", _
"System.Web.HttpException: Délai d 'attente de la demande")

Ensuite:

Code:
    Select Case compteurerreur
        
        Case 1                
            IntDecalage = 0
            StrStringaAnalyser = strStrings(Compteurerreur-1)
        'etc.

A+
 
Re : Simplifier mon codage

Re,

Excuse moi je me suis trompé sur la deuxième partie qui devrait ressembler à ceci

Code:
    compteurerreur = 1
    Do While compteurerreur <= 12
        IntDecalage = 0
        StrStringaAnalyser = strStrings(compteurerreur - 1)
 
        If Len(EC_Extraire_Message) > 0 Then
            'On test dans le message de l'événement
            strStringaTester = EC_Extraire_Message
        Else
            'S'il n'y a rien dans le message de l'événement alors on recherche dans le Insertion String
            strStringaTester = EC_Extraire_Message2
        End If
        testinstrerreur = InStr(1, strStringaTester, StrStringaAnalyser, vbTextCompare)
        If testinstrerreur <> 0 Then
            Select Case compteurerreur
            Case 12                                   'System.Web.HttpException: Délai d 'attente de la demande
                Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = "Délai d 'attente de la demande"
                Exit Do
             Case 11
              'etc.........;
            End Select
        End If
    Loop

tu peux faire aussi un second tableau avec les messages à afficher et supprimer ainsi le deuxième select. Pour avoir quelque chose du genre:

Code:
 Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9)= SecondTableauDeMessage(compteurerreur - 1)

Peu-être également serait -il plus judicieux de faire une boucle For plutôt que Do...Loop
Ou commencer ton compteur à 0

Mais n'ayant pas tous les éléments en mains, difficile d'en dire plus

A+
 
Dernière modification par un modérateur:
Re : Simplifier mon codage

Bonjour,

Finalement c'est une excellent idée d'utiliser les Arrays.

Code:
Sub ExtraireCode(Extraire_VFeuilExtractData)


strNomSyst1 = "MRQAuthentifie"
strNomSyst2 = "MRQAuthentifie\MRQAuthentifie"
strNomSyst3 = "Page en erreur :"
strNomSyst4 = "RQFournisseur/"
strNomSyst5 = "mrqanonyme/"
strNomSyst6 = "mrqinterne/"

[B]strStrings = Array("Code de l'événement : ", _
"WSE050: The following exception was encountered: <Erreur><NumeroErreur>", _
"Aucune zone de partage (contexte service) de trouv pour ce id", _
"Cette zone de partage n'est pas valide pour cet utilisateur", _
"<IdInscriptionTraite>0</IdInscriptionTraite>", _
"LGSIEE.FiltreWSEFiltre.ServeurIntrant.ProcessMessage", _
"LGSIEE.FiltreWSEFiltre.FiltreServeurExtrant.ProcessMessage.JournaliserTransaction", _
"WSE050: The following exception was encountered: System.Exception", _
"System.Exception: .JournaliserTransaction", _
"Access denied --- Error Code :", _
"System.Web.HttpException: Client déconnecté.", _
"System.Web.HttpException: Délai d'attente de la demande dépassé")

strMessages = Array(" ", _
" ", _
"Aucune zone de partage (contexte service) de trouv pour ce id", _
"Zone de partage invalide", _
"IdInscriptionTraite>0</IdInscriptionTraite", _
"LGSIEE.FiltreWSEFiltre.ServeurIntrant.ProcessMessage", _
"LGSIEE.FiltreWSEFiltre.FiltreServeurExtrant.ProcessMessage.JournaliserTransaction", _
"WSE050: The following exception was encountered: System.Exception", _
"System.Exception: .JournaliserTransaction", _
"Access denied --- Error Code", _
"Client déconnecté", _
"Délai d'attente de la demande dépassé")[/B]
myrow = 1
myrow = ActiveSheet.UsedRange.Rows.Count
Extraire_ligne = 1
For Extraire_ligne = 1 To myrow

    Extraire_Message = Sheets(Extraire_VFeuilExtractData(1)).Cells(Extraire_ligne, VDataCol12(1))
    Extraire_Message2 = Sheets(Extraire_VFeuilExtractData(1)).Cells(Extraire_ligne, VDataCol8(1))
    
    [B]Call ExtraireCodedErreurs(Extraire_VFeuilExtractData, Extraire_Message, Extraire_Message2, Extraire_ligne, strStrings, strMessages)[/B]    Call CreationListeCodesUnifiees(Extraire_VFeuilExtractData, Extraire_ligne)
    Call CreationListeSystemes(Extraire_VFeuilExtractData, strNomSyst1, strNomSyst2, strNomSyst3, strNomSyst4, strNomSyst5, strNomSyst6, Extraire_Message, Extraire_Message2, Extraire_ligne)
    
Next

End Sub
'============================================
'============================================
[B]Sub ExtraireCodedErreurs(EC_VFeuilExtractData, EC_Extraire_Message, [/B]EC_Extraire_Message2, EC_Extraire_ligne, EC_strStrings, EC_strMessages)
                   
Dim strStringaTester As String

For i = 0 To UBound(EC_strStrings)

    If Len(EC_Extraire_Message) > 0 Then
        'On test dans le message de l'événement
        strStringaTester = EC_Extraire_Message
    Else
        'S'il n'y a rien dans le message de l'événement alors on recherche dans le Insertion String
        strStringaTester = EC_Extraire_Message2
    End If
    
    intteststrings = InStr(1, strStringaTester, EC_strStrings(i), vbTextCompare)
    If intteststrings <> 0 Then
    
        strChaine1 = intteststrings + Len(EC_strStrings(i))
        If i = 1 Then
               
            
            strChaine2 = Mid(EC_Extraire_Message, strChaine1, 5)
            Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = strChaine2
            Exit For
            
        End If
        
        If i = 0 Then
                
            strChaine1 = intteststrings + Len(EC_strStrings(i))
            strChaine2 = Mid(strStringaTester, strChaine1, 4)
            Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = strChaine2
            Exit For
            
        End If
        
        Sheets(EC_VFeuilExtractData(1)).Cells(EC_Extraire_ligne, VDataCol9(1)) = EC_strMessages(i)
        Exit For
    
    End If

Next

End Sub

Merci,
 
- 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
2
Affichages
772
D
Réponses
1
Affichages
578
Réponses
9
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…