VBA

VBA – Enlever les accents

Temps de lecture 3 minutes

Le code suivant va vous permettre d'enlever tous les accents contenues dans vos cellules. Le code couvre beaucoup d'alphabet, comme l'espagnol, le suédois, le finnois, ...

Le code VBA pour enlever les accents

Public Function EnleveAccent(strMot As String) As String
'Les A
    strMot = Replace(strMot, "à", "a")
    strMot = Replace(strMot, "á", "a")
    strMot = Replace(strMot, "â", "a")
    strMot = Replace(strMot, "ã", "a")
    strMot = Replace(strMot, "å", "a")
    strMot = Replace(strMot, "ä", "a")
    strMot = Replace(strMot, "À", "A")
    strMot = Replace(strMot, "Á", "A")
    strMot = Replace(strMot, "Â", "A")
    strMot = Replace(strMot, "Ã", "A")
    strMot = Replace(strMot, "Ä", "A")
    strMot = Replace(strMot, "Å", "A")

' Les E
    strMot = Replace(strMot, "é", "e")
    strMot = Replace(strMot, "è", "e")
    strMot = Replace(strMot, "ê", "e")
    strMot = Replace(strMot, "ë", "e")
    strMot = Replace(strMot, "É", "E")
    strMot = Replace(strMot, "È", "E")
    strMot = Replace(strMot, "Ê", "E")
    strMot = Replace(strMot, "Ë", "E")

'Les I
    strMot = Replace(strMot, "î", "i")
    strMot = Replace(strMot, "ï", "i")
    strMot = Replace(strMot, "ì", "i")
    strMot = Replace(strMot, "í", "i")
    strMot = Replace(strMot, "Î", "I")
    strMot = Replace(strMot, "Ï", "I")
    strMot = Replace(strMot, "Ì", "I")
    strMot = Replace(strMot, "Í", "I")
    
'Les O
    strMot = Replace(strMot, "ò", "o")
    strMot = Replace(strMot, "ó", "o")
    strMot = Replace(strMot, "ô", "o")
    strMot = Replace(strMot, "õ", "o")
    strMot = Replace(strMot, "ö", "o")
    strMot = Replace(strMot, "ø", "o")
    strMot = Replace(strMot, "Ô", "O")
    strMot = Replace(strMot, "Ò", "O")
    strMot = Replace(strMot, "Ó", "O")
    strMot = Replace(strMot, "Õ", "O")
    strMot = Replace(strMot, "Ö", "O")
    strMot = Replace(strMot, "Ø", "O")

'Les O
    strMot = Replace(strMot, "ò", "o")
    strMot = Replace(strMot, "ó", "o")
    strMot = Replace(strMot, "ô", "o")
    strMot = Replace(strMot, "õ", "o")
    strMot = Replace(strMot, "ö", "o")
    strMot = Replace(strMot, "ø", "o")
    strMot = Replace(strMot, "Ô", "O")
    strMot = Replace(strMot, "Ò", "O")
    strMot = Replace(strMot, "Ó", "O")
    strMot = Replace(strMot, "Õ", "O")
    strMot = Replace(strMot, "Ö", "O")
    strMot = Replace(strMot, "Ø", "O")

'Les U
    strMot = Replace(strMot, "ù", "u")
    strMot = Replace(strMot, "ú", "u")
    strMot = Replace(strMot, "ü", "u")
    strMot = Replace(strMot, "û", "u")
    strMot = Replace(strMot, "Ù", "U")
    strMot = Replace(strMot, "Ù", "U")
    strMot = Replace(strMot, "Û", "U")
    strMot = Replace(strMot, "Ü", "U")
    
'Les autres lettres
    strMot = Replace(strMot, "ç", "c")
    strMot = Replace(strMot, "Ç", "C")
    strMot = Replace(strMot, "ñ", "n")
    strMot = Replace(strMot, "Ñ", "N")
    strMot = Replace(strMot, "š", "s")
    strMot = Replace(strMot, "Š", "S")
    strMot = Replace(strMot, "ý", "y")
    strMot = Replace(strMot, "ÿ", "y")
    strMot = Replace(strMot, "Ý", "Y")
    strMot = Replace(strMot, "Ÿ", "Y")
    strMot = Replace(strMot, "ž", "z")
    strMot = Replace(strMot, "Ž", "Z")

    EnleveAccent = strMot
End Function

Explications du code

La première chose à remarquer c'est que nous avons écrit une fonction (Function) et non pas une procédure (Sub). En effet, la différence entre une procédure et une fonction c'est qu'une fonction retourne un résultat. Et ce résultat est contenu dans le nom de la fonction.

Ensuite, nous passons en paramètre le contenu de la cellule et chaque caractère est "lu".

Si le caractère fait parti de la liste des caractères à remplacer, on lui attribue la lettre de remplacement.

Il y a cependant un problème pour les caractères très spéciaux, comme les caractères ż, ł ou ń. En effet, ces caractères sont au-delà de la position 255 dans la classification ASCII. Or, le Visual Basic Editor, ne permet pas d'afficher les caractères au-delà du caractère 255. Mais on peut contourner le problème en créant une fonction dans Power Query.

Table ASCII

Utilisation dans Excel

Pour appeler une fonction personnalisée dans Excel c'est extrêmement simple. Il suffit tout simplement d'écrire le signe égal, comme pour une fonction standard, et d'écrire le nom de la fonction personnalisée

=EnleveAccent(A2)

Appel de la fonction personnalise pour enlever les accents

Et ensuite, il ne reste plus qu'à recopier pour les autres cellules afin d'enlever les accents.

Enlever les accents

Related posts

VBA : Toutes les commandes pour les barres d’outils et menus

Frédéric LE GUEN

Répartition des dépenses – VBA

Frédéric LE GUEN

VBA – Boite de dialogue « Fichier »

Frédéric LE GUEN

Laissez un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Ce site utilise des cookies pour améliorer votre expérience et vos recherches. Nous pensons que vous êtes dʼaccord sur ce principe mais vous pouvez refuser cette option. Accepter Continuer

Privacy & Cookies Policy