Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Bonjour Filiph, Chris, Soan,
Un autre point à prendre en compte. A chaque fois qu'on va rencontrer un IF, le VBA va l'évaluer dans son ensemble avant de prendre une décision. Et avec beaucoup de conditions cela sera long. Il vaut mieux scindé le IF en plusieurs, cela peut accélèrerer les choses.
VB:
IF A=2 AND B=3 AND C=4 AND D=5 AND E=6 then
préférer
IF A=2 AND B=3 Then
IF C=4 AND D=5 AND E=6 then
Si on sait par exemple que les conditions A=2 AND B=3 sont assez rares, le processus sera beaucoup plus rapide, car il n'aura à évaluer qu'une simple expression pour décider de sortir ou de continuer.
Non, en VBA, il n'y a aucune limite de conditions
pour imbriquer plusieurs If.
On peut aussi utiliser une structure telle que :
VB:
Sub Essai()
Dim car$: car = [A1]
If car = "A" Then
'code à exécuter si caractère "A"
ElseIf car = "B" Then
'code à exécuter si caractère "B"
ElseIf car = "C" Then
'code à exécuter si caractère "C"
ElseIf car = "D" Then
'code à exécuter si caractère "D"
ElseIf car = "E" Then
'code à exécuter si caractère "E"
ElseIf car = "F" Then
'code à exécuter si caractère "F"
Else
'code à exécuter si autre caractère
End If
End Sub
Le même code, avec la structure Select Case mentionnée par @chris :
Code:
Sub Essai()
Select Case [A1]
Case "A"
'code à exécuter si caractère "A"
Case "B"
'code à exécuter si caractère "B"
Case "C"
'code à exécuter si caractère "C"
Case "D"
'code à exécuter si caractère "D"
Case "E"
'code à exécuter si caractère "E"
Case "F"
'code à exécuter si caractère "F"
Case Else
'code à exécuter si autre caractère
End Select
End Sub
Même si le demandeur connaissait probablement déjà ces 2 structures,
ça sera peut-être utile pour d'autres lecteurs de passage sur ce sujet.
Bonjour Filiph, Chris, Soan,
Un autre point à prendre en compte. A chaque fois qu'on va rencontrer un IF, le VBA va l'évaluer dans son ensemble avant de prendre une décision. Et avec beaucoup de conditions cela sera long. Il vaut mieux scindé le IF en plusieurs, cela peut accélèrerer les choses.
VB:
IF A=2 AND B=3 AND C=4 AND D=5 AND E=6 then
préférer
IF A=2 AND B=3 Then
IF C=4 AND D=5 AND E=6 then
Si on sait par exemple que les conditions A=2 AND B=3 sont assez rares, le processus sera beaucoup plus rapide, car il n'aura à évaluer qu'une simple expression pour décider de sortir ou de continuer.
Quand le Turbo Pascal de Borland évaluait un If avec plusieurs conditions, il s'arrêtait
dès la 1ère condition fausse rencontrée : pour ton exemple, arrêt si A<>2 ; je m'suis
souvent demandé pourquoi Microsoft n'avait pas copié Borland sur ce point.
D'ailleurs, plusieurs autres choses aussi étaient plus pratiques avec Turbo Pascal
qu'avec VBA ! par exemple, pouvoir déclarer plusieurs variables d'un même type
sans devoir répéter le type pour chaque variable ; utilisation de caractères avec
le signe # ; déclaration de tableaux de constantes, etc...
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.