Quelle type de boucle pour tester conditions

Bonjour à tous.

J'ai souvent besoin de tester des batch de fichiers XML.

Un parser permet de relever les erreurs de structures de ces fichiers XML.

Un rapport d'erreurs est généré et je me retrouve parfois avec des milliers de lignes et énormément d'erreurs en doublon.

Mais bon nombre d'erreurs sont "normales" car les fichiers XML testés sont "bruts" et nécessitent des étapes de finalisation ultérieures.

Je souhaite supprimer toutes les lignes qui contiennent un message d'erreur que j'ai identifié afin de n'avoir à la fin que les erreurs qui nécessitent une vraie action/correction de ma part.

J'ai identifié une quinzaine de messages d'erreurs "normales et polluantes à supprimer du rapport" et les ai déclarés dans des constantes typées string.

Ex:

Dim SheetRapportBIRD As Worksheet
Dim nbLine As Long
Dim x As Long
Dim MessageErreur As String
...
Const inwork As String = "Attribute @inwork of element <issno> is always used with value ""00"""
Const comments As String = "Comments are not allowed in XML elements."
Const NotationCGM1 As String = "[NOTATION ERROR]: Notations cgm system ID(s) must be empty."
Const DocTypePMC As String = "[DOCTYPE ERROR] DOCTYPE must be present in the document "
...

nbLine = SheetRappor.UsedRange.Rows.Count
For x = nbLine To 1 Step -1
    MessageErreur = SheetRapportBIRD.Range("B" & x)
    If MessageErreur = inwork Or MessageErreur = comments Or MessageErreur = NotationCGM1 Or MessageErreur = DocTypePMC Then
        SheetRapportBIRD.Range("B" & x).Delete
    End If
Next

Je voulais donc boucler sur toutes les lignes de ma sheet avec du For Next en partant de la dernière ligne step -1 et mettre une condition pour tester si la cellule contenant le message d'erreur correspondait aux messages d'erreurs déclarés dans mes constantes.

Le problème c'est que je ne peux pas utiliser un IF avec beaucoup de conditions du style:

Si contenu de la cellule A3652 = inwork OU cellule A3652= comments OU cellule A3652= NotationCGM1 OU cellule A3652= DocTypePMC OU cellule A3652=...... alors supprimer la ligne 3652.

Je suppose que je ne peux pas utiliser une vingtaine de OU dans ma condition IF ?

Et je ne suis pas sûr que créer autant de boucles for next qu'il y a de constantes déclarées soit hyper efficace.

J'ai regardé du côté de select case mais ça ne me paraît pas plus efficace.

Je ne maîtrise pas trio les boucles while mais j'aurais le même problèmes puisque c'est le nombre de conditions qui me pose problème.

Merci d'avance pour vos lumières.

Bonne journée.

J'ai regardé un peu mais je serai obligé d'énumérer tous les case et je pense donc que ça ne m'avancera pas plus.

Je viens de tester un IF avec 10 conditions (OR) et ça fonctionne bien.

Au pire, je peux voir jusqu'où ça passe en mettant un maximum de "OR" sur le même IF et recréer une ou 2 boucles supplémentaires pour fractionner un peu mes IF...

Sinon tu créé un tableau avec toutes tes erreurs normales dedans et tu boucles sur ton tableau si ton erreur est trouvée tu delete sinon tu laisses

Cordialement

Bon finalement, j'ai mis 10 OR dans ma condition "IF" et ça passe nickel.

Rechercher des sujets similaires à "quelle type boucle tester conditions"