1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    août 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 11
    Points : 3
    Points
    3

    Par défaut Boucle IF /THEN dans une macro

    Bonjour

    Je souhaite transformer les données de plusieurs variables d'une table en transformant les valeurs "VRAI" par 1 et les variables "FAUX" par 0 pour chaque variable.
    Je souhaiterai faire cela à l'aide d'une macro.
    Je suis stoppé net par une erreur :

    "ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand is required. The condition was:
    1 to
    ERROR: The %FROM value of the %DO I loop is invalid.
    ERROR: The macro VRAIF_NUM will stop executing."


    Si vous pouviez me dire où se trouve le pb dans mon code je vous en serais très reconnaissant .

    Ci après 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
     
     
    %MACRO VRAIF_NUM; 
    %Let variable = A_B B_C D_E F_G ;
     
    DATA = _NULL_;
    ARRAY VECTEUR &variable; 
    CALL SYMPUT ('nombre',dim(vecteur));
    RUN; 
    %PUT &NOMBRE; 
     
        %Do i=1 to %to &NOMBRE; 
                    %LET extract=%SCAN(&variable;&i);
                        %IF &extract = 'VRAI' %THEN %LET &extract.N = 1; 
                        %IF &extract  ='FAUX' %THEN %LET &extract.N = 0; 
            %END; 
     
    %MEND VRAIF_NUM; 
     
    DATA Work.Test2; 
    SET Work.Test1; 
     
    %VRAIF_NUM ;
     
    RUN;

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    août 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 11
    Points : 3
    Points
    3

    Par défaut solution avec ARRAY

    j'ai trouvé une méthode qui fonctionne sans passer par une macro :

    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
     
    DATA work.Test2; 
    SET work.Test1; 
     
     
     
    ARRAY variable {*} A_B C_D E_F G_H;
     
    Do i=1 to dim(variable);
     	If variable{i} = 'VRAI' THEN variable{i} = 1;
    	ELSE IF variable{i} = 'FAUX' THEN variable{i} = 0;
     
    END; 
     
    RUN;
    je reste toutefois preneur d'une solution en passant par une macro :-)

Discussions similaires

  1. Boucle if dans une macro
    Par zajeanne dans le forum Débutez
    Réponses: 0
    Dernier message: 20/01/2014, 11h47
  2. Faire une boucle dans une macro
    Par dev_grou dans le forum Macro
    Réponses: 5
    Dernier message: 09/04/2010, 17h48
  3. [XL-2003] boucles dans une Macro Excel?
    Par answer3 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/12/2009, 20h07
  4. Réponses: 18
    Dernier message: 12/05/2009, 14h44
  5. Suppression des doublons par une boucle dans une macro
    Par axamen dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2009, 09h37

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