IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Supprimer les accent dans une chaine


Sujet :

VB 6 et antérieur

  1. #1
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut Supprimer les accent dans une chaine
    Bonjour à tous.

    Je cherche à enlever les accents qui pourraient être dans une chaine de caractère lue dans un TextBox sans avoir à faire des Replace pour chacun des caractères accentués.
    Exemple :
    Si une variable Toto contient "Sébastien" il faut qu'elle devienne "Sebastien".

    Je sais faire de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim Toto As String
     
    Toto = Text1.Text
     
    Toto = Replace(Toto, "é", "e")
    Toto = Replace(Toto, "ô", "o")
    Toto = Replace(Toto, "è", "e")
    ...
    mais je voudrais quelquechose de plus simple et qui fonctionne pour tous les caractères accentués.

    Merci d'avance à ceux qui pourrons m'aider sur ce sujet
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  2. #2
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Je sais pas si ça peut t'aider mais :

    Le code des caractères accentués est une plage de 192 à 255

    Dans cette plage, 198, 208, 215, 216, 222, 223, 230, 240, 247, 248 et 254 ne sont pas des caractères accentués. Donc tu pourrais faire une boucle qui regarde tous les caractères de ta chaîne, et vérifier la plage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Dim i As Integer
    Dim strChar As String
    
    For i = 1 To Len(Chaine)
     strChar = Mid$(Chaine, i, 1)
     
     Select Case Asc(strChar)
      Case 192 To 197
       'Ce sont des "A" accentués
      Case 199
       'Un "Ç"
      Case 200 To 203
       'Ce sont des "E" accentués
      Case 204 To 207
       'Ce sont des "I" accentués
      Case 208
       'C'est un "Ñ"
      Case 210 To 214
       'Ce sont des "O" accentués
      Case 217 To 220
       'Ce sont des "U" accentués
      Case 221
       'C'est un "Ý"
      Case 224 To 229
       'Ce sont des "a" accentués
      Case 231
       'C'est un "ç"
      Case 232 To 235
       'Ce sont des "e" accentués
      Case 237 To 239
       'Ce sont des "i" accentués
      Case 241
       'C'est un "ñ"
      Case 242 To 246
       'Ce sont des "o" accentués
      Case 249 To 252
       'Ce sont des "u" accentués
      Case 253, 255
       'Ce sont des "y" accentués
     End Select
    Next i

    Donc je crois que c'est un moyen "simple" de faire ce que tu désires.

  3. #3
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Je trouve que ton moyen simple est encore plus compliqué que le miens sans vouloir t'offensser mais j'ai peut-être un début de solution grâce à ce que tu viens de me faire remarqué.
    Merci quand même
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  4. #4
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    C'est ce que je me disais, mais en fait je trouve que c'est mieux que de faire 52 Replace ^^

  5. #5
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Très jolie ta solution Jihnn
    voila la mienne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
          SubstOrg = "àéèëêïîöôüûùç'"  ' a compléter si besoin
          SubstDest = "aeeeeiioouuuc " 
          For i = 1 To Len(SubstOrg)
            car = Mid$(SubstOrg, i, 1)
            Posit = InStr(X, car)
            While Posit > 0
              Mid$(X, Posit, 1) = Mid$(SubstDest, i, 1)
              Posit = InStr(X, car)
            Wend
          Next
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Bonjour,

    (juste de passage)

    Quid d'un tableau dynamique avec, en 1ère colonne les caractères accentués et en 2ème colonne leur traduction sans accents, dans le même ordre, puis une boucle sur le tableau en utilisant Replace (avantage : plusieurs mêmes caractères changés d'un seul coup et sans les longueurs d'un mid ou d'un instr) ?

  7. #7
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Bonsoir jmf

    Effectivement,mais ma routine date de QuckBasic2 ,qui n'avait pas le replace.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  8. #8
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Merci de vos réponses, je vais opter pour un Replace combiné à un tableau.

    Merci à vous
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/02/2008, 16h32
  2. Supprimer les accents dans une chaîne
    Par SuperChafouin dans le forum Langage
    Réponses: 4
    Dernier message: 17/12/2007, 17h28
  3. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  4. supprimer les espaces dans une chaine de char
    Par poulette3000 dans le forum Linux
    Réponses: 2
    Dernier message: 17/10/2007, 11h45
  5. Supprimer les espaces dans une chaine de caractères
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 23/07/2007, 22h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo