Repstr (fonction de remplacement dans une chaîne de caractéres)

Description

(tout est dans le titre)

chaine1 = la chaîne dans laquelle on recherche chaine2 qu'on remplace par chaine3

Source / Exemple :


Public Function repStr(ByVal Chaine1 As String, ByVal Chaine2 As String, ByVal Chaine3 As_
    String, ByVal all As Boolean, Optional ByVal casse As Boolean = False, Optional ByVal_
     wordonly As Boolean = False) As String
'--------------------------'
' On declare les variables '
'--------------------------'
    Dim Chaine(1 To 3) As String
    Dim result, C1, C2, C3, temp As String
    Dim tmpLEN1, tmpLEN2, tmpLEN3, tmpPOS As Integer
    Dim compteur As Long
    Dim recom As Boolean

    recom = False
    compteur = 0
    Chaine(1) = Chaine1
    Chaine(2) = Chaine2
    Chaine(3) = Chaine3
    
'----------------------------------------------------------'
' On vérifie que chaine(1) et chaine(2) ne soient pas vide '
'----------------------------------------------------------'
    
    If (Chaine(2) = "") Then
        MsgBox "Veuillez entrer une chaîne à rechercher", vbExclamation, App.Title
        result = Chaine(1)
        GoTo fin:
    End If
    
    If (wordonly = True) Then
        Chaine(1) = " " & Chaine(1) & " "
        Chaine(2) = " " & Chaine(2) & " "
        Chaine(3) = " " & Chaine(3) & " "
    End If

'-----------------'
' On recherche... '
'-----------------'
debut:
    tmpLEN1 = Len(Chaine(2))
    tmpLEN2 = Len(Chaine(1))
    tmpLEN3 = Len(Chaine(3))
    If (casse = True) Then
        tmpPOS = InStr(Chaine(1), Chaine(2))
    Else
        tmpPOS = InStr(LCase(Chaine(1)), LCase(Chaine(2)))
    End If
    
'---------------------'
' ...Puis on remplace '
'---------------------'
    If (tmpPOS = 0) Then
        If (recom = True) Then
            result = temp & Chaine(1)
            If (Not compteur = 0) Then
                MsgBox "la chaîne à été remplacé " & compteur & " fois", vbInformation, App.Title
            End If
            GoTo fin:
        Else
            MsgBox "Chaîne non trouvé", vbExclamation, App.Title
            result = Chaine(1)
        End If
    Else
        C1 = Left$(Chaine(1), tmpPOS - 1)
        C2 = Right$(Chaine(1), tmpLEN2 - Len(C1) - tmpLEN1)
        C3 = C1 & Chaine(3) & C2
        result = C3
        compteur = compteur + 1
    End If
    If (all = True) Then
        Chaine(1) = result
        tmpLEN3 = Len(C1) + tmpLEN3
        temp = temp & Left(Chaine(1), tmpLEN3)
        Chaine(1) = Right(Chaine(1), Len(Chaine(1)) - Len(Left(Chaine(1), tmpLEN3)))
        recom = True
        GoTo debut:
    End If
fin:
    If (wordonly = True) Then
        result = Left(result, Len(result) - 1)
        result = Right(result, Len(result) - 1)
    End If
    repStr = result
End Function

Conclusion :


peut surement être optimisé
Merci de signaler d'éventuel bug

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.