Dans bien des situations, un programmeur doit afficher un texte indiquant un nombre d'éléments.
Supposons qu'on désire afficher un nombre de fautes dans un exercice. Première idée, très répandue :
Code : Tout sélectionner
Dim n As Long
n = 3 ' par exemple
MsgBox("Nombre de fautes dans l'exercice : " & n)
Essayons d'être un peu plus humain. Deuxième idée courante:
Code : Tout sélectionner
MsgBox("Il y a " & n & " fautes dans l'exercice")
Raffinons un peu :
Code : Tout sélectionner
MsgBox("Il y a " & n & " faute(s) dans l'exercice")
La petite fonction Zero1Plus résoud ce problème irritant.
Elle comporte 4 arguments et renvoie une chaîne de caractères adaptée au nombre.
Liste des arguments:
- nbr est un nombre entier positif ou nul
- texte0 est le message correspondant à la valeur 0
- texte1 est le message correspondant à la valeur 1
- texte2 est le message pour une valeur supérieure ou égale à 2. Dans ce texte, le symbole %% désigne l'endroit où on veut insérer le nombre.
Code : Tout sélectionner
Sub Main
Dim s As String, n As Long
n = 3 ' essayez d'autres valeur
s = Zero1Plus(n, "Il n'y a aucun cheval dans le pré", _
"Il y a un cheval dans le pré", _
"Il y a %% chevaux dans le pré")
MsgBox(s)
End Sub
Function Zero1Plus(nbr As Long, texte0 As String, texte1 As String, texte2 As String) As String
if nbr = 0 then
Zero1Plus = texte0
elseif nbr = 1 then
Zero1Plus = texte1
elseif nbr >= 2 then
Zero1Plus = join(split(texte2, "%%", 2), nbr)
else
Zero1Plus = "Erreur ! Le nombre est négatif : " & nbr
end if
End Function