Mise en forme de saisie utilisateur

Description

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.

Codes Sources

A voir également

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.