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 :

Utilisation de ROUND dans une macro


Sujet :

Macro

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Utilisation de ROUND dans une macro
    Bonjour à tous,

    Je cherche à utiliser la fonction ROUND dans une macro. Via l'utilisation de macro-variables, je veux que chaque variable de ma table SAS soit arrondie à un chiffre après la virgule... Or lorsque j'exécute ma macro, l'erreur suivante apparaît :
    "Argument 1 to function ROUND referenced by the %SYSFUNC or %QSYSFUNC macro function is not a number.
    ERROR: Invalid arguments detected in %SYSCALL, %SYSFUNC, or %QSYSFUNC argument list. Execution of %SYSCALL statement or %SYSFUNC or %QSYSFUNC function reference is terminated.
    "
    Et étrangement, une simple étape DATA en-dehors de ma macro qui teste l'opération voulue sur une variable fonctionne... 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    /*Ca ne marche pas*/
    %MACRO Test;
    %LET liste_type=AE HAE;
    %DO k=1 %TO 2;
    %LET type=%SCAN(&liste_type., &k.);
     
     
    	/*On arrondit les variables listées dans liste_var&type. à un chiffre après la virgule*/
    	%DO i=1 %TO &nb_vartable.;
    	%LET var=%SCAN(&&liste_var&type., &i.); /*La liste des variables de ma table (une centaine)*/
    		DATA Source_creacvs_&type.;
    			SET Source_creacvs_&type.;
    			&var. = %SYSFUNC(ROUND(&var., 0.1));
    		RUN;
    		%PUT La variable est &var.; /*Ca prend bien le nom de mes variables*/
    	%END;
     
     
    %END;
    %MEND;
     
    %Test;
     
    /*Ca marche*/
    DATA Source_creacvs_AE;
    	SET Source_creacvs_AE;
    	AEREG11CTHR = ROUND(AEREG11CTHR, 0.1);
    RUN;



    C'est comme si ma macro-variable var était reconnue comme une phrase (une suite de caractères) et non pas comme les variables de ma table... Auriez-vous une idée s'il vous plaît?
    Merci à vous et bonne journée.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mars 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 48
    Points : 63
    Points
    63
    Par défaut
    Etant donnée que tu es dans une étape data, la fonction round n'a pas besoin de %sysfunc().

    En tout cas moi quand je mets le code suivant je n'ai pas d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     %macro test; 
    	data class; 
    		set sashelp.class; 
    		weight2 = round(Weight); 
    	run; 
    %mend; 
    %test;
    Alors que j'ai la même erreur que toi en rajoutant un %sysfunc() devant le Round.
    Bonne journée.
    N'oubliez pas de cliquer sur résolu si votre problème est résolu .

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Re-bonjour,

    Merci Je_debute_en_sas, es-tu sûr de bien porter ton pseudonyme? Car en effet ta solution marche à la perfection... Et je note bien qu'il n'est pas nécessaire d'utiliser de %SYSFUNC au sein d'une étape DATA...
    Un grand merci et bonne journée!

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Out of memory
    Bonjour ,

    je débute en SAS.
    J'ai un pb en SAS.

    Lorsque je lance ma macro SAS J'ai une réponse out of memory
    Je ne comrepnds pas pourquoi.
    Pourriez vous m'aider?

    Merci d'avance

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mars 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 48
    Points : 63
    Points
    63
    Par défaut
    Bonjour dragon_thuha,

    Je ne sais pas dans quel contexte tu te trouves ni ce que tu veux, mais en tout cas voilà un lien qui pourra t'aider :
    http://www.developpez.net/forums/d10...out-of-memory/

    La prochaine fois que tu postes une question, essaye de ne pas la poser sur une discussion résolu. Sinon, risque de ne pas trop la voir.

    Espérant que je n'ai pas répondu trop tard.
    N'oubliez pas de cliquer sur résolu si votre problème est résolu .

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

Discussions similaires

  1. Utilisation des couleurs dans une macro excel
    Par JDP91 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2016, 07h22
  2. [Toutes versions] Utilisation de RechercherEnregistrement dans une macro
    Par damsmut dans le forum IHM
    Réponses: 5
    Dernier message: 17/11/2010, 09h33
  3. comment utiliser un programme comme une fonction dans une macro exel
    Par ERICKO dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/10/2007, 23h39
  4. Utiliser une fonction excel dans une macro et proprièté range
    Par bebel9313 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/08/2007, 14h25
  5. Bug lors de l'utilisation d'une fonction dans une macro.
    Par monf29 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/06/2007, 14h35

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