VBA : traitements des chaines de caractères
25 septembre 2007
Nécessité de ces traitements
Les données manipulées par un programme sont essentiellement de type numérique ou chaîne de caractères.
Si les types numériques sont très utilisés par les programmes scientifiques, le type chaîne est incontournable pour des étudiants en Lettres et Sciences Humaines.
Une variable chaîne de caractères se déclare de type String.
Exemple 1 :
Dim MotProposé As String
La variable contient alors une chaîne de longueur variable selon l’affectation qui suivra.
Exemple 2 :
Dim Lettre As String * 1
La variable contient alors une chaîne de longueur 1 c’est à dire un seul caractère.
Exemple 3 :
Dim Adresse As String * 30
La variable contient alors une chaîne de longueur 30. Si l’on n’affecte que 18 caractères dans une telle chaîne, le reste est rempli d’espaces. Si l’on affecte plus de 30 caractères le surplus est tronqué.
Comparaison des chaînes de caractères
Longueur d’une chaîne :
La longueur d’une chaîne est donnée par la fonction Len.
Exemple :
Phrase = "Alea jacta est."
La fonction Len(Phrase) retournera la valeur 15.
Il est évident que si deux chaînes de caractères n’ont pas la même longueur elles sont différentes. Par contre deux chaînes de même longueur ne sont pas forcément identiques.
Comparaison binaire :
On compare deux chaînes par la fonction StrComp.
Elle renvoie la valeur numérique 0 si les deux chaînes sont rigoureusement identiques et la valeur numérique 1 si les chaînes diffèrent même par un seul octet.
Exemple :
Phrase1 = "My tailor is rich."
Phrase2 = "My Tailor is rich."
Phrase3 = " My tailor is rich."
La fonction StrComp(Phrase1,Phrase2) retournera la valeur ...
La fonction StrComp(Phrase1,Phrase3) retournera la valeur ...
Recherche d’une chaîne de caractères - La fonction InStr permet de rechercher si une chaîne de caractères existe à l’intérieur d’une autre chaîne de caractères. Cette fonction retourne la position de la première occurrence de la chaîne recherchée.
Syntaxe :
InStr(Chaîne1, Chaîne2)
Chaîne1 est la chaîne de caractères à traiter (sur laquelle porte la recherche).
Chaîne2 est la chaîne de caractères recherchée dans Chaîne1.
Exemple :
Chaîne1 = "Sed lex dura lex" ’ Auteur inconnu
Chaîne2 = "lex"
Chaîne3 = "gex"
La fonction InStr(Chaîne1,Chaîne2) retournera la valeur ".........."
La fonction InStr(Chaîne1,Chaîne3) retournera la valeur 0. - La fonction Ucase met tout le texte en majuscules et permet de rechercher indépendamment une lettre minuscule ou majuscule.
- La fonction Lcase met tout le texte en minuscules et permet...
Extraction d’une chaîne de caractères
- La fonction Right donne la partie droite d’une chaîne de caractères. Le nombre de caractères de cette partie doit être précisé.
Exemple :
Chaîne = "To be or not to be" ’Shakespeare
La fonction Right(Chaîne,5) retournera la valeur ".........." - 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é.
Exemple :
Chaîne = "To do is to be" ’Platon
La fonction Left(Chaîne,5) retournera la valeur ".........." - 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.
Syntaxe :
Mid(Texte, Position, Nombre)
Texte est la chaîne de caractère à traiter.
Position est la position dans la chaîne à partir de laquelle il faut extraire des caractères.
Nombre est le nombre de caractères à extraire.
Exemple :
Chaîne = "Do bee do bee do" ’Frank Sinatra
La fonction Mid(Chaîne,4,2) retournera la valeur "...."
La fonction Mid(Chaîne,8,9) retournera la valeur "............"
Applications
La plupart des problèmes sur les chaînes de caractères se traitent à l’aide des fonctions ci-dessus. Leur maniement est assez délicat et les résultats quelquefois difficiles à prévoir. Seule la pratique de leur programmation vous permettra d’en vérifier l’efficacité.
Exemple1 :
Que fait ce programme :
Dim Vers, Mot As String
Dim Position As Integer
Vers = "Pour qui sont ces serpents qui sifflent sur vos têtes ?"
Mot = InputBox("Taper le mot à rechercher")
Position = InStr(Vers, Mot)
If Position = 0 Then
MsgBox("Pas trouvé !")
Else
MsgBox("Trouvé à la position " & Position)
End If
Exemple2 :
Ce programme compte le nombre d’espaces dans une phrase.
Dim Phrase, Caractère As String
Dim Compteur, Longueur, i As Integer
Phrase = InputBox("Tapez votre phrase")
Longueur = Len (Phrase)
For i = 1 To Longueur
Caractère = Mid(Phrase, i, 1)
If Caractère = " " Then Compteur = Compteur + 1
Next i
MsgBox("Cette phrase contient " & Compteur & " espaces.")
[ Imprimer
cet article ] [ Haut ]
|