Comment puis-je remplacer plus d'une chose dans une variable chaîne?
Voici mon exemple de fonction dans vba:
Private Function ExampleFunc(ByVal unitNr$) As String
If InStr(unitNr, "OE") > 0 Then
unitNr = Replace(unitNr, "OE", "")
unitNr = Replace(unitNr, ";", "")
End If
...
End Function
Y a-t-il une meilleure solution?
Vous pouvez utiliser un tableau et une boucle sur ses éléments:
Sub MAIN()
Dim s As String
s = "123456qwerty"
junk = Array("q", "w", "e", "r", "t", "y")
For Each a In junk
s = Replace(s, a, "")
Next a
MsgBox s
End Sub
Chaque élément de courrier indésirable peut être une sous-chaîne ou un seul caractère.
S'il ne s'agit que de quelques caractères, j'irais avec Marco, mais sous VBA:
unitNr = Replace(Replace(unitNr, "OE", ""), ";", "")
A-t-il besoin d'être VBA? Cette formule devrait également fonctionner:
=SUBSTITUTE(SUBSTITUTE("replace","e",""),"a","")
La sortie sera 'rplc'
J'ai trouvé cet article très utile et j'ai donc pensé partager avec vous les avantages de mon utilisation. En combinant la réponse acceptée de "Gary's Student" avec ce commentaire par Charles Williams , j'ai trouvé un moyen simple de supprimer les caractères non numériques d'une chaîne donnée.
Public Function RemoveNonNumChars(s As String) As String
Dim bytes() As Byte
Dim char As String
bytes = StrConv(s, vbFromUnicode)
For Each c In bytes
char = chr(c)
If Not IsNumeric(char) Then
'remove character from array
s = Replace(s, char, "")
Debug.Print "Removing " & char & " from string." & Chr(13) s
End If
Next c
End Function
J'espère que ça aidera quelqu'un. À votre santé!