Supprimer accents et tirets entre les mots

maval

XLDnaute Barbatruc
Bonjours
J'ai sur ma feuille en colonne "A" une liste de noms avec des accents des tirets ou traits d’union.
Je souhaiterai avec un code VBA pouvoirs retirer les accents et supprimer les tirets ou traits d’union
tous en laissant un espace entre chaque nom.

Je vous remercie d'avance

Cordialement

Max
 

vgendron

XLDnaute Barbatruc
Hello.. et il est ou le fichier???

sinon, une petite recherche google
https://www.extendoffice.com/documents/excel/707-excel-replace-accented-characters.html
VB:
Function StripAccent(thestring As String)
Dim A As String * 1
Dim B As String * 1
Dim i As Integer
Const AccChars= "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
Const RegChars= "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"
For i = 1 To Len(AccChars)
A = Mid(AccChars, i, 1)
B = Mid(RegChars, i, 1)
thestring = Replace(thestring, A, B)
Next
StripAccent = thestring
End Function
 

job75

XLDnaute Barbatruc
Bonjour maval, vgendron,

vgendron, c'est sûrement un english ou un amerloque qui a pondu ce code...

En tant que français j'utiliserais ici :
Code:
Const AccChars$ = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
Const RegChars$ = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"

Function Epure$(x$)
Dim i%
For i = 1 To Len(AccChars)
x = Replace(x, Mid(AccChars, i, 1), Mid(RegChars, i, 1))
Next
Epure = Replace(x, "-", " ")
End Function
Les déclarations Const sont à placer en haut du Module pour éviter le chargement des variables à chaque recalcul de la fonction.

Edit : pourquoi les caractères du début ne sont pas dans l'ordre alphabétique ? C'est parce qu'ils sont tous dans l'ordre des codes Asc.

A+
 
Dernière édition:

Discussions similaires

  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
297

Statistiques des forums

Discussions
312 201
Messages
2 086 171
Membres
103 152
dernier inscrit
Karibu