Dans cette partie nous allons voir comment fonctionne les conditions dans excel vba . tout cela nous allons le voir avec un petit convertisseur de taille en code et un login tout à fait basic
1. Une condition c’est quoi ?
une condition dans excel VBAc’est comment sont nom l’indique exécuter un code quand une certaine condition est rempli. Par exemple nous allons dire que si la cellule F3 > “” alors nous allons afficher un message pour dire qu’il y a un donnée dans la cellule.
et donc en language VBA ça donne le code suivant.
IF Range(“F3”) > “” THEN
msgbox(“ il y a bien des données dans la cellule”)
END IF
ici nous commençons à poser la condition avec le code IF qui veut dire si. La nous posons la question si la cellule f3 > “” alors qui est décrit part THEN, on execute le code et on indique que le contrôle de condition est terminé avec END IF.
à bien retenir une condition commencer toujours par un IF qui est suivi par un THEN en se termine avec un END IF sauf et je dis bien sauf si vous indiquez tout sur une ligne.
if range(“f3”)> “” then msgbox(“il y a bien des données dans la cellule”)
la il ne faut pas terminer avec un END IF.
mais je vous conseil de travailler avec une structure sur plusieurs ligne afin de garder le code plus visible.
Ce n’est pas tout nous pouvons aussi exécuter un autre code si la condition n’est pas rempli tout comme la fonction si d’Excel grace au code ELSE.
IF Range(“F3”) > “” then
msgbox(“ il n’y a bien des données dans la cellule”)
else
msgbox(“il y a pas de donnée dans la cellule”)
end if
ici nous allons afficher soit l’un sois l’autre.
2. Imbriquer des conditions
désormais nous allons voir que nous pouvons ajouter d’autre condition if dans une condition déjà existante. et vous allez voir que c’est monnaie courante dans le monde des codages.
par exemple nous allons voir si il ya une donnée dans la celle F3 nous allons contrôler s’il s’agit bien d’un chiffre et non une lettre.
donc nous allons imbriquer le code suivant
Private Sub Convert_Click()
If Range(« f3 ») > « » Then
MsgBox (« il y a bien des données dans la cellule »)
If Not IsNumeric(Range(« f3 »)) Then
MsgBox (« le format n’est pas valide »)
Else
MsgBox (« le format est valide »)
End If
Else
MsgBox (« il n’y a pas de donnée dans la cellule »)
End If
End Sub
donc désormais nous contrôlons la chose suivante.
si il y a des données dans F3 alors nous affichons le message il ya bien des données dans la cellule. puis nous allons contrôler si la valeur n’est pas une valeur numérique. alors nous affichons le message pour dire que le format n’et pas correcte.
par contre si c’est un format numérique alors on afficher que le format est valide.
3. multiple conditions
Tout comme la fonction SI nous pouvons crée de multiple condition afin de vérifier plusieurs condition et donc afficher le résultat selon la condition.
dans notre exemple nous allons crée une variable qui va contenir les donnée du la cellule F3 et puis nous allons voir dans quel critère il tombe et afficher le résultat voulu grace au ELSEIF
Private Sub Convert_Click()
If Range(« f3 ») > « » Then
MsgBox (« il y a bien des données dans la cellule »)
If Not IsNumeric(Range(« f3 »)) Then
MsgBox (« le format n’est pas valide »)
Else
MsgBox (« le format est valide »)
Dim taille As Integer
taille = Range(« f3 »)
If taille < 51 Then
Range(« f5 ») = « S »
ElseIf taille < 101 Then
Range(« f5 ») = « M »
ElseIf taille < 150 Then
Range(« f5 ») = « L »
Else
Range(« f5 ») = « XL »
End If
End If
Else
MsgBox (« il n’y a pas de donnée dans la cellule »)
End If
End Sub
Regarder bien la structure du code, chaque if et end if se trouve à la meme hauteur pour la meme condition.
4. Sélectionner un cas → select case.
une autre façon de travailler avec de multiple condition est de crée des cas ou case en anglais.
la nous allons déclaré le cas
Select Case taille
Case Is < 51
Range(« f5 ») = « S »
Case Is < 101
Range(« f5 ») = « M »
Case Is < 150
Range(« f5 ») = « L »
Case Else
Range(« f5 ») = « XL »
End Select
ici nous pouvons voir que c’est la même chose sauf que c’est plus lisible et plus court. personnellement je préfère travailler avec les case que les ELSEIF.
5. Les critères de condition ET, OU
nous pouvons aussi faire de multiple contrôle dans une condition en posant les critères AND, OR et nous allons voir cela dans avec un simple petit formulaire de connexion.
AND :
le premier critères que nous allons voir c’est la critère Et et ici nous allons tester si toutes les condition sont repli si ce n’est pas le cas alors le code ne s’affiche pas.
Nous allons tester cela avec une connection d’un administrateur.
IF User = “daniel” AND pass = “de rien” then
msgbox(“code valide”)
else
msgbox(“code invalide”)
end if
ici nous allons contrôler si user à la valeur admin et que la pass à la valeur de rien. si c’est le cas nous affichant le message suivant bonjour admin. si c’est pas le cas alors nous affichons accès pas permis.
OR :
la seconde critère que nous allons voir c’est le OR et avec le OR nous allons contrôler si une des conditions est rempli alors nous allons executer un code.
nous allons reprendre le même exemple que la conditions AND et nous allons le remplacer par OR qui veut dire ou.
ici nous allons contrôler si une des condition est rempli alors nous allons afficher le message “code invalide”
IF User = “daniel” OR pass = “de rien” then
msgbox(“code valide”)
else
msgbox(“code invalide”)
end if
nous pouvons aussi combiner ces deux critére c’est à dire que nosu pouvons dire que la condition 1 doit être éga à daniel et que la condition deux doit être de rien ou 123
Ce qui nous donne le code suivant.
Bonsoir Daniel,
Merci pour ce tuto,
Mais je n’arrive pas exécuter la condition VBA suivante: Vérifier que l’utilisateur a saisi au moins un numéro de téléphone: portable ou fixe avec un message lui invitant à renseigner au moins champs et ensuite vérifier si les données saisies sont numérique et le nombre de caractères supérieur est ou égal à 10. Pour valider les données, les 2 champs doivent être renseignés.
Or Je veux au moins un champ soit renseigné
Dans cette attente
Cordialement
Ci-après le code
If Trim(.Txt_Fixe_Membre.Value) = « » And Trim(.Txt_Portable_Membre.Value) = « » Then
MsgBox « Veuillez saisir au moins un numéro de téléphone. », vbOKOnly + vbInformation, « Téléphone »
.Txt_Fixe_Membre.BackColor = vbRed
.Txt_Portable_Membre.BackColor = vbRed
.Txt_Fixe_Membre.SetFocus
Else
If Len(.Txt_Fixe_Membre.Value) < 10 And Not IsNumeric(.Txt_Fixe_Membre.Value) Then
MsgBox "Format du numéro de téléphone non valide.", vbOKOnly + vbInformation, "Téléphone Fixe"
ElseIf Len(.Txt_Portable_Membre.Value) < 10 And Not IsNumeric(.Txt_Portable_Membre.Value) Then
MsgBox "Format du numéro de téléphone non valide.", vbOKOnly + vbInformation, "Téléphone Portbale"
Exit
End If
End If