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 17/05/2011, 12h25   #1
Invité régulier
 
Inscription : mai 2011
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 35
Points : 8
Points : 8
Par défaut Changement de nom de table

Bonjour j'ai un probleme avec mon code qui ne veut pas tourner correctement...Il me dit qu'il y a un probleme...Je veux en gros a partir d'un fichier excel changer le nom de certain champs de plusieurs table access.

Voici mon 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
29
30
31
32
33
Function RenommerChamp(NomTable As String, Ancien As String, Nouveau As String) As Boolean
On Error GoTo err:
Dim MCat As New ADOX.Catalog
Dim MTable As ADOX.Table
Dim MField As ADOX.Column
Set MCat.ActiveConnection = CurrentProject.Connection
Set MTable = MCat.Tables(NomTable)
Set MField = MTable.Columns(Ancien)
MField.Name = Nouveau
RenommerChamp = True
err:
Set MCat = Nothing
Set MTable = Nothing
Set MField = Nothing
End Function
 
 
 
Sub essai()
 
Dim MaBase As String
MaBase = "E:\Projet GDP\Projet Marie Alice\base.accdb"
 
Set AccessCn = New ADODB.Connection
AccessCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                "Data Source=" & MaBase
 
 
MsgBox RenommerChamp("AC#CA", "Date", "Dateseance")
 
 
 
End Sub
Merci!
cott333 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 16h21   #2
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonjour.

Je ne suis pas sûr que l'on puisse faire cela avec ADOX dans une base Access...

Par contre avec DAO, cela baigne!
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Function RenommerChampDAO(NomTable As String, Ancien As String, Nouveau As String) As Boolean
Dim oDb As DAO.Database
 
On Error GoTo lblErreur:
    Set oDb = CurrentDb
 
    oDb.TableDefs(NomTable).Fields(Ancien).Name = Nouveau
    RenommerChampDAO = True
 
lblSortie:
    Set oDb = Nothing
    Exit Function
 
lblErreur:
    RenommerChampDAO = False
    GoTo lblSortie
 
End Function
Cordialement,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 18h26   #3
Invité régulier
 
Inscription : mai 2011
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 35
Points : 8
Points : 8
Merci!
Le code marche parfaitement quand je met manuellement le nom de la table d'ACCESS.
Cependant, lorsque je fais une boucle pour changer tt le meme champs de toute mes feuilles, le programme tourne mais ne me change rien du tout...


Codetitre1 correspond au nom du champs que j'ai mis sur la feuil4 de mon fichier excel
AC#PA
PA#PA
ACA#PA
...


Sauriez vous d'ou vient mon probleme?
Merci!





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
32
33
34
35
36
37
38
39
40
41
42
Function RenommerChampDAO(NomTable As String, Ancien As String, Nouveau As String) As Boolean
Dim oDb As DAO.Database
 
On Error GoTo lblErreur:
    Set oDb = DAO.OpenDatabase("E:\Projet GDP\Projet Marie Alice\base.accdb", False, False)
 
    oDb.TableDefs(NomTable).Fields(Ancien).Name = Nouveau
    RenommerChampDAO = True
 
lblSortie:
    Set oDb = Nothing
    Exit Function
 
lblErreur:
    RenommerChampDAO = False
    GoTo lblSortie
 
End Function
 
 
 
 
 
Sub essai33()
Dim codetitre1 As Variant
Dim wb As Workbook
Set wb = ThisWorkbook
 
 
 
For j = 1 To 40
 
 
    codetitre1 = wb.Worksheets(4).Cells(j + 1, 1).Value
    codetitre1 = CStr(codetitre1)
 
    Call RenommerChampDAO("codetitre1", "Date", "Dateseance")
 
 
Next j
 
End Sub
cott333 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 19h13   #4
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Hello.

Tu peux essayer :
Code :
Call RenommerChampDAO(codetitre1, "Date", "Dateseance")


PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 19h47   #5
Invité régulier
 
Inscription : mai 2011
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 35
Points : 8
Points : 8
Super merci
cott333 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 13h41.


 
 
 
 
Partenaires

Hébergement Web