Fonction générique de remplacement des accents et autres caractères spéciaux

Contenu du snippet

par défaut la fonction se contente de remplacer les accents courrants.
avec les arguments optionnels, tout type de caractère peut être remplacé par tout autre, ou bien par rien du tout.
Exemple d'utilisation:
maVar = StripSpecialChars(maVar)
utilisation respectant les majuscules
maVar = StripSpecialChars(maVar, vbBinaryCompare)
ou
maVar = StripSpecialChars(maVar, , "àâäéèêëìîïöôùüûçÀÂÄÉÈÊËÌÎÏÖÔÙÜÛÇ", "aaaeeeeiiioouuucAAAEEEEIIIOOUUUC")
supprimer des caractères spéciaux
maVar = StripSpecialChars(maVar, , "&#{}[]()-|_@°=+*%!?,.;/:'""", "")

peut aussi servir à 'cryptographier' un texte pourquoi pas, juste pour le fun!?
maVarCryptee = StripSpecialChars(MaVar, "abcdefghijklmnopqustuvwxyz", "azertyuiopqsdfghjklmwxcvbn")

Source / Exemple :


Public Function StripSpecialChars(iString As String, Optional _
    CompareMethod As VbCompareMethod = vbTextCompare, Optional Lookup As String _
    = "àâäéèêëïùç", Optional ReplaceBy As String = "aaaeeeeiuc") As String
Dim i As Long

' dans le doute on remplace pas on supprime le caractère
If Len(ReplaceBy) < Len(Lookup) Then ReplaceBy = ""
For i = 1 To Len(Lookup)
    ' on remplace tous les caractères de Lookup 1 par 1 dans iString
    iString = Replace(iString, Mid(Lookup, i, 1), (IIf(ReplaceBy = "", "", _
        Mid(ReplaceBy, i, 1))), , , CompareMethod)
Next i
StripSpecialChars = iString
End Function

Conclusion :


attention, l'utilisation avec vbTextCompare transforme les ÂÊ... en ae (minuscule).

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.