OVH Cloud OVH Cloud

Requête paramétrée dans un export EXCEL

1 réponse
Avatar
Maïté
J'effectue l'export d"une requ=EAte vers EXCEL, mais =E7a=20
marche pas car ma requ=EAte est param=E9tr=E9, un message=20
d'erreur appara=EEt est me dit "Trop peu de param=E8tre. 1=20
attendu."

En principe =E0 l'=E9x=E9cution de ma requ=EAte je doit saisir=20
l'ann=E9e.=20

Voici mon code VB :

Private Sub Commande8_Click()
ExportationVersExcel_DAO2
End Sub

'REPORTING VERS EXCEL
Sub ExportationVersExcel_DAO2()
Dim xl As Excel.Application
Dim wbk As Excel.Workbook
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim Fld As DAO.Field
Dim intColonne As Integer
Dim intLigne As Integer

'Ouvrir la requ=EAte Bilan Eb
Set db =3D CurrentDb()
Set rst =3D db.OpenRecordset("Bilan CTC Eb")

'D=E9marrer Excel
Set xl =3D New Excel.Application
xl.Visible =3D True

With xl
'Cr=E9er un nouveau classeur
Set wbk =3D .Workbooks.Add
=20
'Renommer la 1=E8re feuille du classeur
wbk.Sheets("Feuil1").Name =3D "Bilan Eb"
=20
With wbk.Sheets("Bilan Eb")
'Transf=E9rer les noms de champs
intColonne =3D 0
For Each Fld In rst.Fields
.Cells(1, intColonne + 1) =3D Fld.Name
intColonne =3D intColonne + 1
Next
=20
'Transf=E9rer les enregistrements
intLigne =3D 2
While Not rst.EOF
intColonne =3D 1
For Each Fld In rst.Fields
.Cells(intLigne, intColonne) =3D Fld.Value
intColonne =3D intColonne + 1
Next
=20
'Enregistrement suivant
rst.MoveNext
intLigne =3D intLigne + 1
Wend
End With

End With


End Sub

Comment faire ?

1 réponse

Avatar
Eric
Bonjour "Maïté"

Quelques modif dans ta procédure ExportationVersExcel_DAO2

A la suite des déclarations, rajoutes:
Dim qry As DAO.QueryDef
Dim repAnnee As String
repAnnee = InputBox("Année désirée ?", "Demande de renseignement")
If Len(repAnnee) = 0 Then Exit Sub

Remplaces :
Set rst = db.OpenRecordset("Bilan CTC Eb")
par :
Set qry = db.QueryDefs("rAnnée")
qry.Parameters("AnnéeVoulue") = CInt(repAnnee)
Set rst = qry.OpenRecordset

où AnnéeVoulue est le paramètre de ta requête. Je l'ai déclaré
explicitement dans la requête (Menu REQUETE|Paramètres) comme Entier

Le reste est Ok.

Ca marche ?
A+
Eric



"Maïté" écrivait news:a14d01c497e6
$db28e860$:

J'effectue l'export d"une requête vers EXCEL, mais ça
marche pas car ma requête est paramétré, un message
d'erreur apparaît est me dit "Trop peu de paramètre. 1
attendu."

En principe à l'éxécution de ma requête je doit saisir
l'année.

Voici mon code VB :

Private Sub Commande8_Click()
ExportationVersExcel_DAO2
End Sub

'REPORTING VERS EXCEL
Sub ExportationVersExcel_DAO2()
Dim xl As Excel.Application
Dim wbk As Excel.Workbook
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim Fld As DAO.Field
Dim intColonne As Integer
Dim intLigne As Integer

'Ouvrir la requête Bilan Eb
Set db = CurrentDb()
Set rst = db.OpenRecordset("Bilan CTC Eb")

'Démarrer Excel
Set xl = New Excel.Application
xl.Visible = True

With xl
'Créer un nouveau classeur
Set wbk = .Workbooks.Add

'Renommer la 1ère feuille du classeur
wbk.Sheets("Feuil1").Name = "Bilan Eb"

With wbk.Sheets("Bilan Eb")
'Transférer les noms de champs
intColonne = 0
For Each Fld In rst.Fields
.Cells(1, intColonne + 1) = Fld.Name
intColonne = intColonne + 1
Next

'Transférer les enregistrements
intLigne = 2
While Not rst.EOF
intColonne = 1
For Each Fld In rst.Fields
.Cells(intLigne, intColonne) = Fld.Value
intColonne = intColonne + 1
Next

'Enregistrement suivant
rst.MoveNext
intLigne = intLigne + 1
Wend
End With

End With


End Sub

Comment faire ?