VBA : Instructions AND, OR, IF-THEN combinées

Bonjour,

Dans le fichier d’essais ci-joint, je tente d’utiliser les instructions AND et OR dans des boucles IF-THEN. Comme vous pouvez le constater, c’est un exercice tout à fait théorique.

J’ai réussi mes deux premières conditions et je cale sur la troisième, mise en commentaire dans le code ci-dessous (deux tentatives distinctes) :

Sub ssss()
Dim i As Byte

For i = 2 To 15
    If Range("C" & i) = "CH" And Range("B" & i) < 21 Or Range("B" & i) > 65 And Range("D" & i) = "H" Or Range("B" & i) > 64 And Range("D" & i) = "F" Then
        Range("E" & i) = 18
    ElseIf Range("C" & i) = "CH" Then
        Range("E" & i) = 28
    'ElseIf Range("C" & i) <> "CH" And Range("D" & i) = "H" And Range("B" & i) < 21 Or Range("C" & i) <> "CH" And Range("D" & i) = "H" And Range("B" & i) > 65 Then
    'ElseIf Range("B" & i) < 21 Or Range("B" & i) > 65 And Range("C" & i) <> "CH" And Range("D" & i) = "H" Then
        'Range("E" & i) = 15
    End If
Next i

End Sub

Pouvez-vous m’aider à résoudre ce problème ?

Question subsidiaire : Y a-t-il une logique ou un truc afin de savoir comment poser ces instructions AND et OR dans l’instruction IF-THEN ?

Cordialement.

30essai-18-12.zip (12.99 Ko)

Bonjour Yvouille,

le AND sera évalué avant le OR, mets des parenthèses si un autre ordre de priorité doit être appliqué

A or B and C est vrai, si A est vrai ou si B et C sont vrais

(A or B) and C est vrai, si A ou B est vrai et si C est vrai

Salut H2so4,

Merci beaucoup pour ta réponse ; ça me permet de bien avancer

J’étais parti dans la (très fausse) idée qu’il ne pouvait/devait pas y avoir de parenthèses dans ce genre de codes, je n’avais donc même pas pensé d’essayer !!

Si la solution intéresse quelqu'un, la voici dans le fichier ci-joint.

Très bonne continuation.

101essai-18-12-bis.zip (10.54 Ko)
Rechercher des sujets similaires à "vba instructions then combinees"