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

Macro Discussion :

Export vers EXCEL sans connaitre le nombre des colonnes


Sujet :

Macro

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Points : 86
    Points
    86
    Par défaut Export vers EXCEL sans connaitre le nombre des colonnes
    Bonjour,
    Je veux exporter une table SAS vers un fichier EXCEL avec libellées pour les entêtes. Le nombre des colonnes n'est pas connu d'avance, donc j'ai voulu utiliser une macro pour générer la partie inconnue de l'entete (var_tot-----var_3 dans l'exemple). Mais j'ai pas ressuie, mes macro variables pour l'entête ne veulent jamais être résolues !! donc elles apparaissent comme ça dans l'entête de mon fichier EXCEL (&&var&i.. &&var&i.. &&var&i.. &&var&i.. &&var&i..
    ).

    Pour cela j'ai une table qui contient la liste des colonne (la table var), donc je l'utilise pour générer l'entête (voir le code).

    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
    /* La table a exporter */
    data test ;
    	machine="machine1" ; gropue="groupe1" ; var_tot=114 ; var_0=110 ; var_1=111 ; var_2=112 ; var_3=113 ; output ;  
    	machine="machine1" ; gropue="groupe2" ; var_tot=124 ; var_0=0 ; var_1=121 ; var_2=122 ; var_3=123 ; output ;
    	machine="machine2" ; gropue="groupe1" ; var_tot=214 ; var_0=210 ; var_1=211 ; var_2=212 ; var_3=213 ; output ;
    	machine="machine2" ; gropue="groupe2" ; var_tot=224 ; var_0=220 ; var_1=221 ; var_2=222 ; var_3=223 ; output ;
    run ;
     
    /* La table contenant les variable */
    data var ;
    	var="var_tot" ; output ;
    	var="var_0" ; output ;
    	var="var_1" ; output ;
    	var="var_2" ; output ;
    	var="var_3" ; output ;
    run ;
     
    data _null_ ;
    	set var ;
    	call symput('var' !! compress(_n_), compress(var)) ;
    	call symput('var' !! compress(_n_), compress(var)) ;
    	call symput('var' !! compress(_n_), compress(var)) ;
    	call symput('var' !! compress(_n_), compress(var)) ;
    	call symput('var' !! compress(_n_), compress(var)) ;
    	call symput('nbvar', _n_) ;
    run ;
     
    /* Macro pour la generation du header */
    %macro header ;
    %do i=1 %to 5 ;
    	'&&var&i..' '09'x
    %end ;
    %mend ;
     
     
    /* La Macro qui exporte en EXCEL */
    %macro excel;
    FILENAME EXCEL "C:/test1.xls" ; 
     
    DATA _NULL_;
            set test ;
            FILE EXCEL lrecl=25000 ;
            if _n_ = 1 then do ;
    							PUT 'Machine' '09'x 'Groupe' '09'x %header ; 
     
    				        end;
     
    PUT machine '09'x groupe '09'x %do i=1 %to 5 ;
    							   		&&var&i.. '09'x
    							   %end ;
    ;
    RUN;
     
    %mend ;
     
    %excel ;
    Quelqu'un a une idée comment je dois faire pour que ça marche ???

    PS: je peux pas utiliser la proc export parceque j'ai pas de licence de SAS access pour MS EXCEL

    D'avance Merci !

  2. #2
    Membre éclairé
    Homme Profil pro
    responsable adjoint service stat
    Inscrit en
    Mars 2009
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : responsable adjoint service stat
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 448
    Points : 823
    Points
    823
    Par défaut
    Tu exportes '&&var&i..', mais les macros variables ne sont pas résolues entre simple quote.
    Essayes avec des doubles quotes "&&var&i..".

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Points : 86
    Points
    86
    Par défaut
    Merci !

    Ça marche ta solution !


    Sidi

  4. #4
    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
    hammamr,

    Tu ne peux pas utiliser l'ODS?

    xav

  5. #5
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Merci de cliquer sur

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Points : 86
    Points
    86
    Par défaut
    Oui j'ai testé l'ODS HTML et ça marche !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ods html file="c:\test1.xls" ;
    proc print data=test noobs ;
    run ;
    ods html close ;
    Merci !

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

Discussions similaires

  1. Exporter vers excel sans menu
    Par xzéna dans le forum Langage
    Réponses: 2
    Dernier message: 16/08/2012, 15h23
  2. [PROC] Exporter vers Excel sans simple quote
    Par Tabby dans le forum SAS Base
    Réponses: 6
    Dernier message: 21/02/2012, 16h41
  3. Réponses: 4
    Dernier message: 18/03/2010, 17h34
  4. Réponses: 6
    Dernier message: 07/01/2009, 11h17
  5. Réponses: 5
    Dernier message: 25/04/2006, 16h04

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