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

VBA Access Discussion :

Normalisation d'une table : sans accents & caractères spéciaux


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 30
    Points
    30
    Par défaut Normalisation d'une table : sans accents & caractères spéciaux
    Bonjour,

    Je dois "Normaliser" des tables dans ma base Access.
    Ici, le terme "Normaliser" ne fait pas référence à la Normalisation 3NF & cie mais à faire en sorte que ma table ne comprenne que des majuscules et ne comportent pas d'accent.

    Mon code contenu dans un de mes modules. Pour le moment, je me suis limitée à la conversion d'un champs et malgré cela, ça ne fonctionne pas.

    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
    42
    43
    44
    45
    46
    47
    48
    49
     
    ublic Function sansAccent(ByVal Chaine As String, EnMinuscule As Boolean) As String
     
    Chaine = UCase(Chaine)
    Chaine = Replace(Chaine, Chr(232), "e")
    Chaine = Replace(Chaine, Chr(233), "e")
    Chaine = Replace(Chaine, Chr(234), "e")
    Chaine = Replace(Chaine, Chr(235), "e")
    Chaine = Replace(Chaine, Chr(249), "u")
    Chaine = Replace(Chaine, Chr(250), "u")
    Chaine = Replace(Chaine, Chr(251), "u")
    Chaine = Replace(Chaine, Chr(242), "o")
    Chaine = Replace(Chaine, Chr(244), "o")
    Chaine = Replace(Chaine, Chr(254), "o")
    Chaine = Replace(Chaine, Chr(255), "y")
    Chaine = Replace(Chaine, Chr(224), "a")
    Chaine = Replace(Chaine, Chr(225), "a")
    Chaine = Replace(Chaine, Chr(226), "a")
    Chaine = Replace(Chaine, Chr(238), "i")
    Chaine = Replace(Chaine, Chr(239), "i")
    Chaine = Replace(Chaine, Chr(244), "o")
    If EnMinuscule Then Chaine = LCase(Chaine)
    sansAccent = Chaine
     
    End Function
     
     
    Public Sub Norm()
     
        Dim rst As DAO.Recordset
        Dim strSql As String
        Dim strPrenom As String
        Set rst = CurrentDb.OpenRecordset("Test")
     
       While Not rst.EOF
                    ' mise à jour
                    rst.Edit
                    strPrenom = rst("Prénom")
     
               DoCmd.RunSQL "SELECT  [Prénom] FROM Test WHERE " & strPrenom & " =sansaccent(" & strPrenom & ",true)"
     
            rst.Update
            rst.MoveNext
        Wend
     
        rst.Clone
        Set rst = Nothing
     
    End Sub

    Mon problème se situe à ce niveau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.RunSQL "SELECT  [Prénom] FROM Test WHERE " & strPrenom &" =sansaccent(" & strPrenom & ",true)"
    La fonction fonctionne pour une chaine de caractère et je force la saisie avec une variable String.

    Si vous aviez une piste pour étendre cette "Normalisation à toute ma table" ?
    J'ai essayé plusieurs solutions sans succès.

    Merci pour votre aide.

    Cordialement,

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Bonjour,

    Tu pourrais faire une requête de mise à jour sur ton champ en utilisant ta fonction ? Mais bon tu dis que tu as déjà essayé des solutions donc je pense que tu as déjà essayé?

    Cordialement.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    Merci de ta réponse !

    Non, je n'ai pas réussi non plus.

    Cordialement,

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Je vois pas d'autres solutions que de passer par une mise à jour.
    Ca me surprend un peu que ça ne fonctionne pas si tu es sur que ta fonction est correcte.
    Normalement quelque chose du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Docmd.RunSQL "Update Test SET Test.[Prénom]=sansAccent(Test.[Prénom],true);"
    devrait fonctionner.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    Super Merci, ça fonctionne !

    J'utilisais ma variable "strPrenom " pour la MAJ.

    Je ne sais pas comment faire pour que la fonction fonctionne pour toutes ma table. Je fais quelques tests avec le recordset mais ça ne donne pas grand chose.


    Cordialement,

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/03/2015, 17h07
  2. Réponses: 3
    Dernier message: 16/12/2010, 09h03
  3. Mise à jour d'une table sans avoir la table
    Par Cablan dans le forum Access
    Réponses: 9
    Dernier message: 26/12/2005, 11h24
  4. exporter une table sans le nom de colonnes ?
    Par vuldos dans le forum Access
    Réponses: 13
    Dernier message: 11/10/2004, 19h56
  5. Lister le contenu d'une table sans connaitre ses champs
    Par Google.be dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 30/03/2004, 15h23

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