HELP VBA Access

Laissez nous un petit coucou :)
Répondre
Avatar de l’utilisateur
Yseulth
Floodeur lvl 9
Messages : 1132
Inscription : 13 sept. 2004, 9:33

HELP VBA Access

Message par Yseulth » 14 oct. 2008, 16:50

Pour les informaticiens d'ici (LETOOOO),
J'suis une quiche en info mais je bidouille des trucs sous Access

J'ai une requête à répéter X fois pour exporter le résultat dans des fichiers Excel.

Je dispose d'une table Assistante commerciale (CSR) :

CSR
csr1
csr2
csr3
...
csr18

En VBA dans un formulaire, j'ai créé un truc "bancal" en répétant ma requête 18 fois de manière statique :
'-----------
'---csr1---
'-----------
DoCmd.OutputTo acOutputQuery, "ma_requete", acFormatXLS, "m:\Administration_des_ventes\delivery blocked\Prepa\Résultat Exportation par CSR\csr1.xls"
xls.workbooks.Open "m:\Administration_des_ventes\delivery blocked\Prepa\Résultat Exportation par CSR\csr1.xls"
xls.Columns("A:M").EntireColumn.AutoFit
xls.Range("A2").Select
xls.ActiveWindow.FreezePanes = True
xls.Sheets(1).Name = "Tri par CSR"
xls.Range("A2").Select
xls.Rows("2:2000").EntireRow.AutoFit
xls.ActiveWorkbook.Save
xls.ActiveWindow.Close

'-----------
'---csr2---
'-----------
DoCmd.OutputTo acOutputQuery, "ma_requete", acFormatXLS, "m:\Administration_des_ventes\delivery blocked\Prepa\Résultat Exportation par CSR\csr2.xls"
xls.workbooks.Open "m:\Administration_des_ventes\delivery blocked\Prepa\Résultat Exportation par CSR\csr2.xls"
xls.Columns("A:M").EntireColumn.AutoFit
xls.Range("A2").Select
xls.ActiveWindow.FreezePanes = True
xls.Sheets(1).Name = "Tri par CSR"
xls.Range("A2").Select
xls.Rows("2:2000").EntireRow.AutoFit
xls.ActiveWorkbook.Save
xls.ActiveWindow.Close

'-----------
'---etc 18 fois---
'-----------
Ma question est la suivante : Comment que c'est-y qu'on peut faire une boucle depuis la table CSR pour répéter l'opération de la première (csr1) à la dernière (csr18) ???

Vous seriez bien galants de pourvoir à ma demande messieurs dames ^^
Image
Keiser Soze, c'est le boiteux !!!!

Avatar de l’utilisateur
Leto
Floodeur lvl 9
Messages : 1092
Inscription : 12 sept. 2004, 23:44
Localisation : Din l'Picôrdie

Message par Leto » 14 oct. 2008, 23:04

Euuuuuuh ca me rappelle furieusement quelque chose....
Alors soit j'étais bourré, soit toi tu l'étais ce jour là ^^ :

Leto a écrit : Dim db As DAO.Database
Dim poupounette As DAO.Recordset
Set db = CurrentDb

sSQL = "SELECT LE_NOM_DE_TA_CLE_D_INDEX from CSR"

Set poupounette = db.OpenRecordset(sSQL)

If Not poupounette.EOF Then
Do While Not poupounette.EOF

sID = poupounette.Fields("LE_NOM_DE_TA_CLE_D_INDEX").Value

DoCmd.OutputTo acOutputQuery, "ma_requete", acFormatXLS, "m:\Administration_des_ventes\delivery blocked\Prepa\Résultat Exportation par CSR" & sID & ".xls"
xls.workbooks.Open "m:\Administration_des_ventes\delivery blocked\Prepa\Résultat Exportation par CSR" & sID & ".xls"
xls.Columns("A:M").EntireColumn.AutoFit
xls.Range("A2").Select
xls.ActiveWindow.FreezePanes = True
xls.Sheets(1).Name = "Tri par CSR"
xls.Range("A2").Select
xls.Rows("2:2000").EntireRow.AutoFit
xls.ActiveWorkbook.Save
xls.ActiveWindow.Close

poupounette.MoveNext

Loop
End If

poupounette.Close
Set poupounette = Nothing
db.close
Source ICI, j'ai juste corrigé les variables de ta requete :)
╔═╗╔╗║╔╗╦╗
║═╗╠╣╚╠╣╩╝
╚═╝a poil devant le prisu

Avatar de l’utilisateur
Yseulth
Floodeur lvl 9
Messages : 1132
Inscription : 13 sept. 2004, 9:33

Message par Yseulth » 16 oct. 2008, 10:33

C'est moi qui fatigue Lol !!

C'était pas ca ma question, j'suis à la phase 2, sauf que j'ai oublié d'expliquer ce qu'est ma phase 2 :p

Le problème, c'est qu'actuellement, le résultat de MA_REQUETE est identique pour chacune des CSR. Je voudrais que le résultat comprenne un critère de restriction lié à la CSR en cours dans la boucle.

J'ai un champ [Responsible CSR] et je veux appliquer le critère dessus (qui correspond à la valeur de sID). Mais j'arrive pas à le faire :
Dim db As DAO.Database
Dim poupounette As DAO.Recordset
Set db = CurrentDb
sSQL = "select CSR from CSR"
Set poupounette = db.OpenRecordset(sSQL)

If Not poupounette.EOF Then
Do While Not poupounette.EOF
sID = poupounette.Fields("CSR").Value

restriction = "select * from MA_REQUETE where [Responsible csr]=&sID&"

DoCmd.OutputTo acOutputQuery, "MA_REQUETE", acFormatXLS, "m:\Administration_des_ventes\delivery blocked\Prepa\Résultat Exportation par CSR\" & sID & ".xls"

poupounette.MoveNext

Loop
End If

poupounette.Close
Set poupounette = Nothing
db.Close
En gras un truc tout faux .... mais qui correspond un peu à ce que je veux faire...
Image
Keiser Soze, c'est le boiteux !!!!

Avatar de l’utilisateur
Yseulth
Floodeur lvl 9
Messages : 1132
Inscription : 13 sept. 2004, 9:33

Message par Yseulth » 23 oct. 2008, 22:03

C'est bon, j'arrête le suspense insoutenable !

J'ai trouvé ma réponse !
Image
Keiser Soze, c'est le boiteux !!!!

Répondre