Bonjour,
Depuis maintenant 1 an je développe sur un temps additionnel à mon temps de travail une base de donnée dont le but est de produire un rapport d'activité d'une équipe de soin transversale. Je parcours avec intéret ce forum qui ma énormément aidé à avancer dans mon travail.
Après 6 mois de saisie effective, je suis en mesure de produire des "indicateurs d'activité", environ 50 sont définis et necessaires pour juger de l'activité de cette équipe transversale. J'ai créé et vérifié les requetes permettant de produire ces indicateurs. Toutes les requetes (ou presque) possèdent un parametre variable : l'année. J'ai contruit les requetes de manière à ce que ce parametre soit saisi systématique en utilisant =[Entrez la date :] (cf exemple ci dessous)
Ce que je souhaiterais à présent c'est une utilisation et une mise en forme de ces requètes. J'ai trouvé le moyen d'assigner une commande VBA à une requète, de manière à ce que son résultat soit exporté dans un fichier. L'exemple suivant me permet de sortir dans un fichier XLS les tranches d'age des patients suivis:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT Count(PRISE_EN_CHARGE.IddossierEMSP) AS ["Nombre de patients uniques par période (année)"] FROM (SELECT DISTINCT (PRISE_EN_CHARGE.IddossierEMSP) FROM PRISE_EN_CHARGE WHERE ((YEAR(PRISE_EN_CHARGE.Datedebutpench)=[Entrez l'année :]) OR (Year(PRISE_EN_CHARGE.Datefinpench)=[Entrez l'année :] )))
Ce qui me chagrine c'est que j'ai 50 requètes différentes et que je ne souhaites pas taper 50 fois l'année, ni me retrouver avec 50 fichiers différents. Celà est utile (les 50 fichiers), mais je cherche à "automatiser celà". J'ai actuellement plusieurs pistes dans lesquelles je me perd.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Public Sub Commande429_Click() Static qd As QueryDef DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "Tranches d'age pour une année", "c:\fichier.xls" End Sub
Le but serait de créer un formulaire au sein duquel je place de commandes (boutons) qui exécutent les requètes, le résultat serait alors exporté soit dans des fichiers différents, soit dans les feuilles d'un classeur excel. Je préfère les fichiers différents car l'export dans un classeur nécessiterait des compléments d'installation (si je me suis bien renseigné) auquel je n'aurais pas accès. Après recherche j'en suis arrivé à la solution suivante qui ne fonctionne pas : J'ai modifié le code VBA pour déclarer une variable et vérifier qu'elle est correctement enregistrée avant l'éxécution de la requète, puis j'ai essayé d'utiliser cette variable au sein de ma requete, sans succès.
Le code VBA :
Le code de la requete :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Option Compare Database Dim annee As String Public Sub Commande429_Click() Static qd As QueryDef annee = "2014" MsgBox annee DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "Age moyen des patients", "c:\fichier.xls" End Sub
Le message qui précède l'exécution de la requete me donne bien l'année 2014, mais le fichier créé ne contient pas de donnée, juste l'intitulé de de la colonne. J'ai essayé en modifiant '" & annee & "' dans tous les sens, sans succès. J'ai tenté de déclarer une fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT (Avg(age)*1.0) AS ["Age moyen des patients"] FROM (SELECT int((Date()-[Datedenaissance])/365) AS Age FROM DOSSIER_EMSP WHERE ((Year(DOSSIER_EMSP.[Date de création])='" & annee & "')) ORDER BY int((Date()-[Datedenaissance])/365) ) AS [BDD_Alias];ET de remplacer '" & annee & "' par getvalue() sans succès non plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Public Function getvalue() As String getvalue = annee End Function
Je dois avouer que je ne suis pas du tout au clair avec la déclaration des variables, et que le VBA me fait peur.
Ensuite une autre piste serait de créer un formulaire qui offrirait une vue des résultats de l'ensemble des requètes/indicateurs. La encore, si c'est facile à mettre en place, l'ouverture du formulaire demande la saisie répétées (50 fois) de l'année. Une variable commune permettrait, idéalement de définir l'année dans un champ du formulaire, puis de récuperer cette valeur lors de l'éxécution des requètes.
J'espère avoir été assez clair, et je vous remercie d'avoir pris le temps ne serait-ce que de me lire.
Partager