web-dev-qa-db-fra.com

Excel VBA - supprimer une partie de la chaîne

J'essaie de supprimer une partie de la chaîne. Par exemple
mystring="site, site text, sales "

Je veux supprimer ' site ' de la mystère. Ma sortie requise est "texte du site, ventes"

J'utilise cette ligne de code:

s1 = Replace(mystring, "site", "")

mais j'obtiens "text, sales"

Je ne sais pas comment faire cela et j'apprécierais vraiment votre aide!

6
phani
replace("site, site text, sales ","site, ","",1,1)

Vous pouvez également envoyer en paramètre la position de départ puis le nombre de fois que vous souhaitez remplacer ... (la valeur par défaut est -1)

8
Adrian

Dans mon cas, je voulais supprimer la partie des chaînes située entre "[" et "]". Et le code suivant a très bien fonctionné.

Donc, avec la chaîne d'origine dans la colonne A (et la solution dans la colonne B):

Sub remove_in_string()

Dim i, lrowA, remChar As Long
Dim mString As String

lrowA = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To lrowA

mString = Cells(i, 1).Value

    If InStr(mString, "[") > 0 Then

        remChar = InStr(mString, "]") - InStr(mString, "[") + 1

        Cells(i, 2).Value = Left(mString, Len(mString) - remChar)

    ElseIf InStr(mString, "[") = 0 Then

        Cells(i, 2).Value = Cells(i, 1).Value

    End If

Next

End Sub
2
IRENE G

Il y a beaucoup d'options différentes ici:

Juste en en ajoutant le coma dans la chaîne de recherche à remplacer et utilisez Trim pour vous débarrasser des espaces:

s1 = Trim(Replace(mystring, "site,", ""))

Spécifiez le nombre de fois où vous souhaitez que la chaîne soit remplacée (le premier "1" est le début, le second le nombre de remplacements)

s1 = Trim(Replace(mystring, "site,", "",1,1))

Ou la manière dure/mauvaise, de décomposer votre chaîne en deux morceaux après la première occurrence, puis de se recombiner pour obtenir un résultat ...

TempStart = Left(mystring, InStr(1, mystring, "site") + Len(mystring) + 1)
TempEnd = Replace(mystring, TempStart, "")
TempStart = Replace(TempStart, "site", "")
mystring = CStr(TempStart & TempEnd)
1
R3uK

Vous pouvez également utiliser la fonction MID de VB comme ceci:

Mystring=Mid(myString, 6) 

le résultat sera "texte du site, ventes"

Spécifiez simplement le nombre de caractères que vous souhaitez supprimer dans la partie numéro .

1
Anarach