- ' ----------------------------------------------------------------------------
- ' Description
- ' Renvoie une chaîne dans laquelle une sous-chaîne spécifiée a été
- ' remplacée plusieurs fois par une autre sous-chaîne.
- ' Syntaxe
- ' Replace(expression, find, replacewith[, start[, count[, compare]]])
- '
- ' expression
- ' Expression de chaîne contenant une sous-chaîne à remplacer.
- ' find
- ' Sous-chaîne recherchée.
- ' replacewith
- ' Sous-chaîne de remplacement.
- ' start (Facultatif)
- ' Position dans l'argument expression où la recherche de sous-chaîne
- ' doit commencer. Si elle est omise, la position 1 est prise par défaut.
- ' count (Facultatif)
- ' Nombre de remplacements de sous-chaîne à effectuer. Si cette valeur
- ' est omise, la valeur par défaut -1, qui signifie tous les remplacements
- ' possibles, est employée.
- ' compare (Facultatif)
- ' Valeur numérique indiquant le type de comparaison à utiliser lors de
- ' l'évaluation des sous-chaînes. L'argument compare peut être omis ou
- ' prendre la valeur 0, ou 1.
- ' Indiquez la valeur 0 pour effectuer une comparaison binaire.
- ' Indiquez la valeur 1 pour effectuer une comparaison de texte,
- ' sans différenciation des majuscules et des minuscules.
- '
- ' NOTES : vbDatabaseCompare n'est pas émulé.
- ' Version: 1.0 - 20/07/2002
- ' Auteur : Bigane@tiscalinet.ch
- ' ----------------------------------------------------------------------------
- Public Function Replace( _
- ByVal expression As String, _
- ByVal find As String, _
- ByVal replacewith As String, _
- Optional ByVal start As Long = 1, _
- Optional ByVal count As Long = -1, _
- Optional ByVal compare As Long)
-
- Dim lenFind As Long
- Dim lenNext As Long
- Dim lenReplace As Long
- Dim lenExpression As Long
-
- 'Emulation de Const vbUseCompareOption = -1
- If IsEmpty(compare) Or _
- ((compare <> vbBinaryCompare) And (compare <> vbTextCompare)) Then
- compare = IIf("A" = "a", vbTextCompare, vbBinaryCompare)
- End If
-
- If start > Len(expression) Then
- Replace = vbNullString
- Else
- If Not ((start < 1) Or _
- (start > Len(expression)) Or (find = vbNullString)) Then
- lenFind = Len(find)
- lenReplace = Len(replacewith)
- start = InStr(start, expression, find, compare)
- Do While (start<>0) And (count<>0)
- lenExpression = Len(expression)
- lenNext = start + lenFind
- expression = Mid$(expression, 1, start - 1) & replacewith & _
- IIf(lenNext <= lenExpression, _
- Mid$(expression, lenNext), vbNullString)
- count = count - 1
- start = InStr(start + lenReplace, expression, find, compare)
- Loop
- End If
- Replace = expression
- End If
-
- End Function
-
' ----------------------------------------------------------------------------
' Description
' Renvoie une chaîne dans laquelle une sous-chaîne spécifiée a été
' remplacée plusieurs fois par une autre sous-chaîne.
' Syntaxe
' Replace(expression, find, replacewith[, start[, count[, compare]]])
'
' expression
' Expression de chaîne contenant une sous-chaîne à remplacer.
' find
' Sous-chaîne recherchée.
' replacewith
' Sous-chaîne de remplacement.
' start (Facultatif)
' Position dans l'argument expression où la recherche de sous-chaîne
' doit commencer. Si elle est omise, la position 1 est prise par défaut.
' count (Facultatif)
' Nombre de remplacements de sous-chaîne à effectuer. Si cette valeur
' est omise, la valeur par défaut -1, qui signifie tous les remplacements
' possibles, est employée.
' compare (Facultatif)
' Valeur numérique indiquant le type de comparaison à utiliser lors de
' l'évaluation des sous-chaînes. L'argument compare peut être omis ou
' prendre la valeur 0, ou 1.
' Indiquez la valeur 0 pour effectuer une comparaison binaire.
' Indiquez la valeur 1 pour effectuer une comparaison de texte,
' sans différenciation des majuscules et des minuscules.
'
' NOTES : vbDatabaseCompare n'est pas émulé.
' Version: 1.0 - 20/07/2002
' Auteur : Bigane@tiscalinet.ch
' ----------------------------------------------------------------------------
Public Function Replace( _
ByVal expression As String, _
ByVal find As String, _
ByVal replacewith As String, _
Optional ByVal start As Long = 1, _
Optional ByVal count As Long = -1, _
Optional ByVal compare As Long)
Dim lenFind As Long
Dim lenNext As Long
Dim lenReplace As Long
Dim lenExpression As Long
'Emulation de Const vbUseCompareOption = -1
If IsEmpty(compare) Or _
((compare <> vbBinaryCompare) And (compare <> vbTextCompare)) Then
compare = IIf("A" = "a", vbTextCompare, vbBinaryCompare)
End If
If start > Len(expression) Then
Replace = vbNullString
Else
If Not ((start < 1) Or _
(start > Len(expression)) Or (find = vbNullString)) Then
lenFind = Len(find)
lenReplace = Len(replacewith)
start = InStr(start, expression, find, compare)
Do While (start<>0) And (count<>0)
lenExpression = Len(expression)
lenNext = start + lenFind
expression = Mid$(expression, 1, start - 1) & replacewith & _
IIf(lenNext <= lenExpression, _
Mid$(expression, lenNext), vbNullString)
count = count - 1
start = InStr(start + lenReplace, expression, find, compare)
Loop
End If
Replace = expression
End If
End Function