IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Comment gérer les requêtes Access dont le résultat est nul lors d'un export de Access vers excel [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Comment gérer les requêtes Access dont le résultat est nul lors d'un export de Access vers excel
    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

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Tu as diverses possibilités.

    1. Si tu ne veux pas des données, tu peux tester si la requête ne retourne pas de donnée et l'ignorer.

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      if rst.recordcount<>0 then
          'Ici ta série de if elseif
        else
           'OK, ne rien faire
      end if
    2. Si tu veux quand même des données mais à 0,

      * tu peux avoir un modèle de fichier Excel qui a déjà des donnée mise à 0. Si tu as des données dans Access, elles viennent écraser celle par défaut d'Exccel.

      * tu peux "générer" des données dans Access. Par exemple, si tes données représentent le montant de tes ventes, tu peux artificiellement créer une vente de 0 Euros. Le montant existera. Si tu as besoin du nombre, il suffit de compter les ventes qui sont différente de 0 et tu auras quand même des données ... ce sera 0.

      * tu peux aussi faire une requête avec une table de référence en jointure avec tes données. Par exemple si tu veux les ventes de chaque mois, tu crées une table des mois, tu prend cette table comme source de ta requête et tu vas chercher les ventes qui correspondent au mois avec une jointure du type Tous de Mois, Ceux de Ventes qui existent.
      Si tu ne veux pas ou ne peux pas faire de jointure, tu peux utiliser les fonctions de domaine DSum, DCount, ... .
    3. Tu peux gérer le manque au niveau de Excel en faisant un test.


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Points : 8
    Points
    8
    Par défaut PB RESOLU
    Bonjour Marot!!
    Merci beaucoup pour ton message très rapide et qui m'a beaucoup aidé!!
    C'est super ça maaaaaarche!!!
    A très bientôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/02/2015, 20h30
  2. Réponses: 16
    Dernier message: 21/12/2010, 09h31
  3. Réponses: 1
    Dernier message: 22/12/2008, 09h41
  4. Comment gérer les codes postaux sous access?
    Par Jac_S_69 dans le forum Access
    Réponses: 3
    Dernier message: 01/12/2005, 21h38
  5. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo