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] Attribution de la variable indice (boucle) à une variable macro


Sujet :

Macro

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Par défaut [Macro] Attribution de la variable indice (boucle) à une variable macro
    Bonjour,

    Je souhaite récupérer les différentes valeurs de la variable indice produite dans une boucle pour les attribuer à une variable macro.

    Le problème est que ma variable macro (j) ne prend pas successivement les différents incréments de la boucle mais uniquement le dernier (ici, "5")... Et donc, dans la table que je crée, au lieu d'avoir les différentes lignes "Error1", "...", "Error5", j'ai 5 lignes "Error5"!

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DATA ;
    SET fichier;
    DO I=1 TO 5;
    CALL SYMPUT ('j',I);
    IF Variable1 = I THEN DO;
    IF Variable2='Error' THEN Variable2="Error &j.";
    END;
    END;
    La question est sans doute assez "bête" vu mon niveau mais si vous aviez une idée, ça m'aiderait beaucoup!

    Merci!

  2. #2
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Par défaut
    Bonjour,
    le problème vient de la synchronisation entre ton étape Data et le compilateur macro. Quand tu écris &j, le compilateur macro essaye de remplacer ce texte par la valeur de la macro-variable AVANT l'exécution du programme (donc avant que l'étape Data ne commence). D'où le message "Error 5" systématique, à partir du moment où tu as déjà exécuté le programme au moins une fois (pour que J existe et que &J --> 5).
    Le CALL SYMPUT, lui, s'exécute PENDANT l'étape Data, et crée une macro-variable qui ne sera définitive qu'APRES le RUN de l'étape Data. Donc on ne peut pas, en règle générale, utiliser cette valeur pendant l'étape Data.
    Cela dit, pour le message d'erreur, au lieu d'utiliser &J, il suffirait d'utiliser la variable SAS I (le compteur de boucle) dont on est sûr qu'il est disponible...
    Du coup, je ne pense pas que la macro-variable soit encore utile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DATA _NULL_ ;
      SET fichier;
      DO I=1 TO 5;
        IF Variable1 = I AND Variable2='Error' THEN Variable2=COMBPL("Error "!!i) ;
      END;
    RUN ;
    Olivier

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Par défaut
    Merci beaucoup pour votre réponse.

    La solution proposée est de plus plus simple que celle que j'avais imaginée.

    Petite erreur de frappe si qqn veut se resservir de ce message: c'est "COMPBL" et non "COMBPL"

  4. #4
    Membre expérimenté


    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Par défaut
    Merci de cliquer sur
    Les balises code
    FAQ SAS
    Rubrique SAS

    Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.

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

Discussions similaires

  1. [XL-2003] Définir une variable présente dans une autre macro
    Par gandalf20000000 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/11/2009, 15h02
  2. Réponses: 9
    Dernier message: 23/06/2009, 10h54
  3. Réponses: 1
    Dernier message: 20/04/2007, 09h12
  4. [PHP-JS] mettre une variable javascript dans une variable php
    Par Mounr dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/04/2007, 09h09
  5. récupérer une variable javascript dans une variable java
    Par tx dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/07/2006, 17h55

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