Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/01/2012, 14h36   #1
Invité de passage
 
Arthur
Inscription : février 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Arthur

Informations forums :
Inscription : février 2011
Messages : 4
Points : 0
Points : 0
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 :
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
SweloMyli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 15h31   #2
Membre Expert
 
Avatar de nico84
 
Homme Nicolas Guimbal
Consultant/développeur ERP
Inscription : mai 2008
Messages : 1 268
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Guimbal
Âge : 49
Localisation : France

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

Informations forums :
Inscription : mai 2008
Messages : 1 268
Points : 1 891
Points : 1 891
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 :
CurrentDb.Execute "UPDATE [" & MaTable & "] SET [" & MonChamp & "]=replace([" & MonChamp & "],'‚','é') WHERE instr(1,[" & MonChamp & "],',')>1;", dbFailOnError
...autant d'update que de remplacements à faire...
nico84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 15h49   #3
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 263
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2008
Messages : 263
Points : 309
Points : 309
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 :
1
2
3
Private Sub Commande0_Click()
Correction "Table1", "Attribut"
End Sub
Procédure appelée
Code :
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
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h40.


 
 
 
 
Partenaires

Hébergement Web