J’ai des actions répétitives à effectuer, c’est pour cela que je dois faire un programme VBA.

Le programme doit importer des classeurs Excel qui se trouvent dans le disque dur C (à l’adresse C:\dossier ) et ensuite les importer dans Access (en renommant les feuille de données DEPDATA_DEPVALAN) puis les rentrer dans la base de données via 3 programmes SQL qui doivent être éxécutées à la suite.



Ce sont les suivants :

Le programme 1 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
INSERT INTO dbo_DEPDATA ( IDFAMILLE01, IDFAMILLE02, IDSOURCES, IDPUBLI, CODEDEP, DEPDATALIBEL, DEPVARIABLE, DEPDATAMEMO, ADEP, TDEP, MDEP, IDSCONTACTS, IDIMPORT, FLAG, SERIECODE )
SELECT DEPDATA_DEPVALAN.IDFAMILLE01, DEPDATA_DEPVALAN.IDFAMILLE02, DEPDATA_DEPVALAN.IDSOURCES, DEPDATA_DEPVALAN.IDPUBLI, DEPDATA_DEPVALAN.CODEDEP, DEPDATA_DEPVALAN.DEPDATALIBEL, DEPDATA_DEPVALAN.DEPVARIABLE, DEPDATA_DEPVALAN.DEPDATAMEMO, DEPDATA_DEPVALAN.ADEP, DEPDATA_DEPVALAN.TDEP, DEPDATA_DEPVALAN.MDEP, DEPDATA_DEPVALAN.IDSCONTACTS, DEPDATA_DEPVALAN.IDIMPORT_DEPDATA, DEPDATA_DEPVALAN.FLAG_DEPDATA, DEPDATA_DEPVALAN.SERIECODE
FROM DEPDATA_DEPVALAN
GROUP BY DEPDATA_DEPVALAN.IDFAMILLE01, DEPDATA_DEPVALAN.IDFAMILLE02, DEPDATA_DEPVALAN.IDSOURCES, DEPDATA_DEPVALAN.IDPUBLI, DEPDATA_DEPVALAN.CODEDEP, DEPDATA_DEPVALAN.DEPDATALIBEL, DEPDATA_DEPVALAN.DEPVARIABLE, DEPDATA_DEPVALAN.DEPDATAMEMO, DEPDATA_DEPVALAN.ADEP, DEPDATA_DEPVALAN.TDEP, DEPDATA_DEPVALAN.MDEP, DEPDATA_DEPVALAN.IDSCONTACTS, DEPDATA_DEPVALAN.IDIMPORT_DEPDATA, DEPDATA_DEPVALAN.FLAG_DEPDATA, DEPDATA_DEPVALAN.SERIECODE;
Le programme 2 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
UPDATE dbo_DEPDATA INNER JOIN DEPDATA_DEPVALAN ON (dbo_DEPDATA.CODEDEP = DEPDATA_DEPVALAN.CODEDEP) AND (dbo_DEPDATA.DEPDATALIBEL = DEPDATA_DEPVALAN.DEPDATALIBEL) SET DEPDATA_DEPVALAN.IDDEPDATA = dbo_depdata.iddepdata;
Le programme 3 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
INSERT INTO dbo_DEPVALAN ( IDDEPDATA, DEPVALANNEEA, DEPDATAAN, DEPVARAN1, DEPVARAN2, IDIMPORT, FLAG )
SELECT DEPDATA_DEPVALAN.IDDEPDATA, DEPDATA_DEPVALAN.DEPVALANNEEA, DEPDATA_DEPVALAN.DEPDATAAN, DEPDATA_DEPVALAN.DEPVARAN1, DEPDATA_DEPVALAN.DEPVARAN2, DEPDATA_DEPVALAN.IMPORT_DEPVALAN AS Expr1, DEPDATA_DEPVALAN.FLAG_DEPVALAN
FROM DEPDATA_DEPVALAN
GROUP BY DEPDATA_DEPVALAN.IDDEPDATA, DEPDATA_DEPVALAN.DEPVALANNEEA, DEPDATA_DEPVALAN.DEPDATAAN, DEPDATA_DEPVALAN.DEPVARAN1, DEPDATA_DEPVALAN.DEPVARAN2, DEPDATA_DEPVALAN.IMPORT_DEPVALAN, DEPDATA_DEPVALAN.FLAG_DEPVALAN;

