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 :

Module paramétré par une table et un attribut


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Module paramétré par une table et un attribut
    Bonjour,

    Je rencontre actuellement un problème pour créer une procédure qui me permet de corriger les entrées d'une table.

    Contexte : Je récupère dans ma base de données, de manière automatique, les noms et prénoms d'un certain nombre d'agents. Auparavant, je lançais une procédure de correction pour la table et l'attribut donné. Mais par la suite, en étoffant, je me suis rendu compte que je réutilisais cette procédure à plusieurs reprise. J'ai donc voulu la rendre générique, en la paramétrant. Je l'appelle en y mettant en entrée deux string, correspondant au nom de la table et au nom de la colonne.

    Voici le code :
    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
    Option Compare Database
    Option Explicit
     
    Sub Correction(T_Table As String, Attribut As String)
    Dim db As Database
    Dim rstTable As DAO.Recordset
     
    Set db = CurrentDb
    Set rstTable = db.OpenRecordset(T_Table, dbOpenTable)
     
     
    With rstTable
    .MoveFirst
    Do Until .EOF
    .Edit
    !['Attribut'] = Replace(rstTable!['Attribut'], "‚", "é")
    !['Attribut'] = Replace(rstTable![Attribut], "Š", "è")
    !['Attribut'] = Replace(rstTable![Attribut], "‡", "ç")
    !['Attribut'] = Replace(rstTable![Attribut], "‰", "ë")
    !['Attribut'] = Replace(rstTable![Attribut], "“", "ô")
    !['Attribut'] = Replace(rstTable![Attribut], "…", "à")
    !['Attribut'] = Replace(rstTable![Attribut], "Œ", "î")
    .Update
    .MoveNext
    Loop
    rstTable.Close
    End With
    End Sub
    Auparavant je n'avais pas mis les quotes autour de ['Attribut'], mais lorsque je le survolais, il ne faisait pas le lien, depuis que j'ai mis ces quotes, il reconnait bien le nom d'attribut que j'ai passé en paramètre. Toutefois ça ne semble pas suffire.

    Merci d'avance pour votre aide qui m'est toujours aussi précieuse.

    Cordialement,

    SweloMyli

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonjour,

    Personnellement j'aurais utilisé une commande UPDATE, non seulement j'en connais la syntaxe mais en plus je pense que c'est plus rapide (?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.Execute "UPDATE [" & MaTable & "] SET [" & MonChamp & "]=replace([" & MonChamp & "],'‚','é') WHERE instr(1,[" & MonChamp & "],',')>1;", dbFailOnError
    ...autant d'update que de remplacements à faire...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Points : 383
    Points
    383
    Par défaut
    Ceci me parait fonctionner

    En supposant que ta table se nomme "Table1" et le champs que tu souhaites examiner et le cas échéant modifier se nomme quant à lui "Attribut", cela donnerait :

    Procédure d'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande0_Click()
    Correction "Table1", "Attribut"
    End Sub
    Procédure appelée
    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
    Sub Correction(Table As String, Colonne As String)
     
    Dim db As Database
    Dim rstTable As DAO.Recordset
    Dim StrCorrection As String
     
    Set db = CurrentDb
    Set rstTable = db.OpenRecordset(Table, dbOpenTable)
     
    With rstTable
        .MoveFirst
        Do Until .EOF
            .Edit
            StrCorrection = rstTable(Colonne)
            StrCorrection = Replace(StrCorrection, ",", " ")
            StrCorrection = Replace(StrCorrection, "é", "e")
            StrCorrection = Replace(StrCorrection, "‡", "ç")
            StrCorrection = Replace(StrCorrection, "‰", "ë")
            StrCorrection = Replace(StrCorrection, "“", "ô")
            StrCorrection = Replace(StrCorrection, "…", "à")
            StrCorrection = Replace(StrCorrection, "Œ", "î")
            rstTable(Colonne) = StrCorrection
            .Update
            .MoveNext
        Loop
        .Close
    End With
    End Sub
    J'espère que je n'ai pas trop mal compris la question posée.

    Michel

Discussions similaires

  1. [ASA]Espace occupé par une Table
    Par madina dans le forum Sybase
    Réponses: 3
    Dernier message: 17/07/2006, 17h16
  2. Lancer un module VBA par une tache planifié
    Par gengen dans le forum Access
    Réponses: 9
    Dernier message: 25/04/2006, 16h22
  3. Etat bloqué par une table
    Par aujero dans le forum Access
    Réponses: 4
    Dernier message: 06/02/2006, 17h53
  4. Réponses: 12
    Dernier message: 21/10/2005, 14h35
  5. Réponses: 4
    Dernier message: 13/10/2005, 14h44

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