Le code VBA suivant va vous permettre d'enlever tous les accents contenus dans vos cellules. Le code couvre beaucoup d'alphabets, 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 partie 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.

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)

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

27/11/2022 @ 20:37
Bonjour. Je tente d'utiliser votre fonction mais Excel m'affiche une erreur "Erreur de compilation : Variable non définie".
J'ai placé la fonction dans une module et cette dernière est appelée depuis une autre procédure publique située dans le même module.
Je l'utilise comme suit :
[...]
'On parcourt la liste des clients
For iCount = 3 To dernLig
If wb.Worksheets("Clients").Range("C" & iCount).Value = NOMCli Or wb.Worksheets("Clients").Range("C" & iCount).Value = EnleveAccent(NOMCli) Or EnleveAccent(wb.Worksheets("Clients").Range("C" & iCount).Value) = NOMCli Then 'Recherche le nom du client dans la colonne C (avec tolérance sur les accents)
If wb.Worksheets("Clients").Range("D" & iCount).Value = PnomCli Or wb.Worksheets("Clients").Range("D" & iCount).Value = EnleveAccent(PnomCli) Or EnleveAccent(wb.Worksheets("Clients").Range("D" & iCount).Value) = PnomCli Then 'Vérifie que le prénom coïncide aussi (avec tolérance sur les accents)
numCli = iCount 'Le numéro de client est égal au numéro de ligne en cours
trouvé = "ok"
Exit For
End If
End If
Next iCount
[...]
Merci par avance =)