Déclaration de paramètres dans QueryDef
Bonjour à tous,
Tout d'abord, félicitation pour l'excellent tenue de ce forum et pour son immense richesse.
Cela fait maintenant quelques semaines que mon patron m'a chargé de développer une application Acces pour simplifier la vie de nos assistantes. Il me l'a confié à moi car j'ai quelques bases d'Access et que je me suis déjà fait plusieurs outils pour accélérer mon travail.
J'ai réussi à développer l'intégralité de l'outil sans trop de soucis. Normal, j'ai découvert votre forum et à chaque gros problème, hop le tutoriel correspondant :ccool:
Cependant, aujourd'hui je bloque sur une épine à laquelle je n'arrive pas trouver de réponse :
Pour X raison, il me faut développer un export d'une requête paramétrée vers Excel (d'ailleurs il y aura plusieurs exports à faire, mais bon, si j'arrive pour une, les autres devraient suivre). Les paramètres sont des dates (la requête s'exécute entre DateD et dateF).
A noter que la requête est une requête sélection, avec les paramètres date de début et date de fin selon un formulaire indépendant. Cette requête sélection une dizaine de champ entre dateD et DateF et répondant au critère [Etat] = "Gangné" ou "Perdu" ou "En-Cours""
J'ai donc mis en place une automation vers Excel, avec un QueryDef (merci les tutoriels du forum 8-))
Lorsque j'exécute mon code (procédure sur l'évènement clic d'un bouton) j'ai, au choix, deux messages d'erreur :
Erreur de conversion de type de données (code 3421) si j'utilise ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Private Sub Commande19_Click()
Dim xlApp As Excel.Application
Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
Dim i As Long
Dim vtemp As Variant
Dim qdf As DAO.QueryDef
Dim rec As DAO.Recordset
'référence à la requête
Set qdf = CurrentDb.QueryDefs("RQSelect_Propositions_Affaires")
'Mise en forme des paramètres
DateD_0 = "#" & Format(Me.DateD.Value, "dd/mm/yyyy") & "#"
DateF_0 = "#" & Format(Me.DateF.Value, "dd/mm/yyyy") & "#"
'Spécification des paramètres qdf
qdf.Parameters("DateD") = DateD_0
qdf.Parameters("DateF") = DateF_0
Set rec = qdf.OpenRecordset() |
Ou "Type de donnée incompatible dans l'expression du critère" (Code 3464) si j'utilise ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Private Sub Commande19_Click()
Dim xlApp As Excel.Application
Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
Dim i As Long
Dim vtemp As Variant
Dim qdf As DAO.QueryDef
Dim rec As DAO.Recordset
'référence à la requête
Set qdf = CurrentDb.QueryDefs("RQSelect_Propositions_Affaires")
'Mise en forme des paramètres
DateD_0 = "#" & Format(Me.DateD.Value, "dd/mm/yyyy") & "#"
DateF_0 = "#" & Format(Me.DateF.Value, "dd/mm/yyyy") & "#"
'Spécification des paramètres qdf
qdf.Parameters("DateD") = Me.DateD.Value
qdf.Parameters("DateF") = Me.DateF.Value
Set rec = qdf.OpenRecordset() |
En outre, j'ai essayé de charger Microsoft DAO object librairy 3.6 mais quand je fais OK (après avoir coché la case correspondante) il me dit : "Nom de module, de projet ou de bibliothèque d'objet déjà utilisée" alors que dans la liste des références elle apparait décochée
Merci d'avance à ceux qui pourront me débloquer et désolé si j'ai loupé un sujet sur le forum ou si mon post n'est pas au bon endroit.
Edit :
Après avoir relu les règle de modération j'ai supprimé la seconde partie du code de mon bouton, il n'avait rien avoir avec la question puisqu'il expliquait comment, après avoir chargé le recordset je construisais ma feuille Excel. A noter cependant que le post n°3 fait référence avec cette partie de code supprimée et pointe vers la méthode .Copyfromrecordset pour éviter de faire une copie ligne à ligne. Merci à la personne qui m'a suggéré cette méthode, qui fonctionne à merveille, même si elle ne résous pas mon problème initial.