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

ODS et reporting Discussion :

Copier plusieurs tables SAS sur une feuille excel dans des plages cellules prédéfinies


Sujet :

ODS et reporting

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 36
    Points : 17
    Points
    17
    Par défaut Copier plusieurs tables SAS sur une feuille excel dans des plages cellules prédéfinies
    Salut à tous !

    Tout est dans le titre : je voudrais exporter plusieurs tables sas que j'ai en sortie d'un programme sur une seule feuille excel, mais dans des plages cellules précises. En cherchant un peu sur le net j'ai trouvé un code comme celui-là, où il suffit apparemment de créer un gabarit du type de la feuille excel qu'on veut remplir, en appelant les plages de cellules à remplir Zone_Data par exemple dans notre fichier excel :
    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
    %MACRO export_estim(OUTPUT=);
    /*D'abord on copie le gabarit qu'on a sauvegardé*/
    FILENAME _INPATH "Chemin inpath";
    	FILENAME _OUTPATH "Chemin outpath";
    	DATA _NULL_;
    	  INFILE _INPATH(Gabarit Test.xls)RECFM=N;
    	  INPUT CAR $CHAR1. @@;
    	  FILE _OUTPATH(Copie du Gabarit Test.xls) RECFM=N;
    	  PUT CAR $CHAR1. @@;
    	RUN;
    	FILENAME _INPATH CLEAR;
    	FILENAME _OUTPATH CLEAR;
    /*Puis on efface la zone remplie fictivement, étape qui sert à avoir le format d'écriture excel*/
    LIBNAME WORKBOOK EXCEL "&OUTPUT\Copie du Gabarit Test.xls"
                           SCANTEXT=NO
                           SCANTIME=YES;
    PROC DATASETS  LIBRARY=WORKBOOK  NOLIST;
    DELETE "Zone_Data"N; /* Sensible à la casse */
    QUIT;
    /*Puis on remplit la zone avec notre table*/
    DATA WORKBOOK."Zone_Data"N;
    SET Premiere_table_SAS_a_exporter(DROP=var_1);
    RUN;
    LIBNAME WORKBOOK CLEAR;
     
    %MEND;
    Mais cela ne marche pas tout à fait bien, notamment le message d'erreur suivant apparaît dans la log :
    ERROR: La MS Excel table Zone_Data a été ouverte en SORTIE. Cette table existe déjà, ou bien il y a un conflit
    de nom avec un objet existant. Cette table ne sera pas remplacée. Ce moteur ne prend pas en charge
    l'option REPLACE.
    A priori cela serait du à la dernière instruction du code, où on veut remplir la plage de cellules.

    Avez-vous une idée de comment modifier ce code ? (et de me l'expliquer un peu parce-que j'avoue ne pas tout comprendre... ) Ou alors quelque chose de plus simple ?

    Merci de votre aide !

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    En fait ce code marche parfaitement, l'erreur venait d'un problème de majuscule dans la plage de cellules excel.

    Par contre je rencontre un autre soucis toujours avec ce code :
    Il marche très bien sur SAS 9.2, mais un copié-collé sur SAS Enterprise Guide 4.3 pose un problème au niveau de la définition de la libname :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LIBNAME WORKBOOK EXCEL "&OUTPUT\Copie du Gabarit Test.xls"
                           SCANTEXT=NO
                           SCANTIME=YES;
    ne fonctionne plus sous EG, l'erreur de la log étant :
    ERROR: The EXCEL engine cannot be found.
    ERROR: Error in the LIBNAME statement.
    ERROR: Libname WORKBOOK is not assigned.
    J'ai l'impression que le moteur excel n'existe pas sous EG, mais je trouve cela étrange.
    J'ai cherché sur le net l'équivalent sous EG mais je n'ai rien trouvé de concluant. Avez-vous une idée ?

    Merci beaucoup !

  3. #3
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Avec EG , tu travailles sur le serveur local ou sur le serveur distant ?
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    C'est un serveur distant, mais cela doit être possible de définir la libname sur ce fichier excel puisque je le vois dans la bibliothèque de fichiers consultables sous SAS Guide. Qu'en penses-tu ?

  5. #5
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    C'est piossible oui mais à condition :
    1- Le serveur distant contient le module SAS connect to PCFILE.
    2- que le chemin où se trouve le fichier Excel soit reconnu par le serveur distant, celà dit si ton fichier se trouve sur des disque local, C:\ par exemple, ton serveur distant ne reconnaitra pas le chemin. Attention !! aussi au noms (chemins )des disques réseau.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    D'accord. Le fichier excel ne se trouve pas sur le disque local mais sur un lecteur réseau donc a priori de ce côté là c'est bon.

    Comment puis-je savoir si le serveur distant contient le module SAS connect to PCFILES ? Tu as un code pour faire un test ?

    Merci de ton aide en tout cas !

  7. #7
    Membre actif
    Femme Profil pro
    Analyste en Intelligence d'Affaires (BI)
    Inscrit en
    Avril 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste en Intelligence d'Affaires (BI)
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 245
    Points : 290
    Points
    290
    Par défaut
    Si ca peut aider...s'il s'agit de stocker un résultat en sortie...j'ai rencontré le même problème (mais avec ODS HTML stocker en htm ou .xls) et apparement seuls des lecteurs réseaux communiquent entre eux...donc ton EG étant sur un serveur ton chemin doit également être un chemin sur un serveur.

    Edit : j'allais dans le même sens que SAM...arriver tard mon message !

  8. #8
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    dans EG ( code à exécuter sur le serveur).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    proc product_status;run;
    ou bien
    Je recommande la première.
    puis pour savoir si le serveur SAS reconnait ton chemin , essaies déjà de définir un libname via le serveur à l'emplacement où se trouve le Fichier Excel.
    et s'il le reconnait , il ne te reste que le PCFILE à vérifier.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    J'ai essayé de définir une libname normale avec le chemin du dossier contenant mon fichier excel, cela fonctionne.

    Lorsque je fais la proc product_statuts, parmi les modules présents, la log me dit :
    For SAS/ACCESS Interface to PC Files ...
    Custom version information: 9.21_M2
    Donc a priori le serveur aurait le module PCFILES ?

  10. #10
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    - Ton serveur est Windows ?
    - Tu peux poster ton code ? tu ne t'es pas trompé du chemin ?
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Non mon serveur est Linux, et moi j'ai un pc windows, cela pourrait poser des problèmes ?

    En ce qui concerne le code, lorsque je fais la libname :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    libname malib "~/NAS/W/03.Consolidation/2012/V1 2012 (Mensuel Avril 2012)/Etude PB/Impact resultat";
    Cela fonctionne mais lorsque je fais celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIBNAME WORKBOOK EXCEL "~/NAS/W/03.Consolidation/2012/V1 2012 (Mensuel Avril 2012)/Etude PB/Impact resultat/Copie du Gabarit Test.xls";
    Cela ne marche pas, je suis sûr du nom du fichier excel puisque je l'ai copié-collé.

  12. #12
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut

    essaies ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    libname malib PCFILES  "chemain/fichier_excel.xls";
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Lorsque je remplace le nom du moteur EXCEL par PCFILES, c'est-à-dire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIBNAME WORKBOOK PCFILES "~/NAS/W/03.Consolidation/2012/V1 2012 (Mensuel Avril 2012)/Etude PB/Impact resultat/Copie du Gabarit Test.xls";
    Le message d'erreur suivant s'affiche dans la log :
    ERROR: Incorrect syntax for this LIBNAME statement. This engine does not accept a physical name.
    ERROR: Error in the LIBNAME statement.
    ...

  14. #14
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Excuses,
    Il me semble que ce n'est tout simplement pas possible sous Unix.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Aie aie aie c'est dommage c'était une bonne solution que j'avais trouvée sous SAS local pour écrire sur une feuille excel à partir de SAS, car je pouvais choisir au préalable ma mise en forme sur le gabarit que SAS copie et remplie.

    Du coup est-ce que tu aurais une autre méthode pour exporter plusieurs tables SAS sur une même feuille excel, où il est possible de choisir où les exporter exactement sur la feuille, avec une mise en page que l'on peut choisir ?

  16. #16
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ODS TAGSET.EXCELXP
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    D'accord très bien je vais chercher de ce côté-là. Je reviendrai vers toi si jamais je rencontre des problèmes.

    Merci infiniment de ton aide en tout cas !

  18. #18
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Pas de problème,
    t'as aussi la possibilité d'exporter en CSV + définir une maquette Excel avec une macro ( VBA) qui recharge automatiquement le fichier CSV à l'ouverture .
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Salut !

    Je reviens vers toi pour deux petites questions au sujet de l'utilisation des tagset.

    1) En fait je voudrais exporter plusieurs tables SAS sur une seule et même feuille excel, alors que mon code, tel que ci-dessous, me crée une feuille pour chaque table. Quelles sont les options pour disposer comme l'on veut les tables SAS sur la feuille excel ?

    2) SAS exporte aussi la colonne observation (c'est-à-dire les numéros de ligne) sur la feuille excel, je ne voudrais pas avoir cette colonne, et je voudrais que du coup la colonne qui sera le plus à gauche ait un fond gris. Comment puis-je faire ?

    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
    LIBNAME boubou "~/NAS/W/03.Consolidation/2012/V1 2012 (Mensuel Avril 2012)/Etude PB/Impact resultat";
    LIBNAME BIB_PERS "~/NAS/W/03.Consolidation/2012/V1 2012 (Mensuel Avril 2012)/Etude PB/Impact resultat/Tagset";
     
    ODS PATH BIB_PERS.TMPLMST(READ)
             SASHELP.TMPLMST(READ);
    ODS LISTING CLOSE;
    ODS TAGSETS.ExcelXP PATH="~/NAS/W/03.Consolidation/2012/V1 2012 (Mensuel Avril 2012)/Etude PB/Impact resultat" 
                        FILE="export_test.xls"
                        STYLE=SANSPRINTER;
    ODS TAGSETS.ExcelXP OPTIONS (sheet_name="SORTIE" sheet_interval="proc");
     
    proc print data=boubou.triangle_liquidations_charge label;
    run;
    quit;
     
    proc print data=boubou.triangle_liquidations_primes label;
    run;
    quit;
     
    ODS TAGSETS.ExcelXP CLOSE;
    ODS LISTING;
    Merci beaucoup de ton aide !

  20. #20
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut
    Bonjour,

    Pour mettre les 2 tableaux dans une même feuille, j'utiliserais (non testé) :
    Et pour la mise en forme de la proc print :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    proc print DATA=boubou.triangle_liquidations_charge label noobs;
    id nom_variable;
    run;

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/10/2016, 18h53
  2. Export table SAS vers une feuille Excel
    Par aminao dans le forum Macro
    Réponses: 6
    Dernier message: 12/01/2012, 18h08
  3. copier une table access vers une feuille excel
    Par adelsunwind dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/06/2010, 18h25
  4. Importer une feuille excel dans une table Paradox ?
    Par Dalgo75 dans le forum Bases de données
    Réponses: 8
    Dernier message: 07/05/2006, 11h49
  5. ecrire sur une feuille excel avec Asp
    Par Ajay dans le forum ASP
    Réponses: 7
    Dernier message: 06/01/2006, 23h18

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