La saisie "libre" pose souvent des problèmes, du fait des "variations" orthographiques, d'un utilisateur à l'autre.
La fonction suivante, très simple (voire simplistes) permet de :
- remplacer tout caractère accentué par son équivalent sans accent (fonction "SansAccent")
- supprimer tout blanc (fonction "SansBlanc")
Elle n'esr pas limitative (on aurait pu, par exemple remplacer les "ç" par "c") etc..
Source / Exemple :
' REDLUPUS 2004 : Petites procédures de mise en forme d'un texte (typiquement :
' saisie utilisateur) pour s'affranchir de certaines variations orthographiques.
' =============================================================
Public Function MiseEnForme(ByVal S As String, _
Optional ByVal C As String = "AB") As String
' -------------------------------------------------------------
' mise en forme du texte saisi, suivant une chaîne de traitement
' (optionnelle) fournie
' S chaîne à mettre en forme
' C traitement de mise en forme
' par défaut : "AB"
' "A" suppression des accents
' "B" suppression de tous les blancs
' ATTENTION : La chaîne d'origine est convertie en minuscules.
' =============================================================
Const O As String = "àâäèéêëïîôöüùû" ' caractères accentués à remplacer
Const N As String = "aaaeeeeiioouuu" ' caractères de remplacement
Dim I As Byte ' indice de boucle (sur "O")
Dim K As Byte ' indice de boucle (sur "C")
For K = 1 To Len(C)
Select Case UCase$(Mid$(C, K, 1))
Case "A":
For I = 1 To Len(O)
Let S = Replace(LCase$(S), _
Mid$(O, I, 1), _
Mid$(N, I, 1), , , vbTextCompare)
Next I
Case "B":
Let S = Replace(Trim$(S), " ", vbNullString, , , vbTextCompare)
'... Ici, ajout d'autres traitements possibles, suivant les besoins
End Select
Next K
MiseEnForme = S
End Function
Conclusion :
Merci pour les commentaires. Pourquoi ne pas utiliser "Replace" ? A vrai dire, je n'en sais rien... Alzheimer me guette !
Alors, j'ai revu ma copie, en essayant de ne plus enfoncer des portes ouvertes.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.