Toute l'actualité de [self-access.com] en direct sur votre ordinateur !  Vous êtes ici : Accueil » Visual Basic » Initiation à VB » L'art de la concaténation » Concaténation : principes de baseConnexion
 


Manipuler les chaînes de caractères

Avant toute chose, un petit rappel sur le maniement des chaînes de caractères (donc les variables de type String). A la base, une chaîne se déclare et s'initialise de cette manière :

Dim s As String
s = "lundi"

Vous pouvez placer n'importe quel caractère (y compris des symboles comme @, #, %...) entre les guillemets. Le seul caractère non autorisé est... le guillemet lui-même, puisqu'il sert de délimiteur. Donc ceci ne marche pas :

Dim s As String
s = "Je m'appelle "Hervé" et j'habite en France"

Le second guillemet marque la fin de la chaîne. Et VB ne sait plus ce qui lui arrive à partir de Hervé" et j'habite en... 

Guillemets dans une chaîne

Il existe quand même une astuce pour placer des guillemets dans une chaîne : il faut penser à doubler ces guillemets. Ce qui donne :

Dim s As String
s = "Je m'appelle ""Hervé"" et j'habite en France"

Les guillemets doubles sont eux-mêmes compris entre les guillemets simples qui délimitent la chaîne. A l'écran ou sur le papier, un seul guillemet sera pourtant affiché.

La bonne nouvelle, c'est qu'on peut donc placer des guillemets dans une chaîne de caractères. La mauvaise nouvelle, c'est que le doublement des guillemets alourdit l'écriture et la lecture, donc le risque de bugs. Que le  programmeur VB qui ne s'est jamais fait piéger par un guillemet me jette le premier clavier Smiley

Notamment, si les guillemets "intérieurs" se trouvent en fin de chaîne, vous obtenez ceci (vous avouerez que la lecture se complique) :

Dim s As String
s = "Je m'appelle ""Hervé"""

Qu'est-ce qu'une concaténation ?

A la base, "concaténer" est le terme informatique pour "coller". En gros, concaténer les valeurs "lundi" et "mardi", c'est tout simplement les coller pour obtenir "lundimardi".

En VB et dans les différentes formules d'Access, l'opérateur de concaténation est le symbole "&".

Information
En fait, le symbole "+" permet aussi de concaténer deux valeurs, à condition que celles-ci soient de type String exclusivement. On peut effectivement considérer qu'il s'agit d'une forme d'addition entre deux chaînes.

Vous verrez plus loin que l'opérateur "&" est plus souple, c'est sans doute celui-ci que vous garderez !

Concrètement, vous pouvez par exemple écrire ceci (comparez les lignes 15 et 35) :

  1. ' ---
  2. ' CONCATENATION : METHODE 1
  3. ' ---
  4. Sub Concatenation1()
  5.   ' Déclaration des variables
  6.   Dim s1 As String
  7.   Dim s2 As String
  8.   Dim s3 As String
  9.  
  10.   ' Initialisation des variables
  11.   s1 = "lundi"
  12.   s2 = "mardi"
  13.  
  14.   ' On concatène s1 et s2
  15.   s3 = s1 & s2
  16.  
  17.   ' On affiche le résultat
  18.   MsgBox s3
  19. End Sub
  20.  
  21. ' ---
  22. ' CONCATENATION : METHODE 2
  23. ' ---
  24. Sub Concatenation2()
  25.   ' Déclaration des variables
  26.   Dim s1 As String
  27.   Dim s2 As String
  28.   Dim s3 As String
  29.  
  30.   ' Initialisation des variables
  31.   s1 = "lundi"
  32.   s2 = "mardi"
  33.  
  34.   ' Une autre forme de concaténation
  35.   s3 = s1 + s2
  36.  
  37.   ' On affiche le résultat
  38.   MsgBox s3
  39. End Sub

Et vous obtenez ce résultat :

Bien sûr, ce n'est pas très joli ! Pour ajouter un espace entre les 2 mots, vous pouvez :

  • ajouter un espace en fin de chaîne s1, en écrivant :
    s1 = "lundi "
  • ajouter un espace en début de chaîne s2, en écrivant :
    s2 = " mardi"
  • concaténer s1, puis un espace, puis s2, en écrivant :
    s3 = s1 & " " & s2
    Cette solution est plus pratique, parce qu'elle demande pas de modifier s1 et s2.

