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

VBA Access Discussion :

Requête analyse croisée


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 76
    Par défaut Requête analyse croisée
    Bonjour,

    J'aurais besoin de votre aide pour résoudre un problème qui m'empêche d'automatiser un process que je dois réaliser toutes les fins de mois/

    le process est le suivant:
    depuis une base Access :
    1. je lance une requête analyse croisée (le code en bas)
    2. elle me donne le résultat suivant (pièce jointe : ReqRes)
    3. j'ouvre un fichier excel préformaté (pièce jointe : FicExcel)
    4. je passe les données avec un CopyFromRecodset à partir d'un Range fixe
    5. je feme le fichier


    >Voici le code de la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TRANSFORM Sum(CaParAxeParMois.salesbrutamount) AS SUMsalesbrutamount
    SELECT CaParAxeParMois.idStore+' '+[PB-Magasins.storeName] AS Expr1
    FROM CaParAxeParMois, [PB-Magasins], Fournisseur
    WHERE (AnneeMois Like '*.01' And [PB-Magasins.idMagasin]=CaParAxeParMois.idStore And [PB-Magasins.storeName] Is Not Null And CaParAxeParMois.Brand=Fournisseur.idMarque And [PB-Magasins.idMagasin] In ('34402','50202','41201','91401','38111','38112','33201','06101'))
    GROUP BY CaParAxeParMois.idStore+' '+[PB-Magasins.storeName]
    PIVOT [AnneeMois] & '/' & [idAxe];
    dans l'exemple donnée dans ReqRes :
    il y a 6 colonnes, 3 pour l'année 2008 et 3 pour l'année 2009.
    dans mon fichier exel (FicExcel), j'ai 3 colonne pour 2008 + 1 colonne pour le total 2008 + 3 colonnes pour 2009.

    mon problème est le suivant :
    comme je passe par un CopyFromRecordset, le résultat est copié vers le fichier Excel sans prendre en considération les entêtes. j'ai le contenu de la première colonne de 2009 qui se met dans le total de 2008.

    Comment pourrais-je faire pour coller correctement le résultat ?

    En espérant avoir été claire.

    Merci pour vos réponses.
    Images attachées Images attachées   

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonsoir,
    ajoute une feuille à ton fichier formatté (à la limite cachée),
    effectue le copyfromrecordset sur cette feuille brute,
    utilise les données brutes dans ta feuille formattée par référence ensuite.

    Tu peux aussi récupérer les noms de zones du recordset et les exploiter.

    Voici un exemple qui récupére les noms des zones et colle les données en dessous.

    Tu adapteras à tes besoins.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        'Paste Fields names in line 1
        Set cellule = Worksheets(ws).Range(Rg)
        For CompA = 0 To ADD_Dossier.Fields.Count - 1
            cellule.Offset(0, CompA).Value = ADD_Dossier.Fields(CompA).Name
        Next CompA
        'Paste results line above names
        Worksheets(ws).Range(Rg).Offset(1, 0).CopyFromRecordset ADD_Dossier
    Remarque perso : ta question aurait du être placée sur le forum VBA Excel, mais il est trop tard car le post croisé conduit directement à

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 76
    Par défaut
    Bonjour,

    Merci pour cette réponse.
    en fait j'avais pensé à la même solution mais je croyais que je pouvais faire la séparation directement en ajoutant genre le champ Total dans ma requête.

    si je n'ai pas le choix, je le ferais.

    sinon, mon poste concerne l'automation Access / Excel et non pas VBA Excel. c'est pour cette raison que je l'ai posté ici.

    Merci

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,
    le total dans la requête est à mon avis possible aussi. mais la-dessus je ne sais pas t'aider.

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/09/2011, 18h14
  2. Requête analyse croisée sous SQL SERVER
    Par motus_z dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/02/2006, 16h54
  3. Zones vides dans Requête Analyse croisée
    Par sbeprod dans le forum Access
    Réponses: 2
    Dernier message: 12/12/2005, 14h03
  4. Requête Analyse Croisée
    Par Daniel MOREAU dans le forum Access
    Réponses: 1
    Dernier message: 07/11/2005, 18h13
  5. Requêtes analyses croisées sous SQL Server 2000
    Par callo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/09/2005, 19h27

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