Rappel : Ce cours est enseigné dans la
spécialité PISE du Master MECI (Université Paris 7)
par Christophe Darmangeat

Partie 3
Quelques Fonctions
1. Les Grands Classiques
On va bien entendu retrouver dans VB les fonctions standard présentes dans quasiment tous les langages. Je passe sur les fonctions mathématiques (trigonométriques ou autres…) pour inventorier rapidement les fonctions plus "algorithmiques":
1.1 Traitement des chaînes :
  • Mid (Nomdechaîne, nombre1, nombre2) : renvoie une chaîne, extraite de Nomdechaîne, commençant au caractère numéro nombre1 et faisant nombre2 caractères de long
  • Len (Nomdechaîne) : renvoie le nombre de caractères de Nomdechaîne.
Et bien d'autres ! Quelques nouveautés à ce propos :
  • LTrim (Nomdechaîne) : renvoie la chaîne Nomdechaine, débarrassée de tous les espaces se trouvant à gauche.
  • Rtrim (Nomdechaîne) : renvoie la chaîne Nomdechaîne, débarrassée de tous les espaces se trouvant à droite.
  • AllTrim (Nomdechaîne) : renvoie la chaîne Nomdechaîne, débarrassée de tous les espaces se trouvant à droite et à gauche.
Ces trois fonctions sont particulièrement utiles dans le traitement des fichiers texte (voir partie 8).
1.2 Fonctions numériques :
  • Int (nombre)  : renvoie la partie entière de ce nombre
  • Rnd ()  : renvoie un nombre pseudo-aléatoire compris entre 0 (inclus) et 1 (exclu). NB : pour que Rnd () ne renvoie pas le même nombre, ou la même série de nombres, à chaque exécution, il faut systématiquement le faire précéder de l’instruction Randomize (toute seule, sur une ligne)
  • Val (Chaîne) : renvoie un nombre si Chaîne est composée de chiffres
  • Str (Nombre)  : renvoie Nombre sous forme de chiffres (c'est-à-dire de caractères)


2. Une drôle de bÊte : la fonction MsgBox
Comment envoyer facilement des informations à l’utilisateur ? La réponse à cette question qui vous taraude se trouve dans les lignes qui suivent.
Bien sûr, si vous souhaitez envoyer des messages riches, compliqués et/ou présentés d’une manière originale, la seule solution reste de programmer des Form correspondant à vos souhaits et de passer les instructions VB nécessaires pour qu’elles contiennent les informations voulues.
Mais si votre seule ambition, à un moment donné d’une application, est d’envoyer un message à l’utilisateur qui se limite à un texte, ou à un chiffre, ou même à une combinaison des deux, avec comme seuls boutons possibles un bouton OK, Annuler, etc., alors VB met à votre disposition la fonction MsgBox.
Vous pourrez ainsi à moindre frais envoyer à l’écran des mini-boîtes de dialogue d’un type bien connu par tous les utilisateurs de Windows, du style :
L’originalité de la chose, qui peut quelque peu dérouter au début, est donc que l’on passe par une fonction pour exécuter quelque chose qui ressemble à une instruction Ecrire en algorithmique. Mais, en réalité, le paradoxe n’en est pas un. Car une petite boîte de dialogue comme celle présentée ci-dessus, si elle envoie bel et bien un message à l’utilisateur, récupère également une réponse de cet utilisateur (sur quel bouton a-t-il appuyé). Dès lors, on se dit que quelque chose qui comporte plusieurs paramètres en entrée et une valeur en sortie, a toutes les chances d’être considéré comme une fonction par un langage… CQFD !
La syntaxe de la fonction MsgBox est :
Variable = MsgBox (texte1, integer, texte2, ... )
La fonction MsgBox comporte donc trois arguments essentiels, qui sont respectivement :
  • le texte du message à envoyer
  • le style des boutons et de l’icône éventuelle à faire figurer sur le message
  • le texte de la barre de titre
En ce qui concerne les deux arguments de type texte, aucun problème. En revanche, le deuxième argument, de type Integer, mérite qu’on s’y arrête. Cet Entier (Integer) va donc avoir pour rôle de spécifier tout à la fois le type d’icône employée dans la boîte de message, et l’échantillon des boutons proposés à l’utilisateur. Toutefois, cet argument peut être spécifié de deux manières différentes qu’il convient de connaître :
  • Chaque possibilité d’icône ou de boutons est associée à un nombre entier (voir l’Aide du logiciel). Pour obtenir la combinaison voulue, il suffit d’additionner les nombres correspondants, et c’est cette somme qui sera le deuxième argument.
  • l'autre façon de spécifier cet argument consiste à employer des Constantes VB. Ces Constantes VB sont des mots réservés du langage, qui sont traduits par le compilateur en nombre entiers. Du point de vue du résultat, cette solution est donc strictement équivalente à la précédente, où on entrait directement des nombres. En revanche, certains programmeurs la préféreront en raison de la plus grande lisibilité qu’elle introduit dans le code. A noter que Ces Constantes VB ne s’inventent pas ! Elles figurent dans l’Aide du logiciel, et c’est là qu’il faut les chercher (elles apparaissent toutefois sous forme de liste déroulante lorsqu'on entre le code dans l'éditeur. Avec un tout petit peu d'habitude, le choix en est grandement facilité…
A titre d’illustration, la boîte de dialogue située au-dessus pourrait être indifféremment programmée par :
Texte = "Enregistrer les modifications (...) ?"
Titre = "Microsoft FrontPage"
Toto = MsgBox ( Texte, 51, Titre )
Ou par :
Texte = "Enregistrer les modifications (...) ?"
Titre = "Microsoft FrontPage"
Toto = MsgBox (Texte, vbExclamation + vbYesNoCancel, Titre)
Tout cela n’épuise pas la question de la valeur renvoyée par la fonction MsgBox, valeur qui va donc se retrouver dans la variable Toto. On a vu que cette valeur correspondait au bouton sur lequel l'utilisateur aura appuyé pour clore la boîte de message.
On pourra donc tester la valeur de la variable Toto pour déterminer quel était ce bouton (s'il y en avait plus d'un, évidemment…).
Là aussi, ce test peut-être écrit soit sous la forme d'une valeur entière, soit sous celle d'une constante VB, les renseignements à ce sujet se trouvant dans l'Aide. En l'occurrence, on pourrait avoir à la suite du code précédent des lignes du genre :
If Toto = 6 Then
' enregistrement
Elseif Toto = 7 Then
' pas d'enregistrement
Else
' annulation
EndIf
Ou bien :
If Toto = VbYes Then
' enregistrement
Elseif Toto = VbNo Then
' pas d'enregistrement
Else
' annulation
EndIf
En résumé, MsgBox est une fonction qui vous donne accès à un type de Form préprogrammé, aux fonctionnalités limitées, mais à la programmation très rapide.
La seule exception à tout ce qui précède concerne l'utilisation de MsgBox avec toutes les options par défaut : pas d'icônes, juste un bouton OK, et juste un message (pas de titre). La syntaxe peut être alors considérablement simplifiée pour donner :
MsgBox Truc
…Qui affichera donc la valeur de la variable Truc dans une boîte. Si cette utilisation de MsgBox produit un résultat nettement trop grunge pour figurer dans un produit fini, elle peut parfois s'avérer pratique pour effectuer certains déboguages.

Nom de l'exercice
Exécutable
Sources
Suspense Insoutenable
Additionneuse
Choix Cornélien 1
Choix Cornélien 2