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 16/03/2011, 18h43   #1
Invité régulier
 
Inscription : novembre 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 35
Points : 7
Points : 7
Par défaut Renseigner le champ "légende" d'après une table

Bonsoir
J'ai créé une base dans laquelle j'importe des données d'un ERP.
Je dois intégrer une table dont les en-têtes de colonnes sont des noms techniques du type BERG,VERT,......
Je possède une table "Correspondance" qui contient ces noms techniques et leur désignation significative.
Je cherche une solution plus simple que celle de créer une requète qui remplace le nom technique par son libellé significatif.
Je pensais à une macro qui puisse renseigner le champ "légende" en fonction des données de la table "Correspondance".
A votre avis est-ce possible ?
Espérant avoir été clair sur la présentation de mon problème.
D'avance merci pour vos réponses.
Access 2003

StSym
stsym est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 03h55   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 613
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 613
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Ce n'est pas une requête qui te permettra de modifier le nom des champs.

Je te conseille de passer par Définition et manipulation de données avec DAO

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 17h50   #3
Invité régulier
 
Inscription : novembre 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 35
Points : 7
Points : 7
Bonsoir Philippe,
Tout d'abord merci pour la réponse rapide à ma question.
J'ai donné un coup d'oeil rapide à ce tuto, mais j'avoue qu'il est d'un niveau supérieur à celui de ma connaissance d'access.
A priori je pense avoir trouvé le chapitre (4.4.4.1. Renommer un champ) qui correspond à ma demande.
Je vais essayer de l'adapter à ma base, mais je suis certain d'être obligé de revenir sur le forum
pour solliciter une aide.
Alors donc à bientôt
StSym
stsym est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 19h01   #4
Invité régulier
 
Inscription : novembre 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 35
Points : 7
Points : 7
Re bonsoir

J'ai commencé a déchiffrer le tuto et compris qu'il y avait un code permettant de renommer les champs et un pour la lancer (utilisation).
Par contre je ne vois pas de correspondance entre ces dernières.
Dans la fonction "RenommerChamp" je ne trouve pas des noms du type "oDb" "Commande", "Reference", "Nouvelle_Reference"
Est-normal?

Pour rappel je suis novice dans le domaine DAO et m'excuse de ne pas focément employer les bons termes
Merci pour votre compréhension et vos réponses
StSym
stsym est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 05h54   #5
Invité régulier
 
Inscription : novembre 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 35
Points : 7
Points : 7
Bonjour,

Apparemment cette fonction permet de renommer qu'un seul champ.
Dans mon cas j'en ai plusieurs et dans plusieurs tables.

Mon idée était d'avoir une table des correspondances avec les champs suivants

Table---OldNom--NewNom
-T01------X01------Marque
-T01------X02------Modèle
-T01------X03------Couleur
-T02------Z01------Puissance
-T02------Z02------Moteur

et d'une fonction permettant de tous le renommer dans les differentes tables.
Mais est possible ?
Merci pour votre aide
StSym
stsym est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 16h45   #6
Membre habitué
 
Inscription : janvier 2006
Messages : 99
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : janvier 2006
Messages : 99
Points : 101
Points : 101
Bonjour,

à supposer que vous ayez une table de correspondance ayant la structure que vous avez décrite précédemment, voici un petit code qui devrait vous permettre de renommer vos champs :

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
29
30
31
    Dim lstTables As Recordset
    Dim lstChamps As Recordset
    Dim tbl As DAO.TableDef
 
    'définition d'un recordset listant toutes les tables ayant des champs
    'à renommer à partir de la table de correspondance
    Set lstTables = CurrentDb.OpenRecordset("SELECT DISTINCT [Table] FROM [Table de correspondance]")
 
    'on boucle sur toutes les tables
    lstTables.MoveFirst
    While Not lstTables.EOF
        'on définit l'objet tabledef qui pointera sur la table ayant des champs à renommer
        Set tbl = CurrentDb.TableDefs(lstTables![Table])
        'définition d'un recordset listant tous les champs à renommer à partir
        'de la table de correspondance dans la table
        Set lstChamps = CurrentDb.OpenRecordset("SELECT * FROM [Table de correspondance] WHERE [Table] = '" & lstTables![Table] & "'")
        'on boucle sur tous les champs de la table devant être renommés
        lstChamps.MoveFirst
        While Not lstChamps.EOF
            'on renomme le champ
            tbl.Fields(lstChamps![Old value]).Name = lstChamps![New value]
            'on passe au champ suivant à renommer
            lstChamps.MoveNext
        Wend
        'on passe à la table suivante
        lstTables.MoveNext
    Wend
    lstChamps.Close
    lstTables.Close
    Set lstChamps = Nothing
    Set lstTables = Nothing
Cordialement,
Aegnor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 05h37   #7
Invité régulier
 
Inscription : novembre 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 35
Points : 7
Points : 7
Bonjour Aegnor,
Super, cela répond tout à fait à ma demande.

Par contre l'action ne fonctionne pas jusqu'au bout.
En effet elle s'arrête àla ligne:

Code :
tbl.Fields(lstChamps![Old Value]).Name = lstChamps![New value]
J'ai vérifié, dans la table [Table de correspondance]
le nom des champs est bien identique.

Je ne vois pas ce qui peut bloquer.

D'avance merci pour votre aide
StSym
stsym est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 09h45   #8
Membre habitué
 
Inscription : janvier 2006
Messages : 99
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : janvier 2006
Messages : 99
Points : 101
Points : 101
Bonjour,

vous avez l'erreur exacte qui est renvoyée ?

Cordialement,
Aegnor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 10h08   #9
Invité régulier
 
Inscription : novembre 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 35
Points : 7
Points : 7
Bonjour Aegnor,

Quand je lance la macro qui appelle la fonction "Rename"
j'ai le message suivant:

"Erreur d'exécution 3420:
L'objet est incorrect ou n'est plus défini."

D'avance merci pour votre aide
StSym
stsym 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 19h13.


 
 
 
 
Partenaires

Hébergement Web