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

SAS Base Discussion :

Comment ouvrir une feuille EXCEL depuis SAS ?


Sujet :

SAS Base

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Comment ouvrir une feuille EXCEL depuis SAS ?
    Bonjour,

    J'ai exécuté sous SAS un programme qui me donne plusieurs tables en sortie: "IP_m_sof", "IP_m_sed", "IP_m_crea" .

    J'aimerais copié chacune de ces tables dans un fichier excel "resultats.xls" qui contient les feuilles "data_IP_sof", "data_IP_sed", "data_IP_crea".

    Je veux donc que les valeurs de la table "IP_m_sof" soit copié dans la feuille "data_IP_sof" et ainsi de suite pour les autres tables.
    Comment puis-je m'y prendre svp? Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    Salut,

    Regarde dans le forum avec ces mots clefs : PROC PRINT + TAGSETS.EXCELXP

    xav

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 53
    Points
    53
    Par défaut
    salut,

    j'avais aussi posé la même question......

    Apparemment ça ne marche pas pour la version V8, tu peut le faire avec V9

    http://www.sas.com/offices/europe/fr...sasaccess.html

    cela peut t'aider, j'espère

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Tout d'abord merci pour vos réponses car ça m'a un peu avancé .
    Mais il y a un hic. J'ai trouvé la solution "PROC PRINT + TAGSETS.EXCELXP" meilleure car je peux copier plusieurs tables sur une même feuille "stats".

    Le problème c'est que j'aimerais insérer cette feuille "stats" dans un classeur "resultats.xls" qui existe et qui contient déja des feuilles.
    Mais avec la solution "PROC PRINT + TAGSETS.EXCELXP", j'obtiens un classeur "resultats.xls" qui ne contient que la feuille "stats". Apparemment, le classeur "resultats.xls" initial a été écrasé. Comment éviter cela?

    J'ai vu que cela est possible avec la proc export, mais le problème c'est que je ne peux pas coller plusieurs tables SAS dans une même feuille.
    Quelqu'un a-t-il une idée?

  5. #5
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    je ne peux pas coller plusieurs tables SAS dans une même feuille.
    Peux tu regrouper tes tables en une seule?

    Une autre solution pour gérer plusieurs onglets consiste à passer par les dde (dynamic data exchange), que ce soit importé de ou exporté vers SAS, .. C'est un peu plus compliqué mais ca présente l'avantage d'être très flexible.

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Manoutz Voir le message
    Peux tu regrouper tes tables en une seule?

    Une autre solution pour gérer plusieurs onglets consiste à passer par les dde (dynamic data exchange), que ce soit importé de ou exporté vers SAS, .. C'est un peu plus compliqué mais ca présente l'avantage d'être très flexible.
    Effectivement, il y a l'option DDE. Mais le soucis, c'est qu'il faut renseigner toutes les variables de la table à exporter. Et dans mon cas, les noms des variables ne sont pas tjr les mêmes.

    J'ai donc essayé avec la proc export en regroupant les tables en une seule. Et manque de bol, j'ai une erreur dans la log :

    ERREUR: DBMS type EXCEL not valid for export.

    A quoi cela peut-il être dû?J'utilise SAS V9

  7. #7
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    As tu essayé de gérer le dde en language macro?

    En ce qui concerne ton erreur, c'est peut être lié au fait que tu n'aies pas certains modules de sas. Il me semble qu'il y ait un lien avec sas ACCESS, je ne suis pas sur, à confirmer donc.. D'autres personnes du forum plus calés que moi en la matière pourront peut être te renseigner.

    En tout cas tu peux voir quels modules tu possèdes en éxécutant:

  8. #8
    Invité
    Invité(e)
    Par défaut
    à mes connaissances, il faut que ton fichier Excel soit ouvert auparavant pour utiliser l'export via DDE et qu'il te faut obligatoirement SAS client lourd.



    Citation Envoyé par coco_chanel86 Voir le message
    Effectivement, il y a l'option DDE. Mais le soucis, c'est qu'il faut renseigner toutes les variables de la table à exporter. Et dans mon cas, les noms des variables ne sont pas tjr les mêmes.

    J'ai donc essayé avec la proc export en regroupant les tables en une seule. Et manque de bol, j'ai une erreur dans la log :

    ERREUR: DBMS type EXCEL not valid for export.

    A quoi cela peut-il être dû?J'utilise SAS V9

  9. #9
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Effectivement il faut qu'il soit ouvert mais ca c'est gérable via ton prg sas... En utlisant la commande X, puis le chemin par défaut de l'éxécutable Excel (qui donne accès à la page vierge XL).

    C'est quoi sas client lourd?

  10. #10
    Invité
    Invité(e)
    Par défaut
    SAS client lourd ça veut dire que t'as l'exécutable sas sur ton PC ( moteur SAS), sas client léger c'est à dire le code est soumis au serveur on trouve ce cas de figure la plus part du temps avec SAS EG.

    pour répondre au problématique de colonnes comme cité par coco_chanel86:
    ya un moyen de récupéré les colonnes de ta table :

    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
    %macro ( col , libm, matab);
    PROC SQL;
    CREATE TABLE &col. AS
    SELECT *
    FROM DICTIONARY.COLUMNS
    WHERE UPCASE(LIBNAME) = ‘&libm.’ /* ici la librerie */
    AND
    UPCASE(MEMNAME) = ‘&matab.’ /* les tables à exportées*/;
    QUIT;
     
    data _null_;
    file ...;
    set &matab;
    input (&col) (";"); /* icic le séparateur de tes données est le ; */
    run;
    %mend;

    pour ouvrir ton fichier excel depuis sas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SYSTASK COMMAND "Start Excel" ;
    /* attendre que Excel soit démarré  pour continuer le traitement*/
    DATA _NULL_ ;
    CALL SLEEP(10,1) ;
    RUN ;
    Dernière modification par fafabzh6 ; 19/11/2010 à 10h05. Motif: Suppression citation

  11. #11
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Bonjour,

    ERREUR: DBMS type EXCEL not valid for export.
    A quoi cela peut-il être dû?J'utilise SAS V9
    SAS V9 ne signifie pas que tu as SAS ACCESS TO PC FILES, module te permettant d'ouvrir et fermer des classeurs Excel comme tu veux le faire. Vérifie en faisant une PROC SETINIT;RUN;

    Si le classeur resultat.xls est une synthèse de résultats fait par plusieurs personnes/traitements au fil de l'eau alors il faudra ce module pour l'ouvrir et l'enrichir avec un nouvel onglet.
    Autrement, les ODS te permettent de créer un fichier Excel (en fait ce n'est pas réellement de l'excel mais passons...) avec un ou plusieurs onglets. Ce fichier n'est plus modifiable par programmation.

    les liens DDE sont utilisables sur un PC pour ouvrir un classeur Excel existant et y insérer un onglet ou une table dans un onglet existant. A toi de savoir comment déterminer les colonnes des tables à insérer.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  12. #12
    Membre actif
    Inscrit en
    Juillet 2010
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 199
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    on peut également ouvrir excel sans avoir le module ACCESS TO PC FILES en utilisant ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dm "winexecfile ""D:NOM DU CHEMIN/nom du fichier.xls"" "; 
               filename cmds dde 'excel|system' ;
               .....
               data _null_;
               file cmds ;
               put [quit()] ;
               run ;
    j'ai essayé avec toutes les versions 2003 et 2007 d'excel et cela les ouvre toutes les deux.

Discussions similaires

  1. [Sources/Macros] Ouvrir une feuille Excel depuis SAS : macro ouvre_excel
    Par fafabzh6 dans le forum Contribuez
    Réponses: 2
    Dernier message: 16/04/2014, 21h07
  2. [EG] Ecrire dans les cellules d'une feuille Excel depuis SAS
    Par MDsas dans le forum Outils BI
    Réponses: 12
    Dernier message: 15/12/2011, 17h35
  3. Réponses: 9
    Dernier message: 20/09/2007, 12h55
  4. Ouvrir une feuille excel et mettre son contenu dans VB6
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 17/01/2006, 09h16
  5. ouvrir une feuille EXCEL dans Delphi.NET
    Par micha382 dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 04/11/2005, 22h35

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