begin process at 2012 05 26 07:02:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > VB6 - SUPPRIMER LES ACCENTS D'UNE CHAÎNE

VB6 - SUPPRIMER LES ACCENTS D'UNE CHAÎNE


 Information sur la source

Note :
5,71 / 10 - par 7 personnes
5,71 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Texte Classé sous :supprimer, accents, chaine Niveau :Débutant Date de création :05/09/2005 Date de mise à jour :29/11/2005 08:38:54 Vu :25 632

Auteur : Zlub

Ecrire un message privé
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Suite, à une question du Forum, voici, une petite fonction pour supprimer les accents d'une chaîne.

A vous d'ajouter les autres possibilitées d'accentuations, le mécanisme étant simple à adapter à vos besoins.

Source

  • ' Définition de la conversion
  • Const accent As String = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç"
  • Const noAccent As String = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc"
  • ' La fonction :
  • Private Function sansAccents(ByRef s As String) As String
  • Dim i As Integer
  • Dim lettre As String * 1
  • sansAccents = s
  • For i = 1 To Len(accent)
  • lettre = Mid$(accent, i, 1)
  • If InStr(sansAccents, lettre) > 0 Then
  • sansAccents = Replace(sansAccents, lettre, Mid$(noAccent, i, 1))
  • End If
  • Next i
  • End Function
  • ' Exemple d'utilisation :
  • Private Sub Form_Load()
  • Dim demo As String
  • demo = "L'été, je vais sur l'île où y'a la fête jusqu'à l'aube et" & _
  • " je hurle: YÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÙÚÛÜùúûü ... "
  • Debug.Print demo & vbCrLf & " => " & sansAccents(demo)
  • End Sub
' Définition de la conversion
Const accent As String   = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç"
Const noAccent As String = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc"

' La fonction :
Private Function sansAccents(ByRef s As String) As String
Dim i As Integer  
Dim lettre As String * 1
  sansAccents = s
  For i = 1 To Len(accent)
    lettre = Mid$(accent, i, 1)
    If InStr(sansAccents, lettre) > 0 Then
       sansAccents = Replace(sansAccents, lettre, Mid$(noAccent, i, 1))
    End If
  Next i
End Function 


' Exemple d'utilisation :
Private Sub Form_Load()
  Dim demo As String
  demo = "L'été, je vais sur l'île où y'a la fête jusqu'à l'aube et" & _
         " je hurle: YÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÙÚÛÜùúûü ... "
  Debug.Print demo & vbCrLf & " => " & sansAccents(demo)
End Sub

 Conclusion

++

Zlub


 Historique

06 septembre 2005 12:48:44 :
Utilisation plus explicite des types.
06 septembre 2005 12:55:40 :
Modification des chaînes de conversion
06 septembre 2005 14:40:14 :
Petite modif de l'exemple et test avant replace
06 septembre 2005 15:42:35 :
Ortographe
06 septembre 2005 15:45:37 :
-
07 septembre 2005 08:00:48 :
Suppression de la variable Max ( =len(s) )
29 novembre 2005 08:38:54 :
saisi des mots clés

 Sources du même auteur

TESTER NUMÉRO TVA INTRA-COMMUNAUTAIRE
VBS - DETECTER, OUVRIR, FERMER LES LECTEURS DE CD
Source avec Zip CONNEXION ADO ACCESS + FONCTIONS OUTILS
TESTER LA VERSION DU MDAC INSTALLÉ
SELECTION D'UN CHAMP D'UNE COMBO SIMPLE À PARTIR D'UNE SAISI...

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) FABRIQUEUR DE STATUTS/MESSAGES SPÉCIAUX par pablo836
Source avec Zip Source avec une capture MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source .NET (Dotnet) COMPTEUR DE NOMBRE DE MOTS DANS UN TEXTE par alpha5
Source avec Zip Source avec une capture HM - BLOCNOTE par hassenmajor
Source .NET (Dotnet) [VB.NET] CLASS DE COLORATION SYNTAXIQUE "ON THE FLY" par huzima

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) AJOUTER - MODIFIER - SUPPRIMER DANS UNE BDD ACCESS SOUS VB20... par kewan
SUPPRIMER UN ITEM DANS UN TABLEAU EN LE PARCOURANT UNE SEULE... par andalo
Source avec Zip Source avec une capture ( CHANGER / AJOUTER/ SUPPRIMER ) LA LANGUE DU CLAVIER DANS ... par chieur
CHAÎNE ALÉATOIRE / RANDOM STRING par mizoz
SUPPRESSION DE CARACTÈRES DANS UN STRING par Jean_Elens