Vue les programmes, on remarque bien que lors de l’import sous Access, les feuilles de données devront être nommées DEPDATA_DEPVALAN.

Voila ceux que j’ai rédiger avec des choses qui j’ai lu – je sais bien c’est pas bon c’est pourquoi j’ai besoin d’un coup de main svp.

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
Sub prog_vba()
 
DoCmd.SetWarnings False
 
For each workbook in ?
 
 
 
DoCmd.RunSQL “INSERT INTO dbo_DEPDATA ( IDFAMILLE01, IDFAMILLE02, IDSOURCES, IDPUBLI, CODEDEP, DEPDATALIBEL, DEPVARIABLE, DEPDATAMEMO, ADEP, TDEP, MDEP, IDSCONTACTS, IDIMPORT, FLAG, SERIECODE )
SELECT DEPDATA_DEPVALAN.IDFAMILLE01, DEPDATA_DEPVALAN.IDFAMILLE02, DEPDATA_DEPVALAN.IDSOURCES, DEPDATA_DEPVALAN.IDPUBLI, DEPDATA_DEPVALAN.CODEDEP, DEPDATA_DEPVALAN.DEPDATALIBEL, DEPDATA_DEPVALAN.DEPVARIABLE, DEPDATA_DEPVALAN.DEPDATAMEMO, DEPDATA_DEPVALAN.ADEP, DEPDATA_DEPVALAN.TDEP, DEPDATA_DEPVALAN.MDEP, DEPDATA_DEPVALAN.IDSCONTACTS, DEPDATA_DEPVALAN.IDIMPORT_DEPDATA, DEPDATA_DEPVALAN.FLAG_DEPDATA, DEPDATA_DEPVALAN.SERIECODE
FROM DEPDATA_DEPVALAN
GROUP BY DEPDATA_DEPVALAN.IDFAMILLE01, DEPDATA_DEPVALAN.IDFAMILLE02, DEPDATA_DEPVALAN.IDSOURCES, DEPDATA_DEPVALAN.IDPUBLI, DEPDATA_DEPVALAN.CODEDEP, DEPDATA_DEPVALAN.DEPDATALIBEL, DEPDATA_DEPVALAN.DEPVARIABLE, DEPDATA_DEPVALAN.DEPDATAMEMO, DEPDATA_DEPVALAN.ADEP, DEPDATA_DEPVALAN.TDEP, DEPDATA_DEPVALAN.MDEP, DEPDATA_DEPVALAN.IDSCONTACTS, DEPDATA_DEPVALAN.IDIMPORT_DEPDATA, DEPDATA_DEPVALAN.FLAG_DEPDATA, DEPDATA_DEPVALAN.SERIECODE;”
 
DoCmd.RunSQL “UPDATE dbo_DEPDATA INNER JOIN DEPDATA_DEPVALAN ON (dbo_DEPDATA.CODEDEP = DEPDATA_DEPVALAN.CODEDEP) AND (dbo_DEPDATA.DEPDATALIBEL = DEPDATA_DEPVALAN.DEPDATALIBEL) SET DEPDATA_DEPVALAN.IDDEPDATA = dbo_depdata.iddepdata;”
 
 
DoCmd.RunSQL “INSERT INTO dbo_DEPVALAN ( IDDEPDATA, DEPVALANNEEA, DEPDATAAN, DEPVARAN1, DEPVARAN2, IDIMPORT, FLAG )
SELECT DEPDATA_DEPVALAN.IDDEPDATA, DEPDATA_DEPVALAN.DEPVALANNEEA, DEPDATA_DEPVALAN.DEPDATAAN, DEPDATA_DEPVALAN.DEPVARAN1, DEPDATA_DEPVALAN.DEPVARAN2, DEPDATA_DEPVALAN.IMPORT_DEPVALAN AS Expr1, DEPDATA_DEPVALAN.FLAG_DEPVALAN
FROM DEPDATA_DEPVALAN
GROUP BY DEPDATA_DEPVALAN.IDDEPDATA, DEPDATA_DEPVALAN.DEPVALANNEEA, DEPDATA_DEPVALAN.DEPDATAAN, DEPDATA_DEPVALAN.DEPVARAN1, DEPDATA_DEPVALAN.DEPVARAN2, DEPDATA_DEPVALAN.IMPORT_DEPVALAN, DEPDATA_DEPVALAN.FLAG_DEPVALAN;”
 
 
Next
 
DoCmd.SetWarnings True
 
End sub
merci de votre aide, ash.