Chers tous,
Je suis novice sur le code sql sur Access. J'utilise Access 2007 pour des données utilisées à des fin statistiques
1/J'ai plus de 10 requêtes access qui doivent s'exporter directement vers un fichier Excel donné. Requêtes simples qui consistent à compter le nombre de données enregistrés tous les mois
2/Les données doivent aboutir sur un seul et même onglet.
3/cet export se fait tous les mois pour avoir les données du mois dernier (M-1). Je n'ai eu aucun problème jusqu'à présent.
4/Le problème c'est que aujourd'hui nous sommes en janvier 2016 et certaines requêtes donnent un résultat nulle: à la fois pour la date et pour le résultat de la requête, la macro d'export plante quand le résultat de la requête est nulle.
Ma question est comment dire à Access: que pour ces données il faut mettre 0
ci-dessous le code qui a toujours fonctionné tant que le résultat des requêtes n'est pas nul.
Merci beaucoup pour votre aide car je sècle complètement.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 Public Sub ExportReq() ' déclaration des variables Dim reqListe() As String ' Reqau où on va stocker la liste des Reqs Dim xlApp As Excel.Application ' ne pas oublier de cocher la référence Excel Dim xlBook As Excel.Workbook ' le classeur où se trouve la feuille Dim xlSheet As Excel.Worksheet ' la feuille où on va stocker les Reqs Dim db As DAO.Database ' nous utilisons la bibilothèque DAO Dim rst As DAO.Recordset ' le recordset pour récupérer les données des Reqs Dim i As Integer ' pour boucler sur les Reqs Set db = CurrentDb ' on rempli le Reqau avec 3 Reqs ReDim reqListe(13) reqListe(0) = "R_STATS_TIERS" reqListe(1) = "R_STATS_FLEX" reqListe(2) = "R_STATS_HORS_FLEX" reqListe(3) = "R_STATS_NOSTRI" reqListe(4) = "R_STATS_RMA" reqListe(5) = "R_STATS_DEST" reqListe(6) = "R_STATS_CONDFIN" reqListe(7) = "R_STATS_CONTRATS" reqListe(8) = "R_STATS_BILATERA" reqListe(9) = "R_STATS_ECS" reqListe(10) = "R_STATS_TG2" reqListe(11) = "R_STATS_AUTRES_SYSTEMES" reqListe(12) = "R_STATS_LIEN_COUVERTURE" ' on ouvre notre classeur Excel Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("N:\Projets03\PSE_GD\PFX_PSE_GD\STATS\STATREF.xlsm") Set xlSheet = xlBook.Worksheets("DATA") 'ici on va stocker dans la feuille DATA ' bouclage sur les Reqs pour remplir la feuille For i = 0 To UBound(reqListe()) - 1 Set rst = db.OpenRecordset("SELECT * FROM " & reqListe(i) & ";") If i = 0 Then xlSheet.Range("A2").CopyFromRecordset rst ElseIf i = 1 Then xlSheet.Range("F2").CopyFromRecordset rst ElseIf i = 2 Then xlSheet.Range("J2").CopyFromRecordset rst ElseIf i = 3 Then xlSheet.Range("O2").CopyFromRecordset rst ElseIf i = 4 Then xlSheet.Range("S2").CopyFromRecordset rst ElseIf i = 5 Then xlSheet.Range("W2").CopyFromRecordset rst ElseIf i = 6 Then xlSheet.Range("AA2").CopyFromRecordset rst ElseIf i = 7 Then xlSheet.Range("AE2").CopyFromRecordset rst ElseIf i = 8 Then xlSheet.Range("AJ2").CopyFromRecordset rst ElseIf i = 9 Then xlSheet.Range("AN2").CopyFromRecordset rst ElseIf i = 10 Then xlSheet.Range("AR2").CopyFromRecordset rst ElseIf i = 11 Then xlSheet.Range("AV2").CopyFromRecordset rst ElseIf i = 12 Then xlSheet.Range("BA2").CopyFromRecordset rst End If Next i ' libération des objets xlBook.Save xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing 'Set xlApp = Nothing Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True 'MsgBox "Fin de traitement" 'me permet d'ouvrir excel directement xlApp.Workbooks.Open ("N:\Projets03\PSE_GD\PFX_PSE_GD\STATS\STATREF.xlsm") xlApp.Workbooks("STATREF.xlsm").Sheets("DATA").Activate End Sub
Partager