Chapitre 6 - Chaînes de caractères

Transcription

Chapitre 6 - Chaînes de caractères
Chapitre 6
Chaînes de caractères
Objectifs
À la fin de ce chapitre, le lecteur sera en mesure :
• de déclarer et d’initialiser des chaînes de caractères;
• d’utiliser les méthodes prédéfinies qui permettent de
manipuler les chaînes de caractères.
61
Une chaîne de caractères (appelée string en anglais) est une suite de caractères permettant
de manipuler des mots et des phrases. Ce sont donc des objets importants en programmation,
intervenant dans la communication entre l'utilisateur et l'ordinateur. Dans ce chapitre, la
représentation d'une chaîne de caractères dans la mémoire de l'ordinateur est d'abord
présentée. Par la suite, l'utilisation et la manipulation de chaînes de caractères dans une
macro est expliquée.
Qu'est-ce qu'une chaîne de caractères
Dans la mémoire de l'ordinateur, une chaîne de caractères est stockée sous forme d'un
tableau de caractères. Chaque caractère est codé en utilisant un codage ACSII, UTF-8 ou
unicode dépendant du langage de programmation utilisé. De plus, la longueur de la chaîne de
caractères est aussi stockée en mémoire. La figure suivante représente la chaîne de
caractères « Steph » stocké en mémoire.
Figure 6.1 : Chaîne de caractère en mémoire
Création et initialisation d'une chaîne de caractères
En VBA, il existe 2 types de chaînes de caractères : les chaînes de longueur fixe et les
chaînes de longueur variable. Ces deux types de chaînes ont une taille limite différente :
• Soit 64 Ko pour les chaînes de longueur fixe
• Et 2 Go pour les chaînes de longueur variable
Les chaînes sont représentées par des objets de type String. Ce sont des objets de ce type
qui sont construits par le compilateur quand il rencontre une chaîne littérale dans le
programme source. Une chaîne littérale est une suite de caractères entourés par des
apostrophes doubles « " », comme par exemple "Steph". La longueur de la chaîne est le
nombre de caractères figurant entre les apostrophes : 5 pour "Steph" et 0 pour la chaîne vide
62
"". Les exemples suivants présentent différentes façons de déclarer une chaîne de
caractères.
Exemple 6.1
Déclarer la variable UneChaine qui contiendra alors une chaîne de longueur variable:
Dim UneChaine As String
Exemple 6.2
Déclarer la variable UneChaine qui contiendra une chaîne de longueur 1, c'est à dire un seul
caractère:
Dim UneChaine As String * 1
Exemple 6.3
Déclarer la variable UneChaine qui contiendra une chaîne de longueur 30.
Dim UneChaine As String * 30
Si l'on n'affecte que 18 caractères dans une telle chaîne, le reste sera rempli d'espaces. Si l'on
affecte plus de 30 caractères, le surplus sera tronqué.
Les chaînes littérales peuvent servir à initialiser une variable de type String :
Dim UneChaine As String
UneChaine = "Samuel"
Manipulation de chaînes de caractères
VBA fournit plusieurs fonctions prédéfinies permettant de manipuler les chaînes de caractères.
Cette section présente quelques-unes de ces fonctions.
63
Longueur d’une chaîne
La fonction len renvoie la longueur de la chaîne, c'est à dire le nombre de caractères de la
chaîne.
Exemple 6.4
Afficher la longueur de la chaîne littérale "stephane"
Msgbox len ("stephane")
L'exécution de cette instruction, affichera dans une boîte de dialogue le nombre 8.
Comparaison de deux chaînes
On compare deux chaînes de caractères par la fonction StrComp. Elle renvoie la valeur
numérique 0, si les deux chaînes sont rigoureusement identiques et la valeur 1, si elles sont
différentes.
Exemple 6.5
Afficher le message « La réponse est oui » si la variable Reponse contient la chaîne "oui".
If StrComp (Reponse, "oui") Then
msgbox "La réponse est oui"
End if
Extraction d’une sous-chaîne
La fonction Right extrait la partie droite d'une chaîne de caractères. Le nombre de caractères
de cette partie doit être précisé.
Exemple 6.6
Afficher les 3 derniers caractères de la chaîne littérale "stephane"
MsgBox Right ("Stephane", 3)
Le résultat affiché par cet exemple sera « ane »
La fonction Left donne la partie gauche d'une chaîne de caractères. Le nombre de caractères
de cette partie doit être précisé.
64
Exemple 6.7
Afficher les 3 premiers caractères de la chaîne littérale "Stephane".
MsgBox Left ("Stephane", 3)
L'exécution de cette instruction, affichera dans une boîte de dialogue la chaîne « Ste »
La fonction Mid extrait une partie d'une chaîne de caractères. Le nombre de caractères de
cette partie doit être précisé ainsi que la position du premier caractère extrait.
Exemple 6.8
Afficher 3 caractères à partir de la position 4.
MsgBox Mid ("Stephane", 4, 3)
Le résultat affiché par l'instruction précédente sera « pha ».
Concaténation de chaînes
Il existe deux opérateurs pour concaténer les chaînes de caractères. Il est possible d’utiliser
soit l'opérateur + ou l'opérateur &. Les 2 exemples suivants illustrent les différences entre les 2
opérateurs.
Exemple 6.9
Dim strResultat As String
strResultat = "Test " & 1 & 2
'Le résultat est Test 12
Le résultat affiché par cet exemple sera « Test 12 ».
Exemple 6.10
Dim strResultat As String
strResultat = "Test " + 1 + 2
'Le résultat est Test 3
Cet exemple affichera « Test 3 ».
65
Conversion majuscules/minuscules
La méthode Ucase met tout le texte en majuscules et permet de rechercher indépendamment
une lettre minuscule ou majuscule.
Exemple 6.11
Convertir la chaîne "Stephane" en majuscule et l'afficher
MsgBox Ucase ("Stephane") 'renvoie STEPHANE
La méthode Lcase met tout le texte en minuscules. L'exemple suivant transforme la chaîne
"Stephane" en "stephane"
Exemple 6.12
MsgBox Lcase ("Stephane") 'renvoie stephane
Scinder une chaîne
Cette méthode découpe une chaîne de caractères en fonction d’un caractère spécifique. Le
résultat de ce découpage est stocké dans un tableau.
Exemple 6.13
Extraire les degrés, minutes et secondes d'une coordonnée géographique contenue dans la
chaîne "4:03:27".
Dim
Dim
Dim
Dim
Dim
CoordDMS As String
Tableau() As String
Deg As Integer
Min As Integer
Sec As Integer
CoordDMS = "4:03:27"
Tableau = Split(CoordDMS, ":")
Deg = Tableau(0) 'renvoie 4
Min = Tableau(1) 'renvoie 03
Sec = Tableau(2) 'renvoie 27
Dans cet exemple, la chaîne de caractères est scindée en trois par le caractère « : ».
66
Inversion d’une chaîne
La méthode StrReverse permet d’inverser l’ordre des caractères dans une chaîne.
Exemple 6.14
MsgBox StrReverse ("Stephane")
L'exécution de cette instruction, affichera dans une boîte de dialogue la chaîne « enahpetS »
Remplacement de caractères
La méthode Replace permet de remplacer des caractères dans une chaîne. Dans l’exemple
suivant, les virgules sont remplacées par des points:
MsgBox Replace ("10,10", ",", ".")
Le résultat affiché par cet exemple sera donc 10.10
Exemple 6.15
Écrire une macro VBA qui permet de saisir un mot à l'aide d'une fenêtre de dialogue et de
vérifier s'il s'agit d'un palindrome. Un palindrome est une chaîne de caractères symétrique par
rapport à son centre. Par exemple, les chaînes 'ABCCBA' ou 'ABCDCBA' sont des
palindromes.
Sub Exemple15()
Dim palindrome As String
palindrome = InputBox("Entrez un mot")
palindrome = UCase(palindrome)
If palindrome = StrReverse(palindrome) Then
MsgBox ("Ceci est un palindrome")
End If
End Sub
Exercices
Exercice 6.1
Écrire une macro en VBA qui demande à l’usager d’entrer une chaîne de caractères et
67
afficher, à l’aide d’un MsgBox, la longueur de cette chaîne.
Exercice 6.2
Dans cet exercice, on étend la notion de palindrome à des phrases dans lesquelles on ignore
les espaces pour ne conserver, finalement, que les caractères alphabétiques. De même, on
fait abstraction de l'accentuation des caractères.
Voici quelques exemples qui pourront servir à tester votre programme:
• Elu par cette crapule
• Engage le jeu que je le gagne
• Esope reste ici et se repose
• Karine alla en Irak
Votre programme VBA devra donc :
• saisir une phrase via une fenêtre de dialogue;
• en normaliser la casse (majuscules/minuscules);
• modifier celle-ci afin d'en retirer les caractères indésirables;
• vérifier le palindrome.
68
Exercice 6.3
Écrire une macro qui lit des coordonnées géographiques dans le format degrés, minutes,
secondes et orientation. (Exemple : 25:02:23,56 ouest).
Votre macro devra extraire de cette chaîne de caractères les informations suivantes et les
afficher:
• Degrés;
• Minutes;
• Secondes;
• Orientation.
(Erreur dans figure)
69

Documents pareils