Je cherche à remplacer toutes les lettres qui sont accentuées dans les cellules de ma feuille courante par la même lettre non accentuée.
Avez vous une idée pour faire ça simplement ?
@+ philippe
FS
Bonjour,
Je pense qu'il faut passer par une fonction perso en VBA. Parmi de nombreuses propositions, celle-ci, signée D. Maher, s'utilise aussi bien dans du code que dans une feuille de calcul :
' Début code ****************(dans un module ordinaire) Const Avec_Accent$ = _ "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿ" Const Sans_Accent$ = _ "AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiinnooooouuuuyy"
Sub test() MsgBox CSA("là-bas, j'élève l'événement à loisir") End Sub
' Caractères Sans Accents : CSA ' Daniel M., mpfe Function CSA(cell1 As String) As String CSA = MultiSubstitute(cell1, Avec_Accent, Sans_Accent) End Function
'MultiSubstitute 'In an InputStr, replaces all chars belonging to ToBeReplacedChars 'by the corresponding chars in ByChars 'ToBeReplacedChars and ByChars should be of the same length 'or else it removes the found chars 'Returns the string with the characters replaced (or removed) 'By Daniel M. Function MultiSubstitute(InputStr As String, _ ToBeReplacedChars As String, ByChars As String) As String
Dim s As String, i As Integer Dim anOffset As Integer, len_Input As Integer, len_ByChars As Integer
len_Input = Len(InputStr) len_ByChars = Len(ByChars) For i = 1 To len_Input s = Mid(InputStr, i, 1) anOffset = InStr(ToBeReplacedChars, s) If anOffset > 0 Then If anOffset <= len_ByChars Then MultiSubstitute = MultiSubstitute & _ Mid(ByChars, anOffset, 1) End If Else MultiSubstitute = MultiSubstitute & s End If Next End Function ' Fin du code ****************
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
Gouap a écrit :
Bonjour,
Je cherche à remplacer toutes les lettres qui sont accentuées dans les cellules de ma feuille courante par la même lettre non accentuée.
Avez vous une idée pour faire ça simplement ?
@+ philippe
Bonjour,
Je pense qu'il faut passer par une fonction perso en VBA. Parmi de
nombreuses propositions, celle-ci, signée D. Maher, s'utilise aussi bien
dans du code que dans une feuille de calcul :
' Début code ****************(dans un module ordinaire)
Const Avec_Accent$ = _
"ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿ"
Const Sans_Accent$ = _
"AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiinnooooouuuuyy"
Sub test()
MsgBox CSA("là-bas, j'élève l'événement à loisir")
End Sub
' Caractères Sans Accents : CSA
' Daniel M., mpfe
Function CSA(cell1 As String) As String
CSA = MultiSubstitute(cell1, Avec_Accent, Sans_Accent)
End Function
'MultiSubstitute
'In an InputStr, replaces all chars belonging to ToBeReplacedChars
'by the corresponding chars in ByChars
'ToBeReplacedChars and ByChars should be of the same length
'or else it removes the found chars
'Returns the string with the characters replaced (or removed)
'By Daniel M.
Function MultiSubstitute(InputStr As String, _
ToBeReplacedChars As String, ByChars As String) As String
Dim s As String, i As Integer
Dim anOffset As Integer, len_Input As Integer, len_ByChars As Integer
len_Input = Len(InputStr)
len_ByChars = Len(ByChars)
For i = 1 To len_Input
s = Mid(InputStr, i, 1)
anOffset = InStr(ToBeReplacedChars, s)
If anOffset > 0 Then
If anOffset <= len_ByChars Then
MultiSubstitute = MultiSubstitute & _
Mid(ByChars, anOffset, 1)
End If
Else
MultiSubstitute = MultiSubstitute & s
End If
Next
End Function
' Fin du code ****************
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Gouap a écrit :
Bonjour,
Je cherche à remplacer toutes les lettres qui sont accentuées dans les
cellules de ma feuille courante par la même lettre non accentuée.
Je pense qu'il faut passer par une fonction perso en VBA. Parmi de nombreuses propositions, celle-ci, signée D. Maher, s'utilise aussi bien dans du code que dans une feuille de calcul :
' Début code ****************(dans un module ordinaire) Const Avec_Accent$ = _ "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿ" Const Sans_Accent$ = _ "AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiinnooooouuuuyy"
Sub test() MsgBox CSA("là-bas, j'élève l'événement à loisir") End Sub
' Caractères Sans Accents : CSA ' Daniel M., mpfe Function CSA(cell1 As String) As String CSA = MultiSubstitute(cell1, Avec_Accent, Sans_Accent) End Function
'MultiSubstitute 'In an InputStr, replaces all chars belonging to ToBeReplacedChars 'by the corresponding chars in ByChars 'ToBeReplacedChars and ByChars should be of the same length 'or else it removes the found chars 'Returns the string with the characters replaced (or removed) 'By Daniel M. Function MultiSubstitute(InputStr As String, _ ToBeReplacedChars As String, ByChars As String) As String
Dim s As String, i As Integer Dim anOffset As Integer, len_Input As Integer, len_ByChars As Integer
len_Input = Len(InputStr) len_ByChars = Len(ByChars) For i = 1 To len_Input s = Mid(InputStr, i, 1) anOffset = InStr(ToBeReplacedChars, s) If anOffset > 0 Then If anOffset <= len_ByChars Then MultiSubstitute = MultiSubstitute & _ Mid(ByChars, anOffset, 1) End If Else MultiSubstitute = MultiSubstitute & s End If Next End Function ' Fin du code ****************
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
Gouap a écrit :
Bonjour,
Je cherche à remplacer toutes les lettres qui sont accentuées dans les cellules de ma feuille courante par la même lettre non accentuée.