Attention
Pour concaténer l'espace, utilisez bien une séquence guillemet+espace+guillemet. Si vous écrivez "" (guillemet+guillemet) — comme on le fait souvent dans Excel — vous collez s1, puis une chaîne vide (donc rien !), puis s2. Et vous obtenez à nouveau "lundimardi".

pour Info
L'opérateur "&" peut s'utiliser aussi dans Excel (formules ou VBA). Il peut remplacer la fonction Excel CONCATENER(), qui est bien plus longue à écrire !

Concaténation de types différents

L'opérateur "&" permet de concaténer des variables de types différents. Vous pouvez sans problème coller une chaîne, une valeur numérique, une date, etc.

Plus précisément : chaque valeur est transformée en chaîne avant d'être concaténée. Et le résultat final est obligatoirement une chaîne de caractères.

Exemple

  1. ' ---
  2. ' CONCATENATION DE TYPES DIFFERENTS
  3. ' ---
  4. Sub Concatenation3()
  5.   ' Déclaration des variables
  6.   Dim s1 As String
  7.   Dim s2 As String
  8.   Dim x As Integer
  9.   Dim d As Date
  10.  
  11.   ' Initialisation des variables
  12.   s1 = "lundi"
  13.   x = 102
  14.   d = #12/25/2017#
  15.  
  16.   ' Concaténation
  17.   s2 = s1 & x & d
  18.   MsgBox s2
  19.  
  20.   ' Variante
  21.   s2 = s1 & " " & x & " " & d
  22.   MsgBox s2
  23. End Sub

Résultat

Vous noterez une particularité de VB : la date a été définie en anglais, mais elle s'affiche pourtant au format français.

Attention
Le même programme ne marche plus si vous remplacez les "&" remplacés par des "+". Vous obtenez une erreur de type incompatible. L'opérateur "+" ne peut s'appliquer que si les variables sont de même type. L'opérateur "&" est donc plus souple.

Concaténation et type Variant

L'opérateur de concaténation s'applique aussi aux types Variant. Le programme qui suit fonctionne donc, même si la variable v a pour valeur Null :

  1. ' ---
  2. ' CONCATENATION DE VARIANTS
  3. ' ---
  4. Sub Concatenation4()
  5.   ' Déclaration des variables
  6.   Dim s1 As String
  7.   Dim s2 As String
  8.   Dim v As Variant
  9.  
  10.   ' Initialisation des variables
  11.   s1 = "lundi"
  12.   v = Null
  13.  
  14.   ' Concaténation
  15.   s2 = s1 & v
  16.   MsgBox s2
  17. End Sub

Concaténation et retour à la ligne

Une chaîne de caractères peut contenir un retour à la ligne. Généralement, l'intérêt de la chose se manifeste dans une boîte de message (MsgBox) ou dans un champ calculé de formulaire ou d'état. Souvent pour des raisons graphiques.

Le retour à la ligne est une séquence de 2 caractères : le caractère ASCII numéro 13 (retour chariot) et le caractère numéro 10 (avance ligne). Il est codé Chr(13) & Chr(10), ou encore vbCrLf.

Exemple

  1. ' ---
  2. ' RETOUR A LA LIGNE
  3. ' ---
  4. Sub Concatenation5()
  5.   ' Déclaration des variables
  6.   Dim s As String
  7.  
  8.   ' Initialisation des variables
  9.   s = "lundi" & vbCrLf & "mardi"
  10.  
  11.   ' Affichage
  12.   MsgBox s
  13. End Sub

Résultat

Info
La constante vbCrLf est plus efficace en VB. Par contre, vous ne pouvez pas l'employer dans un champ calculé de requête, de formulaire ou d'état ; utilisez dans ce cas Chr(13) & Chr(10).


Mes livres sur Access...
[cliquez pour plus d'infos]





Hit-Parade 
 
[ Copyright 1997-2018 hervé inisan, self-access.com Reproduction interdite ]