• Aucun résultat trouvé

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)

Modification