Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonction SI, condition "et" et "ou", dans macro

4 réponses
Avatar
fifigim
Bonjour,

Je voudrai réaliser une macro (au passage, l'affichage d'une image) en
fonction de plusieurs valeurs de cellules.

Exemple:

If Range("A1").Value = 1 ???et/ou??? Range("A2").Value = 2 then l'image 152
s'affiche, etc...

Si possible aussi, comment imbriquer des "ou" dans des "et" ?

Aussi, ou placer les "end if", sachant que si le premier if n'est pas "ok",
un autre suit derrière, etc... (il y en a plus de 200 comme ça, chaque image
étant unique à une valeur...)

Merci !

4 réponses

Avatar
docm
Bonjouir.

Quelques exemples de conditions avec Or, And, Xor, ElseIf, Else, Case

Sub tt()
a = 1
b = 2
c = 3

If a = 1 Or b = 1 Then
Stop
End If

If (a = 1 And b = 1) Or (c = 3) Then
Stop
End If

If (a = 1 Or b = 1) And (c = 3) Then
Stop
End If

If (a = 1 Xor b = 2) And (c = 3) Then
Stop
End If


If a = 1 Then
Stop
ElseIf a = 2 Then
Stop
ElseIf a = 3 Then
Stop
ElseIf a < 10 Then
Stop
Else
Stop
End If

a = 2

Select Case a
Case 1 'ou Case Is = 1
Stop
Case 2
Stop
Case 3
Stop
Case Is < 10
Stop
Case Else
Stop
End Select

End Sub

docm

"fifigim" a écrit dans le message news:

Bonjour,

Je voudrai réaliser une macro (au passage, l'affichage d'une image) en
fonction de plusieurs valeurs de cellules.

Exemple:

If Range("A1").Value = 1 ???et/ou??? Range("A2").Value = 2 then l'image
152

s'affiche, etc...

Si possible aussi, comment imbriquer des "ou" dans des "et" ?

Aussi, ou placer les "end if", sachant que si le premier if n'est pas
"ok",

un autre suit derrière, etc... (il y en a plus de 200 comme ça, chaque
image

étant unique à une valeur...)

Merci !



Avatar
Daniel
Bonjour.
Voila des exemples :
If Range("A1") = 1 Or (Range("A1") = 2 And Range("A2") = 4) Then
MsgBox "condition remplie"
End If
ou
If Range("A1") = 1 Then
MsgBox "condition remplie"
ElseIf Range("A3") <> 1 Then
If Range("A1") = 2 Then
If Range("A2") = 4 Then
MsgBox "condition remplie"
End If
End If
End If
Sachant que les conditions sont arbitraires.
A ton service.
Daniel
"fifigim" a écrit dans le message de
news:
Bonjour,

Je voudrai réaliser une macro (au passage, l'affichage d'une image) en
fonction de plusieurs valeurs de cellules.

Exemple:

If Range("A1").Value = 1 ???et/ou??? Range("A2").Value = 2 then l'image
152
s'affiche, etc...

Si possible aussi, comment imbriquer des "ou" dans des "et" ?

Aussi, ou placer les "end if", sachant que si le premier if n'est pas
"ok",
un autre suit derrière, etc... (il y en a plus de 200 comme ça, chaque
image
étant unique à une valeur...)

Merci !



Avatar
papou
Bonjour
Dans ton cas, si tu as plusieurs valeurs à tester, il serait peut-être plus
judicieux d'utiliser SELECT CASE.
Voici un aperçu de ce que dit l'aide dans VBA :
Select Case, instruction





Exécute un des blocs d'instructions indiqués, selon la valeur d'une
expression.



Syntaxe



Select Case testexpression

[Case expressionlist-n

[statements-n]] ...

[Case Else

[elsestatements]]



End Select



La syntaxe de l'instruction Select Case comprend les éléments suivants :



Élément Description

testexpression Toute expression numérique ou expression de chaîne.