Commentaires et avis

Commentaire de Patrice99 le 06/09/2005 08:39:51

La programmation est élégante, mais cette fonction présente l'inconvénient de ne pas conserver les majuscules, si je ne me trompe. Et du coup, on est obligé de faire une série de if pour en tenir compte.

Commentaire de sebmafate le 06/09/2005 08:59:43 administrateur CS

moi ce qui me dérange le plus c'est bien les $, % et autres & dans la déclaration des variables. ca enlèvre à la compréhension du code.
bref préférez toujours les string, long... c'est plus long à écrire mais on comprends plus vite.

Commentaire de Zlub le 06/09/2005 12:51:23

patrice99 : Il suffit de définir avec les majuscules et c'est bon par exemple le ÀÂÄ
sebmafate : oki c'est modifié

Commentaire de Patrice99 le 06/09/2005 13:49:58

Je vais tester cela, si ca marche, c'est top !
(j'avais déjà constaté que les recherches de chaine ne tiennent pas compte de la casse, mais je vais ressayer avec Replace)

Commentaire de Renfield le 07/09/2005 07:40:57 administrateur CS

Bien que cela ne change rien sur le principe, ni sur l'algo, coté performance, on preferera :

' La fonction :
Private Function sansAccents(ByRef s As String) As String
Dim i As Integer  
Dim lettre As String * 1
  sansAccents = s
  For i = 1 To Len(accent)
    lettre = Mid$(accent, i, 1)
    If InStr(sansAccents, lettre) > 0 Then
sansAccents = Replace(sansAccents, lettre, Mid$(noAccent, i, 1))
    End If
  Next i
End Function

En effet, il est preferable de passer les chaînes de caractère par référence.
le calcul du Max est inutile ici : l'instruction de fin de boucle n'est pas réévalué dans les boucles For (c'est le cas avec un While)

Pour la casse, pas grand chose à dire.... les constantes ont été modifiées, et tiennent compte des majuscules... (belle réactivité)

Commentaire de offsprings007 le 07/07/2008 10:50:24

Bonjour, je suis nouveau sur le forum et je souhaiterais appliquer ce code dans mon classeur Excel. Cependant, je n'ai encore jamais utilisé VBA. J'ai tenté d'insérer le code dans un module et dans "This Workbook" mais ensuite, la fonction n'est pas reconnue sous Excel. Pourriez-vous m'aiguiller ?

Merci d'avance.

Commentaire de PCPT le 07/07/2008 11:42:04 administrateur CS

salut,

copie les lignes 1 à 16 dans un module standard
remplace 'Const' par 'Private Const' (lignes 2 et 3)
remplace 'Private Function' par 'Public Function' (ligne 6)


ensuite dans ton classeur, disons que ta chaine avec accents est en A1
en A2 tu mets '=sansAccents(A1)'

tout çà sans les apostrophes bien sûr

le code est alors valable pour VBA
++

Commentaire de meliokan le 13/12/2009 09:47:42

Excellent programme.

je l'ai adapté pour supprimer les accents en temps réel dans une textbox.

...et ca fonctionne parfaitement.

Bravo

Commentaire de Renfield le 14/12/2009 07:39:26 administrateur CS

pense a effectuer le changement également quand tu colles du texte dans ta box ^^

Commentaire de GMY le 04/08/2010 10:39:57

Bonjour,

Proposition d'un petit ajout et d'une légère restructuration dans la définition de la conversion au niveau des Y :

Const accent As String = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûü¾ÿÑñÇç"
Const noAccent As String = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuYyNnCc"

C'est une fonction très élégante pour résoudre ce problème.

GM

Commentaire de cirec le 04/08/2010 10:56:38 administrateur CS

il y a aussi ceci :
http://www.codyx.org/snippet_modifie-caracteres-speciaux_154.aspx#496
@++

Commentaire de lagoutelle le 27/07/2011 16:56:31

Bonjour,
Pour que les minuscules accentuées ne soient pas remplacées par des Majuscules
Sous Access, l'Option Compare Database étant défaut, il faut s'assurer
que l'Option Compare Binary soit indiquée en entète du module .


Option Explicit
Option Compare Binary

' La fonction :

Private Function sansAccents(ByRef s As String) As String
Const accent As String = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç"
Const noaccent As String = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc"

Dim i As Integer
    Dim lettre As String * 1
    sansAccents = s
    For i = 1 To Len(accent)
        lettre = Mid$(accent, i, 1)
        If InStr(sansAccents, lettre) > 0 Then
            sansAccents = Replace(sansAccents, lettre, Mid$(noaccent, i, 1))
            'Debug.Print lettre & " " & Mid$(noaccent, i, 1)
            'Debug.Print sansAccents
        End If
Next i

End Function

' Exemple d'utilisation :
Private Sub Form_Load()
    Dim demo As String
    demo = "L'été, je vais sur l'île où y'a la fête jusqu'à l'aube et" & _
    " je hurle: YÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÙÚÛÜùúûü ... "
    Debug.Print "Origine    => " & demo
    Debug.Print "Majuscule  => " & UCase(demo)
    Debug.Print "O Accent   => " & sansAccents(demo)
    Debug.Print "O Accent M => " & UCase(sansAccents(demo))

End Sub

Cordialement
LG

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Supprimer les caractères non imprimable d'une chaine [ par nihaoma ] Bonjour,Dans un programme que je suis en train de faire, j'extrait une chaine de caractère d'un fichier binaire, le pb c'est que cette chaine comporte Supprimer une chaine de caratere inconnue [ par PaTaTe ] Je m'explique.Avec une application de ma conception (faisant appel a un autre programme), j'obtiens un listing et sur chaque fin de ligne de ce listin Supprimer l'apostrophe dans une chaine de caractere [ par ramm50 ] Salut tout le monde,je suis entrain d'ecrire un programme qui insert dans une BD une chaine de caractère recupéré d'un champ texte .le problème c'est Supprimer le dernier caractères d'une chaine [ par Eric25 ] Bonjour,Je voudrais juste savoir comment supprimer le dernier caractères d'une chaine.Désolé pour la simplicité de la question. Je supprimer chaine de caractéres en connaissant que le début et la longeur total [ par mauris ] Bonjour, j'ai fais un petit prog qui récoltes des infos d'une page web. Mais j'ai un petit souci que je vais vous faire voir avec un exemple :Dan comment supprimer des espace vide dans une chaine [ par DraaFil ] Bonjour a tous, je cherche commnet supprimer les espace vide fans une chaine de caractere. ex: "bonjour a toi" avec espace    &nbs chaine de carractère et fichier [ par gaiawasbill ] bonjourje voudrais savoir si il existe un module qui permet de supprimer les lignes d'un fichier texte,y compris les lignes vides. Si il n'en existe p supprimer caractere début de chaine dans acces [ par raro ] Salut à tous! J'ai cherché la solution sur le site mais je n'ai pas trouvé. Voici mon problème: Je voudrais supprimer les premi Supprimer une chaine [ par veler ] Bonjours, je cherche à supprimer un chaine de caractères sachant que je connais cette chaine.exemple:j'ai la chaine suivante:C:\MonDossier\MonFichierj Supprimer de ligne dans un texte avant une chaine spécifiée [ par FkB ] Bonjour,je cherche, en vbs, à supprimer dans un fichier, toutes les lignes qui se trouvent avant une chaîne de caractères spécifiée dans le vbs.Pouvez


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales