Supprimer caractères spéciaux [Résolu]

Signaler
-
Messages postés
7
Date d'inscription
vendredi 28 août 2015
Statut
Membre
Dernière intervention
21 février 2020
-
Bonjour le Forum,

J'ai besoin d'extraire les données d'une table qui contient des caractères spéciaux et des accents et je ne parviens pas à trouver une méthode infaillible pour "nettoyer" l'extraction".

En clair, je ne dois exporter que des lettres non accentuées et des chiffres : a-z, 0-9, A-Z.

Auriez-vous une piste pour me sortir de cette galère ?

Merci pour votre aide, votre temps et bonne fin de journée à tous.

Farid

6 réponses

Messages postés
11508
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 juillet 2020
659
bonjour,
comment fais-tu l'extraction?
veux-tu éliminer les caractères accentués, ou les remplacer par le caractère non accentué correspondant?
une méthode possible est d'écrire et d'utiliser une fonction VBA qui fait le nettoyage d'une chaîne de caractères.
Messages postés
7
Date d'inscription
vendredi 28 août 2015
Statut
Membre
Dernière intervention
21 février 2020

Bonjour,

Merci pour ton intérêt.

J'ai trouvé une fonction VBA pour supprimer les accents et les remplacer par le même caractère non accentué.

Dans un second temps, j'aimerais supprimer tous les caractères spéciaux sans les remplacer (@, %, #...).

Si tu as une fonction VBA pour faire ça, je prends.

Encore merci,

Farid
Messages postés
11508
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 juillet 2020
659
le plus simple est peut-être d'adapter la première fonction.
peux-tu la partager?
Messages postés
7
Date d'inscription
vendredi 28 août 2015
Statut
Membre
Dernière intervention
21 février 2020

Je vais faire mieux que ça, j'ai obtenu une réponse qui répond à toutes les problématiques sur un autre forum donc je la partage avec vous, ça pourrait servir (encore un grand MERCI à Micniv) :

Public Function CharAllowed(ByVal s As String) As String
' 2020-02-20 MN Création

Dim s1 As String, i As Integer, s2 As String

If Len(s) > 0 Then
s = ChaineSansAccent(s)

s1 = "0123456789abcçdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
s2 = ""
For i = 1 To Len(s)
If InStr(1, s1, CStr(Mid(s, i, 1)), 0) = 0 Then
Debug.Print "Le caractère '" & Mid$(s, i, 1) & "' n'est pas autorisé"
Else
s2 = s2 + Mid(s, i, 1)
End If
Next i
CharAllowed = s2
End If

End Function

Private Function ChaineSansAccent(ByVal s As String) As String
' 2020-02-20 MN
Dim s1 As String, s2 As String, i As Long

s1 = "àâáãäåéèêëïîìíöôðòóüûùúñçÿÀÁÂÃÄÅÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜ"
s2 = "aaaaaaeeeeiiiiooooouuuuncyAAAAAAEEEEIIIIOOOOOUUUU"
For i = 1 To Len(s1)
s = Replace(s, Mid$(s1, i, 1), Mid$(s2, i, 1))
Next i
ChaineSansAccent = s
End Function


Que tu peux exploiter pour nettoyer une colonne champ1 dans une requete UPDATE :
UPDATE Table1 SET Champ1 = CharAllowed ([Champ1] )
Messages postés
11508
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 juillet 2020
659
pas très sympa de lancer des demandes ainsi sur plusieurs forums.
peux-tu marquer la discussion comme résolue?
Messages postés
7
Date d'inscription
vendredi 28 août 2015
Statut
Membre
Dernière intervention
21 février 2020

Honnêtement, je ne vois pas ce qu'il y a de "pas très sympa" dans cette démarche. Cela pourra servir à davantage de personnes.

J'ai marqué le sujet comme résolu.

Encore merci à toi et bonne soirée ????
Messages postés
11508
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 juillet 2020
659
je pense que c'est un manque de respect de faire travailler les membres d'un forum sans les informer que tu as également demandé de l'aide aux membres d'un autre forum.
Messages postés
7
Date d'inscription
vendredi 28 août 2015
Statut
Membre
Dernière intervention
21 février 2020

Je ne partage pas du tout ce point de vue mais je peux le comprendre.

Désolé à tous ceux que j'ai pu déranger.

Bon week-end,

Farid
Messages postés
11508
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 juillet 2020
659
la prochaine fois que tu fais un doublon, si tu peux informer chaque forum, ce serait plus sympa.
Messages postés
7
Date d'inscription
vendredi 28 août 2015
Statut
Membre
Dernière intervention
21 février 2020

Mieux que ça : je ne ferai plus aucun doublon ;-)