expressionlist-n Si une instruction Case apparaît. Liste délimitée dont les
éléments peuvent prendre l'une des formes suivantes : expression, expression
To expression, Is comparisonoperator expression. Le mot clé To indique une
plage de valeurs. Si vous utilisez To, la valeur la plus petite doit figurer
avant To. Utilisez le mot clé Is avec les opérateurs de comparaison (sauf Is
et Like) pour indiquer une plage de valeurs. S'il n'est pas indiqué, le mot
clé Is est inséré automatiquement.

statements-n Facultatif. Une ou plusieurs instructions exécutées si
testexpression correspond à l'un des éléments de expressionlist-n.

elsestatements Facultatif. Une ou plusieurs instructions exécutées si
testexpression ne correspond à aucun élément de la clause Case.







Remarques



Si testexpression correspond à un élément de la liste expressionlist associé
à une clause Case, le bloc d'instructions qui suit cette clause est exécuté
jusqu'à la clause Case suivante ou jusqu'à End Select, dans le cas de la
dernière clause. Le contrôle passe ensuite à l'instruction qui suit End
Select. Si expressiontest correspond à une expression de la liste
expressionlist dans plusieurs clauses Case, seules les instructions qui
suivent la première correspondance sont exécutées.



La clause Case Else permet d'indiquer que elsestatements doit être exécutée
si testexpression ne correspond à aucune autre clause Case. Bien que cela ne
soit pas indispensable, la présence d'une instruction Case Else dans votre
bloc Select Case peut être utile lorsque testexpression prend des valeurs
inattendues. S'il n'y a pas d'instruction Case Else et si aucune des
expressions des clauses Case ne correspond à testexpression, l'exécution du
programme se poursuit à partir de l'instruction qui suit End Select.



Vous pouvez utiliser plusieurs expressions ou plages dans chaque clause
Case. En voici un exemple :



Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber



Note L'opérateur de comparaison Is ne joue pas le même rôle que le mot clé
Is utilisé dans l'instruction Select Case.



Vous pouvez aussi indiquer des plages et des expressions multiples pour des
chaînes de caractères. Dans l'exemple suivant, Case correspond aux chaînes
de caractères qui sont absolument identiques à tout, aux chaînes comprises
entre noix et soupe dans l'ordre alphabétique, ainsi qu'à la valeur en cours
de TestItem :



Case "tout", "noix" To "soupe", TestItem



Les instructions Select Case peuvent être imbriquées. À chaque instruction
Select Case doit correspondre une instructions End Select



Cordialement
Pascal

"fifigim" a écrit dans le message de
news:
Bonjour,

Je voudrai réaliser une macro (au passage, l'affichage d'une image) en
fonction de plusieurs valeurs de cellules.

Exemple:

If Range("A1").Value = 1 ???et/ou??? Range("A2").Value = 2 then l'image
152
s'affiche, etc...

Si possible aussi, comment imbriquer des "ou" dans des "et" ?

Aussi, ou placer les "end if", sachant que si le premier if n'est pas
"ok",
un autre suit derrière, etc... (il y en a plus de 200 comme ça, chaque
image
étant unique à une valeur...)

Merci !



Avatar
Alexsolex®
Pour les opérateur et ou je pense pouvoir t'aider :

If Range("A1").Value = 1 AND Range("A2").Value = 2 then

if (a OR b) AND (c OR d) then ' ceci est une imbrication

Je pense être dans le bon mais des fois je me mélange avec d'autres
langages...

"fifigim" a écrit dans le message de
news:
Bonjour,

Je voudrai réaliser une macro (au passage, l'affichage d'une image) en
fonction de plusieurs valeurs de cellules.

Exemple:

If Range("A1").Value = 1 ???et/ou??? Range("A2").Value = 2 then l'image
152

s'affiche, etc...

Si possible aussi, comment imbriquer des "ou" dans des "et" ?

Aussi, ou placer les "end if", sachant que si le premier if n'est pas
"ok",

un autre suit derrière, etc... (il y en a plus de 200 comme ça, chaque
image

étant unique à une valeur...)

Merci !