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 :

Macro export DDE ne fonctionne pas


Sujet :

Macro

  1. #1
    Membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2014
    Messages : 62
    Points : 63
    Points
    63
    Par défaut Macro export DDE ne fonctionne pas
    Bonjour,

    J'aimerais savoir ce qui ne va pas avec ma macro export DDE-excel. Le fichier excel qui s'ouvre ne s'appelle pas "indic&nom_&ficxls..xls" (excel me dit que indic_ est introuvable) et ne se remplit pas




    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
    libname sorties "T:\STATS\NE\sorties";
    %let nom= &sortie2;
     
    %macro filename2(ficxls);
     
    FILENAME sortie DDE "excel|&ficxls.!l7c1:l540c32" notab;
    DATA _null_;
    SET sorties.indic&nom2_&ficxls;
    FILE sortie lrecl=20000;
    PUT nb_D123'09'x nb_FM678'09'x recurrence1'09'x;
    run;
     
    %mend;
     
    %macro export3();
    %do a = 1 %to 12; /*scan les noms*/
    %let nom2 =%scan(&nom,&a.,'-');
     
    *option noXwait xsync;
    Data _null_;
    X start excel " T:\STATS\NE\sorties\indic_&nom2\&ficxls..xls";
    RUN;
     
    %filename2(recurrence1);
    %end;
     
    %mend;
    %export3

  2. #2
    Membre actif Avatar de tdiallo
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 118
    Points : 264
    Points
    264
    Par défaut
    Bonjour,

    Il faut enlever les cotes de ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    option noxwait xsync;
    data _null_;
    	X start T:\STATS\NE\sorties\indic_&nom2\&ficxls..xls ;
    run;
    Aussi dans ta macro filename2 il faut rajouter un point &nom2._:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET sorties.indic&nom2._&ficxls;

  3. #3
    Membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2014
    Messages : 62
    Points : 63
    Points
    63
    Par défaut
    merci pour les corrections.
    &sortie2 correspond à un indicateur ventilé par rapport à une de mes variables. du coup maintenant j'ai une vingtaine de pages excel vides qui s'affichent (et me disent ne pas reconnaître le chemin).

    Le fait que j'utilise &nom2 avant de le définir par la fonction scan est-il un problème ? (je crois que les macro ne sont pas procédurales contrairement au langage SAS)

  4. #4
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour AllXS7117,
    sur ta question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Le fait que j'utilise &nom2 avant de le définir par la fonction scan est-il un problème ?
    je crois que non,
    Avec l'exemple ci-dessous, j'ai réussi à ouvrir les différents fichiers Excel déclarés au préalable dans une macro variable

    voici comment j'ai procedé:

    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
    %let repertoire =alpha - beta - omega ;
    %macro ouvert;
    data _null_;
    do i=1 to 3;
    call symputx ('rep'||trim(left(i)),scan("&repertoire",trim(LEFT(i)),'-'));
    end;
    run;
     
    OPTION noXwait xsync;
    	 %do i=1 %to 3;
          X start excel "C:\indic_\indic_&&rep&i.";
     %end;
     
    %mend;
     
    %mend ouvert;
    %ouvert;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  5. #5
    Membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2014
    Messages : 62
    Points : 63
    Points
    63
    Par défaut
    Merci à toi, c'est beaucoup plus simple et ça marche ! Le seul problème c'est que j'aimerais mettre une macro-variable déjà créée à la place des valeurs de "repertoire". Cette macro-variable correspond en fait à des tables dans lesquelles il y a quelques lignes de calculs. Et ce sont ces tables que je veux exporter vers excel.

    J'ai essayé de mettre '&& avant répertoire en laissant mes valeurs telles quelles, puis de mettre %let repertoire = &macro-variable1, puis de mettre un set &macro-variable1 mais excel ne reconnait pas dans tous les cas

  6. #6
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Voici une solution:

    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
    data tab_1;
    set sashelp.class;
    run;
    data tab_2;
    set sashelp.class;
    run;
    data tab_3;
    set sashelp.class;
    run;
     
    %let table=tab_1 - tab_2 - tab_3;
    %Let fichier=alpha - beta - omega ;
    %let repertoire =&fichier;
     
    /*Ouverture de fichiers Excel*/
    %macro ouvert;
    DATA _null_;
    do i=1 TO 3;
    call symputx ('rep'||trim(LEFT(i)),scan("&repertoire",trim(LEFT(i)),'-'));
    call symputx ('tab'||trim(LEFT(i)),scan("&table",trim(LEFT(i)),'-'));
    end;
    run;
     
     
    OPTION noXwait xsync;
     %do i=1 %TO 3;
          X start excel "C:\indic_\indic_&&rep&i.";
     %end;
     
     %mend ouvert;
    %ouvert;
     
    /*Insertion des données dans les différents fichiers ouverts*/
     
    option symbolgen;
    %macro filename2;
     %do i=1 %TO 3;
          filename sortie dde "%bquote(EXCEL|C:\indic_\[indic_&&rep&i...xlsx]Feuil1!L1C1:L13C10)" notab ;
          data _null_;
          set &&tab&i;
          file sortie;
          put name $8. '09'x sex $8. '09'x age numx5.2 '09'x height numx5.2 '09'x weight 6. '09'x;
          run; 
     %end;
    %mend;
    %filename2;
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  7. #7
    Membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2014
    Messages : 62
    Points : 63
    Points
    63
    Par défaut
    non, ça ne fonctionne pas. J'ai pourtant créé les fichiers excel avec les variables. Peut-être faut-il faire une macro-variable supplémentaire pour la localisation LC:LC dans la feuille excel, voire une macro sur l'onglet

    Sur le journal j'ai

    SYMBOLGEN: && est transmis à &.
    SYMBOLGEN: Variable macro I traitée dans 12
    SYMBOLGEN: Variable macro REP12 traitée dans var12
    SYMBOLGEN: && est transmis à &.
    SYMBOLGEN: Variable macro I traitée dans 12
    SYMBOLGEN: Variable macro TAB12 traitée dans tab12

    ERREUR : le fichier physique n'existe pas (puis le chemin excel)

    180 : impossible de déterminer LINE et COLUMN
    NOTE: NOSPOOL est actif. Relancer avec l'OPTION SPOOL peut permettre de trouver la LIGNE et la COLONNE où
    l'erreur est intervenue

    Je me demande si je ne vais pas me tourner vers une solution plus simple et revoir mes programmes du coup.

  8. #8
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Ajouter un tempo après l'ouverture des fichiers Excel
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DATA _NULL_ ;
    CALL SLEEP(20,1) ;
    RUN ;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  9. #9
    Membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2014
    Messages : 62
    Points : 63
    Points
    63
    Par défaut
    Non toujours pas. ça me fait les mêmes erreurs.
    Je vais essayer une autre solution d'export avec une maquette de fichier excel

Discussions similaires

  1. TALEND : La fonction Export / Import ne fonctionne pas
    Par chebdo dans le forum Installation, migration et administration
    Réponses: 2
    Dernier message: 30/05/2011, 17h03
  2. [XL-2007] Macro filtre élaboré ne fonctionne pas
    Par schdam dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/09/2010, 07h26
  3. SSH + export X11 ne fonctionne pas.
    Par LeHibou2 dans le forum Sécurité
    Réponses: 3
    Dernier message: 06/09/2010, 17h39
  4. [XL-2003] Macro ouverture UF ne fonctionne pas
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/07/2009, 16h14
  5. macro identique qui ne fonctionne pas
    Par mindar dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/01/2008, 14h29

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