1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : novembre 2017
    Messages : 2
    Points : 3
    Points
    3

    Par défaut Parcourir un CSV et exécuter une macro pour chaque ligne

    Bonjour,

    Je suis débutant en SAS et j'ai encore un peu de difficulté avec le langage donc soyez indulgents SVP.
    Je tente actuellement d'optimiser une page SAS qui inclus d'abord de nombreuses fonctions par la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %INCLUDE "/mnt/SASDATA/macro_DF.sas";
    Par la suite, j'appelle la macro "calculer" (qui est dans le fichier INCLUDE) plusieurs fois selon un paramètre différent à chaque appel. Je garde le principe simple avec t1 mais j'ai de nombreux autres paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    %LET t1 = 0.11; 
    %calculer(t1 = put(&t1, 6.2)); 
     
    %LET t1 = 0.14; 
    %calculer(t1 = put(&t1, 6.2)); 
     
    %LET t1 = 0.18; 
    %calculer(t1 = put(&t1, 6.2));
    Etc. pour des centaines d'occurrences. Le code actuel fonctionne bien mais n'est pas optimal! Plutôt que de faire cette opération des centaines de fois, on voudrait passer par un fichier excel pour que ça puisse être facilement mis à jour par une autre équipe.

    Actuellement, j'ai réussi à importer le fichier Excel dans une table SAS mais tout ce que je réussi à faire, c'est que la macro "calculer" s'exécute une seule fois sur le dernier enregistrement du fichier CSV. Voici mon 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
    %INCLUDE "/mnt/SASDATA/macro_DF.sas";
     
    data test; 
    	infile '/mnt/SASDATA/valeurs.csv' delimiter=';' FIRSTOBS=2;
    	input t1:$6.;
     	call symput("_N_",_N_);	
    run;
     
    data _null_;	
    	SET test;
    	call symput("t1",t1);
    	do i = 1 to &_N_;
    		call execute('%calculer(depense='||i||', t1 = '||put(&t1,6.2)||')'); 
    	end;
    run;
    Comment faire pour que la macro "calculer" s'exécute pour chacune des lignes provenant de mon excel?

    En espérant être clair et que quelqu'un pourra m'aider.

    Merci à l'avance!

  2. #2
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : novembre 2017
    Messages : 2
    Points : 3
    Points
    3

    Par défaut

    Bon, désolé... malgré que j'avais pourtant fait plusieurs recherches sur le forum hier, j'ai fini par trouver une inspiration qui m'a permis de résoudre mon problème.
    Pour ceux qui seraient intéressés, voici le lien :
    https://www.developpez.net/forums/d8...e-ligne-ligne/

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 21/07/2017, 17h27
  2. [XL-2003] exécuter une macro pour chaque ligne.
    Par visto94 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/07/2010, 14h48
  3. Exécution une macro pour plusieurs macrovariables
    Par SASMetrics dans le forum Macro
    Réponses: 2
    Dernier message: 26/01/2010, 13h01
  4. [VBA]Exécuter une tache sur chaque ligne d'une table
    Par Tierisa dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/04/2007, 17h53
  5. [Composants] TRichEdit: Une police pour chaque ligne
    Par naili dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/03/2003, 16h59

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