Bonjour à tous,

Je viens vers vous car je suis débutant en VBA SQL et une aide serait la bienvenue.

Je souhaiterai ajouter, en VBA via Excel, un champs calculé dans ma base de donné ACCESS

En cherchant sur le forum j'ai trouvé ce code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
CurrentProject.Connection.Execute "ALTER TABLE TABLE1 ADD COLUMN ESSAI3 DECIMAL(18,0)"
Puis je l'ai adapté dans mon code VBA :

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
29
30
31
32
33
34
35
36
37
 
 
Sub Ajouter_Champ()
 
'Déclaration de la variable de connexion
Dim cnx As ADODB.Connection
Dim rst As ADODB.Recordset
 
Dim CheminAccess As String
Dim ChoixTABLE As String
 
'Chemin de la base de données
CheminAccess = ActiveWorkbook.Path & "\EquipmentV4R3.accdb"
 
 
ChoixTABLE = "PLC_FDP"
 
'Instanciation des variables
Set cnx = New ADODB.Connection
Set rst = New ADODB.Recordset
 
'Définition du pilote de connexion
cnx.Provider = "Microsoft.ACE.OLEDB.12.0"
'Définition de la chaîne de connexion
cnx.ConnectionString = CheminAccess
'Ouverture de la base de données
cnx.Open
 
'Objet Recordset ajout d'un champs dans la table
rst.Open "ALTER TABLE PLC_FDP ADD COLUMN ESSAI4 DECIMAL(18,0)", cnx
 
'Fermeture recordset et connection
'rst.Close
Set rst = Nothing
cnx.Close
Set cnx = Nothing
End Sub

Le code fonctionne et ajoute bien le champ dans la BDD!!

Cependant, que veut dire "DECIMAL(18,0)" dans l'expression ci-dessous?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
CurrentProject.Connection.Execute "ALTER TABLE TABLE1 ADD COLUMN ESSAI3 DECIMAL(18,0)"
Et comment faut-il faire pour que le champs que j'ajoute soit un champs calculé dont la formule serait par exemple Champs B divisé par Champs A en utilisant le code suivant?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
'Objet Recordset ajout d'un champs dans la table
rst.Open "ALTER TABLE PLC_FDP ADD COLUMN ESSAI4 DECIMAL(18,0)", cnx
Merci d'avance pour votre aide!!