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 26/04/2011, 20h48   #1
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Par défaut Renommer le champs par VBA

Bonjour tout le monde,
J’ai deux tables (tData et tEntetes) dans ma db Access2003. tData contient 50 champs avec des entêtes en caractères japonais que je ne comprends pas. La deuxième table tEntetes contient deux champs (50 lignes) ; le premier champs étant celui des entêtes en japonais et le deuxième leur traduction respective en français. Je précise que les données de la table tEntetes suivent parfaitement l’ordre des entêtes dans la table tData.
Je suis à mes débuts en VBA/Access mais je maitrise un peu les codes VBA en Excel. Quelqu’un peut –il m’aider à écrire un peu code en VBA/Access pour RENOMMER (du japonais vers le français) les champs de la table tData en se basant sur les données de la table tEntetes ?
Merci d’avance.
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 21h04   #2
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 256
Points : 5 256
Salut,

Il faut utiliser la librairie DAO, pour lister et renommer les champs d'une table :

RenomChpDAO

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/04/2011, 10h12   #3
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Bonjour,

J’ai fait referencer la librairie Microsoft DAO 3.6 Object Library mais le code echoue sur la ligne :
VField.Name = PNew
Et le message d’erreur est le suivant:
Runtuime error: object invalid or no longer set.

Je ne sais pas pourquoi cela ne marche pas.
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 11h00   #4
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
Bonjour

Je me trompe sans doute, mais au vu du message d'erreur, peut-être y a-t-il un problème de longueur du nom du champ.

Il y a sans doute une longueur maximale pour les noms des champs de table Access.
Le nom que vous tentez de donner doit être trop long.
Essayer de raccourcir.

Bonne journée

Pierre
pier.antoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 13h56   #5
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Bonjour,
Je ne pense pas que cela soit un probleme de nom trop long car meme en essayant de remplacer “JobTitle” par “TheJobTitle” ca ne marche toujours pas. Pour preuve de ce que j’avance, j’ai en vain essaye le code suivant et j’ai toujours la meme erreur et le code echoue sur la ligne de : For each….
En gros, DAO ne me laisse pas acceder a l’object Field.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub NomChamps()
'parcourir les noms des champs d'une table.
 
 
Dim VTable As dao.TableDef
Dim VField As dao.Field
Set VTable = CurrentDb.TableDefs("Table1")
 
For Each VField In VTable.Fields
    Debug.Print VField.Name
Next VField
 
End Sub
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 14h08   #6
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 256
Points : 5 256
Salut,

Essaie comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function NomChamps()
'parcourir les noms des champs d'une table.
 
Dim db As DAO.Database
Dim VTable As DAO.TableDef
Dim VField As DAO.Field
Set db = CurrentDb
 
Set VTable = db.TableDefs("Table1")
 
For Each VField In VTable.Fields
Debug.Print VField.Name
Next VField
 
End Function
A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 00h45   #7
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Bonsoir,
Merci pour votre précieuse aide, maintenant cela marche a merveille. Il aurait fallu qu’on attribue l’objet CurrentDB à une variable pour que cela marche bien.
Juste une dernière question, quelle est la différence fondamentale entre l’ancien code et le nouveau ?
Merci.
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 14h26   #8
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 256
Points : 5 256
D'aprés l'aide sur l'erreur générée :
L'objet n'est plus valide ou n'est plus défini. (Erreur 3420)

Il semble qu'il faille assigner l'objet database à une variable pour pouvoir faire référence à la collection TableDefs. et à ses éléments

Merci de clore la discussion au moyen du tag [Résolu].

__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h11.


 
 
 
 
Partenaires

Hébergement Web