StrComp
La fonction StrComp compare les deux chaînes passées en argument selon le mode spécifié et renvoie un entier représentant le résultat de la comparaison.
StrComp(string1 As String, string2 As String[, compare As VbCompareMethod]) As Integer L'argument compare peut prendre les valeurs vbBinaryCompare (0) ou vbTextCompare (1). S'il est omis c'est l'instruction Option Compare qui fixe le mode, si celle-ci n'est pas déclarée, c'est une comparaison binaire qui sera faite. Le résultat renvoyé vaudra 0 si les deux chaînes sont identiques dans le mode de comparaison choisi, -1 si string1<string2, 1 dans le cas contraire.
Public Sub TriBulle(ByRef strArray() As String, Comparaison As
VbCompareMethod)
Dim Termine As Boolean, Encours As Boolean
Termine = Fal
Dim strTemp As String, cmpt As Long
se
Do While Termine = False
For cmpt = LBound(strArray) To UBound(strArray) - 1
If StrComp(strArray(cmpt), strArray(cmpt + 1), Comparaison) > 0
Then strTemp = strArray(cmpt) strArray(cmpt) = strArray(cmpt + 1) strArray(cmpt + 1) = strTemp Encours = True End If Next cmpt
If Encours = False Then
Exit Do End If Encours = False Loop End Sub
Public Sub TestCompare()
Dim TabTest() As String
TabTest = Split("Selon l'argument comparaison, le tri sera Sensible à la casse", " ")
Call TriBulle(TabTest, vbTextCompare)
MsgBox Join(TabTest, " ")
Call TriBulle(TabTest, vbBinaryCompare) MsgBox Join(TabTest, " ")
Instr
La fonction Instr cherche la présence d'une chaîne dans une autre chaîne et renvoie sa position le cas échéant.
1 As String, string2 As String[, compare As VbCompareMethod]) As
ans laquelle on effectue la .
non à cherchée. Lorsque la uf dans les cas suivants :
ll, la fonction renvoie Null.
une chaîne vide, la fonction renvoie la valeur de start.
n NbOccurence(ByVal ChaîneCible As String, Recherchee As
InStr([start As Long, ]string Long
Où start est la position où la recherche commence, string1 la chaîne d chée et compare le mode de comparaison recherche, string2 la chaîne recher
L'argument Compare définit le mode de comparaison et donc si la recherche est sensible ou la casse. Lorsque le paramètre start est omis, il est égal à 1 (début de la chaîne).
La position renvoyée est la position du premier caractère de la chaîne re recherche échoue la fonction renvoie 0 sa
Si string1 ou string2 est Nu Si string2 est
Public Functio String) As Long
Dim PosRech As Long
PosRech = InStr(1, ChaîneCible, Recherchee, vbTextCompare) Do Until PosRech = 0
NbOccurence = NbOccurence + 1
PosRech = InStr(PosRech + Len(Recherchee) + 1, ChaîneCible, Recherchee, vbTextCompare)
Loop
End Fonction
Il existe une fonction InStrB qui renvoie la position de l'octet plutôt que la position du caractère.
Left, Mid & Right
Renvoie une partie de chaîne en fonction de critères de position. La fonction Left renvoie la partie tion Mid une partie définie par les
g) As Variant
caractères de droite seront renvoyés, length le nombre de ariant
g]) As Variant h As Long]) As String MidB$(string As String, start As Long[, length As Long]) As String
la chaîne dont les caractères seront renvoyés, start la position du premier caractère (octet pour MidB) à renvoyer, length le nombre facultatif de caractères ou d'octets (pour MidB) devant être renvoyés.
gauche d'une chaîne, la fonction Right la partie droite et la fonc arguments qui lui sont passés. De la forme :
Left(string As String, length As Long) As Variant As Long) As Variant LeftB(string As String, length
Left$(string As String, length As Long) As String LeftB$(string As String, length As Long) As String
Où string est la chaîne dont les caractères de gauche seront renvoyés, length le nombre de caractères ou le nombre d'octets pour les variantes LeftB.
Right(string As String, length As Lon
RightB(string As String, length As Long) As Variant Right$(string As String, length As Long) As String
$(string As String, length As Long) As String RightB
Où string est la chaîne dont les
caractères ou le nombre d'octets pour les variantes RightB.
As Long]) As V Mid(string As String, start As Long[, length
g As String, start As Long[, length As Lon MidB(strin
Mid$(string As String, start As Long[, lengt Où string est
Nous avons vu un exemple classique d'utilisation de la fonction Mid lors de l'étude de Asc pour le parcours d'une chaîne caractère par caractère.
Public Function MyReplace(ByVal Chaîne As String, ByVal Cherche As String,
ByVal Remplace As String) As String
Dim PosRech As Long
PosRech = InStr(1, Chaîne, Cherche, vbTextCompare) Do Until PosRech = 0
Chaîne = Left(Chaîne, PosRech - 1) & Remplace & Right(Chaîne, Len(Chaîne) - PosRech - Len(Cherche) + 1)
P
osRech = InStr(1, Chaîne, Cherche, vbTextCompare)
Loop
MyReplace = Chaîne
End Function
Len
Renvoie la longueur de la chaîne de caractères passée en argument, ou la taille de la variable si . Existe sous forme LenB pour une réponse en octets.
ce ng
n'est pas une chaîne
Len(expression) As Lo LenB(expression) As Long
InStrRev
Fonctionne comme la fonction InStr mais en partant de la fin de la chaîne.
gcheck As String, stringmatch As String[, start As Long[, compar
InstrRev(strin e As
ong
echerche et stringmatch la chaîne e commence à la fin de la chaîne.
tring) As Variant VbCompareMethod]]) As L
Où stringcheck est la chaîne dans laquelle est effectuée la r cherchée.
Si position est omis ou égal à -1, la recherch
Private Function ExtractParenthese(ByVal Formule As S
Dim PosFerme As Long, PosOuvert As Long
Dim cmpt As Long, TabReponse() As String
PosFerme = InStr(1, Formule, ")", vbTextCompare) Do Until Pos
osOuve
Ferme = 0
P rt = InStrRev(Formule, "(", PosFerme, vbTextCompare)
ReDim Preserve TabReponse(0 To cmpt)
TabReponse(cmpt) = Mid(Formule, PosOuvert + 1, PosFerme - PosOuvert - 1)
cmpt = cmpt + 1
Formule = Left(Formule, PosOuvert - 1) & IIf(PosFerme < (Formule), Mid(Formule, PosFerme + 1), "")
PosFerme = InStr(1, Len
Formule, ")", vbTextCompare)
Loop
If Len(Formule) > 0 Then
ReDim Preserve TabReponse(0 To cmpt)
= Formule TabReponse(cmpt) End If abReponse ExtractParenthese = T End Function
Split
La fonction Split sépare une chaîne selon un séparateur et renvoie un tableau (de base 0) des sous chaî
renv
s la chaîne, il sera renvoyé un tabl est omis, c'est le caractère espace qui sera le sépa
renvoyées.
Public Sub
nes correspondantes.
Split(expression As String[, delimiter As String[, limit As Long[,compare As VbCompareMethod]]]) As String()
limit le nombre de sous chaînes à
Où expression est la chaîne à séparer, delimiter le séparateur et oyer.
Si le séparateur est de longueur nulle ou s'il n'est pas présent dan il
eau d'un élément contenant toute la chaîne. S' rateur.
t Si limit est omis, toutes les sous chaînes seron
TestSplit()
Dim strTest As String, msg As String, cmpt As Long, TabSplit() As
String
strTest = "un, deux, trois" TabSplit = Split(strTest, ",")
For cmpt = LBound(TabSplit) To UBound(TabSplit)
msg = msg & "[élément " & cmpt & " = " & TabSplit(cmpt) & "] " Next cmpt
Debug.Print msg
'[élément 0 = un] [élément 1 = deux] [élément 2 = trois]
msg = ""
TabSplit = Split(strTest, ",", 2)
For cmpt = LBound(TabSplit) To UBound(TabSplit)
msg = msg & "[élément " & cmpt & " = " & TabSplit(cmpt) & "] " Next cmpt
Debug.Print msg
'[élément 0 = un] [élément 1 = deux, trois]
msg = ""
abSplit = Split(strTe
T st, ";")
For cmpt = LBound(TabSplit) To UBound(TabSplit)
msg = msg & "[élément " & cmpt & " = " & TabSplit(cmpt) & "] " Next cmpt
Debug.Print msg
'[élément 0 = un, deux, trois]
msg = ""
End Sub
Filter
La fon un tableau de chaînes et renvoie un tableau contenant tout les élémen uant la chaîne spécifiée.
Method]]) As String()
dimension.
contenant la chaîne match seront renvoyés sinon ce sera tous les é pas de correspondance, un tableau vide sera renvoyé.
Pub
ction Filter compare une chaîne à ts comprenant ou excl
Filter(sourcearray As string(), match As String[, include As Boolean[,compare As VbCompare
Sourcearray doit être un tableau à une
Si include est vrai, tous les éléments léments ne la contenant pas. S'il n'y a
lic Sub TestFilter()
Dim TabString() As String, TabReponse As Variant
Dim Chaîne As String
Chaîne = "C'est un test et comme tous les tests il peut échouer" TabString = Split(Chaîne, " ")
TabReponse = Filter(TabString, "test", True, vbTextCompare)