Macro supprimer accents excel
TOT127
Messages postés
898
Date d'inscription
Statut
Membre
Dernière intervention
-
thev Messages postés 1987 Date d'inscription Statut Membre Dernière intervention -
thev Messages postés 1987 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaye d'utiliser cette macro pour supprimer les accents d'une énnorme feuille excel (accents en deux langues, donc plus nombreux qu'en français):
Je ne sais pas ce que je fais de travers, mais ça ne fonctionne pas. Je suis sur excel 2011 et peu compétant en macro. Je vais dans VBA, tape le code et dis d'exécuter, mais rien n'y fait. Je vais devoir me former sérieusement...
dans l'urgence là, auriez vous une idée ?
Merci
J'essaye d'utiliser cette macro pour supprimer les accents d'une énnorme feuille excel (accents en deux langues, donc plus nombreux qu'en français):
Function SupprimerAccents(ByVal sChaine As String) As String
Dim sTmp As String, i As Long, p As Long
Const sCarAccent As String = "ÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöùúûüýÿ"
Const sCarSansAccent As String = "AAAAACEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyy"
sTmp = sChaine
For i = 1 To Len(sTmp)
p = InStr(sCarAccent, Mid(sTmp, i, 1))
If p > 0 Then Mid$(sTmp, i, 1) = Mid$(sCarSansAccent, p, 1)
Next i
SupprimerAccents = sTmp
End Function
Je ne sais pas ce que je fais de travers, mais ça ne fonctionne pas. Je suis sur excel 2011 et peu compétant en macro. Je vais dans VBA, tape le code et dis d'exécuter, mais rien n'y fait. Je vais devoir me former sérieusement...
dans l'urgence là, auriez vous une idée ?
Merci
A voir également:
- Excel supprimer accents sans macro
- Supprimer rond bleu whatsapp - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Supprimer page word - Guide
- Word et excel gratuit - Guide
2 réponses
Bonjour,
En vous relisant, je pense que vous devez comprendre la différence entre une fonction et une macro.
Une macro est une procédure "Sub" qui s'exécute sur demande via un bouton ou via un événement intervenant sur le classeur.
La fonction est une procédure "Function" qui est
- soit entrée comme formule dans une cellule de la feuille d'un classeur et qui est exécutée à chaque recalcul de la feuille,
- soit utilisée dans une macro.
Si vous voulez une macro, il faut alors rajouter une procédure "Sub", qui vous permettra de supprimer tous les accents de la feuille active.
En vous relisant, je pense que vous devez comprendre la différence entre une fonction et une macro.
Une macro est une procédure "Sub" qui s'exécute sur demande via un bouton ou via un événement intervenant sur le classeur.
La fonction est une procédure "Function" qui est
- soit entrée comme formule dans une cellule de la feuille d'un classeur et qui est exécutée à chaque recalcul de la feuille,
- soit utilisée dans une macro.
Si vous voulez une macro, il faut alors rajouter une procédure "Sub", qui vous permettra de supprimer tous les accents de la feuille active.
Sub supp_accents_feuille()
Dim cellule As Range
For Each cellule In ActiveSheet.UsedRange.Cells
cellule.Value = SupprimerAccents(cellule.Value)
Next
End Sub
Function SupprimerAccents(ByVal sChaine As String) As String
Dim sTmp As String, i As Long
Dim traduction_accents()
Dim accents() As String
traduction_accents = Array("Á/A", "Â/A", "Ã/A", "Ä/A", "Å/A", "Ç/C", "È/E", "É/E", "Ê/E", "Ë/E", "Ì/I", "Í/I", "Î/I", "Ï/I", _
"Ñ/N", "Ò/O", "Ó/O", "Ô/O", "Õ/O", "Ö/O", "Ù/U", "Ú/U", "Û/U", "Ü/U", "Ý/Y", "à/a", "á/a", "â/a", _
"ã/a", "ä/a", "å/a", "ç/c", "è/e", "é/e", "ê/e", "ë/e", "ì/i", "í/i", "î/i", "ï/i", "ñ/n", "ò/o", _
"ó/o", "ô/o", "õ/o", "ö/o", "ù/u", "ú/u", "û/u", "ü/u", "ý/y", "ÿ/y")
sTmp = sChaine
For i = 0 To UBound(traduction_accents)
accents = Split(traduction_accents(i), "/")
sTmp = Replace(sTmp, accents(0), accents(1))
Next i
SupprimerAccents = sTmp
End Function
Ceci sera mieux
Function SupprimerAccents(ByVal sChaine As String) As String
Dim sTmp As String, i As Long
Dim traduction_accents()
Dim accents() As String
traduction_accents = Array("Á/A", "Â/A", "Ã/A", "Ä/A", "Å/A", "Ç/C", "È/E", "É/E", "Ê/E", "Ë/E", "Ì/I", "Í/I", "Î/I", "Ï/I", _
"Ñ/N", "Ò/O", "Ó/O", "Ô/O", "Õ/O", "Ö/O", "Ù/U", "Ú/U", "Û/U", "Ü/U", "Ý/Y", "à/a", "á/a", "â/a", _
"ã/a", "ä/a", "å/a", "ç/c", "è/e", "é/e", "ê/e", "ë/e", "ì/i", "í/i", "î/i", "ï/i", "ñ/n", "ò/o", _
"ó/o", "ô/o", "õ/o", "ö/o", "ù/u", "ú/u", "û/u", "ü/u", "ý/y", "ÿ/y")
sTmp = sChaine
For i = 0 To UBound(traduction_accents)
accents = Split(traduction_accents(i), "/")
sTmp = Replace(sTmp, accents(0), accents(1))
Next i
SupprimerAccents = sTmp
End Function