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

IHM Discussion :

remplacement caractères accentués dans une table


Sujet :

IHM

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut remplacement caractères accentués dans une table
    bonjour à tous,

    je mets régulièrement à jour des tables à partir de fichiers Excel collectés dans différents services de la société. Ces tables contiennent les identités de différentes catégories d'employés, et donc un turn over régulier qui impose ces mises à jour.
    Le problème est que ces noms et prénoms contiennent des caractères accentués qui gênent la fonction "auto complète" d'une liste déroulante dans un form de saisie.
    J'ai bien sûr trouvé ici quelques fonctions se rapprochant de ma problématique et un article intéressant sur les regex, mais c'est vraiment trop hard pour mes neurones.

    A l'ouverture de ce formulaire chaque table est importée dans une table temporaire contenant toutes ces identités via plusieurs requêtes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sql = "INSERT INTO Tbl_TempEmployes( Identite ,Qualite ) SELECT Identite, Qualite FROM SrvEntretien ;"
    DoCmd.RunSQL sql
    sql = "INSERT INTO Tbl_TempEmployes( Identite ,Qualite ) SELECT Identite, Qualite FROM SrvMaintenance;"
    DoCmd.RunSQL sql
    sql = "INSERT INTO Tbl_TempEmployes( Identite ,Qualite ) SELECT Identite, Qualite FROM SrvDRH;"
    DoCmd.RunSQL sql
    etc.....
    Après ces importations, comment puis-je remplacer automatiquement les caractères accentués avec un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    identite = Replace(identite, "é", "e")
    PS : les identités sont une concaténation Nom/Prenom.

  2. #2
    Membre Expert Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 406
    Par défaut
    Bonjour,

    La réponse se trouve, comme bien souvent dans la ici.

    A+

  3. #3
    Invité
    Invité(e)
    Par défaut
    merci Gabout,

    dans un 1er temps, j'ai pu filtrer la source du form comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RecordSource = "SELECT * FROM employes WHERE identite like ""*é*"" ;"
    ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     identite = Replace(identite, "é", "e")
    remplace bien le "é" par un "e" mais uniquement sur le 1er enregistrement
    Dernière modification par Invité ; 08/11/2008 à 20h06.

  4. #4
    Membre chevronné Avatar de ypicot
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 412
    Par défaut
    Tu peux passer par de l'itératif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    rst = OpenRecordSet (...)
    Do While Not rst.EOF
      Identite = rst("Identite")
      Identite = replace(Identite, "é", "e")
      Identite = replace(Identite, "è", "e")
      ...
      rst("Identite") = Identite
    Loop
    Je te laisse ajouter les .update, modifier si tu utilises l'ADO, ...

    Yvan

  5. #5
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Tu pourrais tout "simplement"
    1- te faire une fonction de remplacement. Par exemple, quelque chose comme cela :
    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
    Function CleanAccents(ByVal myChaine As String) As String
        Dim lngNum  As Long     'numéro du caractère en cours de traitement
        Dim blnMaj  As Boolean  'VRAI si le caractère sélectionné est en majuscule
        For lngNum = 1 To Len(myChaine)
            blnMaj = Asc(UCase(Mid(myChaine, lngNum, 1))) = Asc(Mid(myChaine, lngNum, 1))
            Select Case LCase(Mid(myChaine, lngNum, 1))
                Case "à", "â", "ä"              'tous les a accentués
                    Mid(myChaine, lngNum, 1) = IIf(blnMaj, "A", "a")
                Case "é", "è", "ê", "ë"         'tous les e accentués
                    Mid(myChaine, lngNum, 1) = IIf(blnMaj, "E", "e")
                Case "î", "ï"                   'tous les i accentués
                    Mid(myChaine, lngNum, 1) = IIf(blnMaj, "I", "i")
                Case "ô", "ö"                   'tous les o accentués
                    Mid(myChaine, lngNum, 1) = IIf(blnMaj, "O", "o")
                Case "ù", "û", "ü"              'tous les u accentués
                    Mid(myChaine, lngNum, 1) = IIf(blnMaj, "U", "u")
                Case "ÿ"                        'tous les y accentués
                    Mid(myChaine, lngNum, 1) = IIf(blnMaj, "Y", "y")
                Case Else                       'sinon
                    'rien à faire
            End Select
        Next
        CleanAccents = myChaine
    End Function
    2-Et ensuite, en une simple requête de mise à jour modifier d'un coup tous tes champs sans itération.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci à tous les deux, je vais essayer de me dépatouiller avec les 2 solutions proposées, je vous tiens au courant.

Discussions similaires

  1. [MySQL] Transformation des caractères accentués dans une table
    Par betadev dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/01/2012, 11h58
  2. Réponses: 3
    Dernier message: 25/02/2009, 15h59
  3. Remplacer les caractères accentués dans une chaine
    Par shaun_the_sheep dans le forum Général Java
    Réponses: 5
    Dernier message: 07/05/2008, 10h41
  4. Réponses: 2
    Dernier message: 08/08/2007, 15h32
  5. Réponses: 4
    Dernier message: 10/04/2007, 11h10

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