Accueil | Ce site | CV | Excel | Livre dor | Macros XL4 | Modèles | VBA
On désigne ainsi toute succession de caractères alphanumériques (lettres, chiffres, éléments de ponctuation, symboles mathématiques ou divers, ).
Un mot peut également représenter un nom défini dans une feuille Excel, une fonction, une constante, une variable ou une procédure dans VBA, . Les mots de ce type désignent tous autre chose que ce que la simple succession de lettres qui les compose le laisserait penser.
Cest le même concept qui est classiquement utilisé en maths : dans lexpression y = ax2 + bx + c, les caractères a, b et c symbolisent des constantes, tandis que x et y sont des variables. Aucun ne représente une lettre de lalphabet. Ce sont des nombres qui sont additionnés, et non des morceaux de texte.
Il faut absolument éviter toute ambiguïté entre les chaînes de caractères et les mots correspondant à un nom, une variable, Pour ce faire, on utilise des guillemets droits ("Az") et non des guillemets typographiques (Az ou «Az») pour différencier les chaînes de caractères des autres mots.
La figure 1 illustre la différence entre entre les 2 premières sortes de guillemets, qui à première vue se ressemblent.
![]()
Fig. 1 - Guillemets droits, et guillemets typographiques.
Ainsi la ligne de code VBA ci-dessous :
Msgbox "Bonjour"
affiche une fenêtre avec le texte Bonjour (figure 2), car largument de MsgBox est entre guillemets,
tandis que celle-ci :
Msgbox TexteMessage
ne fonctionne que si TexteMessage contient une chaîne de caractères. TexteMessage nest pas entre guillemets ; il doit donc sagir dune constante, dune variable ou du résultat renvoyé par une fonction.

Fig. 2 - Exemple de UserForm contenant un TextBox
(une zone de saisie) où une date est attendue
En voici un exemple dutilisation, correspondant au contrôle de saisie du TextBox (zone de saisie dun objet UserForm) de la figure 2. Le code indiqué correspond à une version simplifiée de la fonction Controle :
Beaucoup de programmes utilisent au moins une zone de dialogue (objet UserForm de VBA) permettant à lutilisateur de fournir linformation nécessaire à la poursuite du traitement. La fonction Controle permet de vérifier que lutilisateur a bien entré linformation attendue.
Private Sub ControleInfos() Resultat = Controle(TDate = "", "la date.", TDate) End Sub Function Controle(ByVal Expression As Boolean, Optional ComplTexte, Optional CellActive, Optional TexteMessage) ' Test si anomalie If Expression Then If IsMissing(TexteMessage) Then TexteMessage = "Vous n'avez pas indiqué " & ComplTexte End If MsgBox TexteMessage, 48, "Information manquante." ' MAJ Curseur If Not IsMissing(CellActive) Then CellActive.SetFocus End If End If ' Résultat du contrôle If Expression Then Controle = False Else Controle = True End Function
Ici, la ligne
Msgbox TexteMessage, 48, "Information manquante"
provoque laffichage du message reproduit en figure 3 :

Figure 3 - Message affiché par la routine ControleInfos si aucune date na été indiquée.
La fonction Controle accepte dans cette version simplifiée 4 arguments, les 3 derniers facultatifs. Ici, les trois premiers (Expression, ComplTexte et CellActive) sont renseignés, et le quatrième TexteMessage manque.
If IsMissing(TexteMessage) Then TexteMessage = "Vous n'avez pas indiqué " & ComplTexte End If
Lexpression IsMissing(TexteMessage) testée dans lextrait de code ci-dessus est vraie, ce qui conduit au message de la figure 3, qui résulte de la concaténation de la chaine de caractères "Vous n'avez pas indiqué " (qui se termine par une espace*) et de largument ComplTexte.
En fait pour être complet, un second controle est nécessaire : il faut également sassurer que la date indiquée est valide. Voici la version complète de la routine ControleInfos associée au dialogue de la figure 2.
Private Sub ControleInfos() Resultat = Controle(TDate = "", "la date.", TDate) If Resultat Then Resultat = Controle(Not (IsDate(TDate)), , TDate, "Il faut entrer une date valide, au format ""j/m/aa"".") End Sub
En cas de date invalide, le message de la figure 4 apparaît alors :

Figure 4 - Message affiché si la date indiquée nest pas valide.
Contrairement au cas précédent, le quatrième argument, TexteMessage est fourni à la fonction Controle, tandis que le second, ComplTexte manque. Lexpression IsMissing(TexteMessage) est cette fois fausse, et il ny a pas de concaténation :
Le message affiché, "Il faut entrer une date valide, au format "j/m/aa." correspond simplement à largument TexteMessage, à un détail près :
Les guillemets étant un identifiant permettant de reconnaître les chaines de caractères, il faut respecter la convention suivante : pour afficher dans un message un guillemet, il faut le doubler. Cest pourquoi TexteMessage se termine ainsi :
format ""j/m/aa"".", seul moyen dafficher les guillemets de part et d'autre du format de date.
* Le mot espace est féminin en typographie.