Formule ou macro pour les caractères spéciaux

Bonjour à tous,

Dans le cadre de mon stage , je dois nettoyer plusieurs bases de données qui ont été exporté avec des caractères spéciaux ( â€, ö, ...) à la place des accents ou alphabet étranger ( comme é , ö , ñ , ß etc .....).

Je le fais donc manuellement avec la fonction "rechercher et remplacer par " mais cela me prend beaucoup de temps.

J'ai cru comprendre que le mieux à faire était d'utiliser une macro pour nettoyer mes fichiers automatiquement cependant je ne m'y connais pas assez pour savoir comment la mettre en place. Les caracteres speciaux se trouvent dans plusieurs colonnes.

Pouvez vous m'aider ?

En vous remerciant par avance

Bonjour et bienvenue ...

Peux-tu poster un fichier excel STP

Voici une solution à tester ...

Function Utf8_Decode(ByVal txt As String) As String
Dim ln As Long, s As String, i As Integer, j As Integer, K As Integer
    For ln = 1 To Len(txt)
        i = Asc(Mid(txt, ln, 1))
        If i > 127 Then
            If Not i And 32 Then
            j = Asc(Mid(txt, ln + 1, 1))
            s = s & ChrW$(((31 And i) * 64 + (63 And j)))
            ln = ln + 1
        Else
            j = Asc(Mid(txt, ln + 1, 1))
            K = Asc(Mid(txt, ln + 2, 1))
            s = s & ChrW$(((i And 15) * 16 * 256) + ((j And 63) * 64) + (K And 63))
            ln = ln + 2
        End If
            Else
            s = s & Chr$(i)
        End If
    Next ln
    Utf8_Decode = s
End Function

Hello Steelson,

Merci pour ton aide,

Je n'arrive malheureusement pas a te joindre le fichier complet car trop volumineux , voici un extrait ou j'ai supprimé des lignes mais qui te donnera une idée. Les caractères spéciaux peuvent se trouver dans la colonne A mais également d'autres colonnes comme la Y.

Puis-je utiliser ta macro pour régler le souci tu penses ?

En te remerciant encore

30food.xlsx (434.09 Ko)

Cela fonctionne avec la macro ci-dessus ...

avant =

capture d ecran 413

après =

capture d ecran 414
Sub decoder()
For Each cel In ActiveSheet.UsedRange
    cel.Value = Utf8_Decode(cel.Value)
Next
End Sub

Function Utf8_Decode(ByVal txt As String) As String
Dim ln As Long, s As String, i As Integer, j As Integer, K As Integer
    For ln = 1 To Len(txt)
        i = Asc(Mid(txt, ln, 1))
        If i > 127 Then
            If Not i And 32 Then
            j = Asc(Mid(txt, ln + 1, 1))
            s = s & ChrW$(((31 And i) * 64 + (63 And j)))
            ln = ln + 1
        Else
            j = Asc(Mid(txt, ln + 1, 1))
            K = Asc(Mid(txt, ln + 2, 1))
            s = s & ChrW$(((i And 15) * 16 * 256) + ((j And 63) * 64) + (K And 63))
            ln = ln + 2
        End If
            Else
            s = s & Chr$(i)
        End If
    Next ln
    Utf8_Decode = s
End Function
70food.xlsm (391.76 Ko)

Top !!

Merci beaucoup pour ton aide

Hello...

J'essaye la macro dans un gros fichier de 20000 et le message " erreur depassement de la capacité " apparait à l'ecran.

Ci-joint photo.

Je suis novice en macro.. qu'est ce que cela signifie ??

macro

Change cette ligne

Dim ln As Long, s As String, i As Integer, j As Integer, K As Integer

en

Dim ln As Long, s As String, i As Long, j As Long, K As Long

EDIT : non ce que je t'ai proposé hier ici ne résoudra pas.

Sais-tu me dire sur quelle phrase cela s'est arrêté ?

le code n'est pas de mon cru mais il fonctionne sur le fichier que tu avais posté

Essaie cette autre version

172food-1.xlsm (396.05 Ko)

Ça fonctionne à merveille !

Merci beaucoup pour ton aide Steelson

Je précise qu les macros ne sont pas de mon cru ... je les ai relevées au passage de mes lectures.

Rechercher des sujets similaires à "formule macro caracteres speciaux"