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 :

Générer X tables à l'aide d'une macro


Sujet :

Macro

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 67
    Points : 56
    Points
    56
    Par défaut Générer X tables à l'aide d'une macro
    Bonjour,

    J'utilise le code suivant :

    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
    data aleatoires2;
    set aleatoires;
    keep col1 col2 col3;
     
     
    %macro Assemblage (param);
     
    %do i = 1 %to &param.;
     
    	data aleatoires_"&i.";
    	set aleatoires2;
    	keep col&i.;
    	run;
     
    	proc sql;
    	create table aleat_"&i." as
    	select *
    	from contrats and aleatoires_&i.;
    	on contrats._N_ = aleatoires_&i.._N_;
    	quit;
     
    %end;
     
    %mend;
     
    %Assemblage (3);
    J'observe des erreurs via la première phase de la macro, SAS me marque l'erreur suivante :

    NOTE: Line generated by the macro variable "I".
    5452 "1
    __
    22
    200
    ERROR 22-322: Syntax error, expecting one of the following: (, '.', AS, LIKE.

    ERROR 200-322: The symbol is not recognized and will be ignored.

    NOTE: Line generated by the macro variable "I".
    5452 aleatoires_1
    ____________
    22
    76
    ERROR 22-322: Syntax error, expecting one of the following: ',', GROUP, HAVING, ORDER, WHERE.

    ERROR 76-322: Syntax error, statement will be ignored.
    L'erreur qui m'est indiquée est justement ce que j'aimerais obtenir : une suite de tables (ici trois pour l'exemple, concrètement j'aimerais en avoir 2000 de ce type).

    Comment bien s'y prendre ?

    Je vous remercie d'avance et vous souhaite une agréable journée.

  2. #2
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    Bonjour,

    Pourquoi mettre des guillemets entourant ta macrovariable &i ? Essaye sans et ça devrait marcher.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 67
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Tout d'abord, merci pour ta réponse.

    J'avais essayé mais cela n'a pas fonctionné. En effet, j'observais une erreur au même endroit.

    Bonne journée.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    A quoi ressemble ta table contrat (variables notamment) et sur quoi cherches-tu à faire ta jointure dans ta proc SQL ?

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    En enlevant les guillemets j'ai supprimé les erreurs dont tu parles en partant d'un programme tout bête dans ce genre :

    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
    data aleatoires;
    input col1 col2 col3;
    cards;
    1 2 3
    4 5 6
    7 8 9
    ;
    run;
     
    data contrats;
    input col1 col2 col3;
    cards;
    1 1 1
    4 2 2
    7 3 3
    ;
    run;
     
    data aleatoires2;
    set aleatoires;
    keep col1 col2 col3;
    run;
     
    %macro Assemblage(param);
    %do i = 1 %to &param.;
    	data aleatoires_&i.;
    		set aleatoires2;
    		keep col&i.;
    	run;
    %end;
    %mend;
     
    %Assemblage(3);
    Après, il y a un problème dans ta jointure. Le and dans le from n'est pas reconnu notamment, et tes paramètres de jointure dans le on semblent bizarres.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/10/2012, 00h12
  2. [Macro]Mise à jour d'une table à l'aide d'une macro
    Par Jean-Luc80 dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/04/2007, 19h59
  3. [VBA-E] Copier une macro dans un fichier à l'aide d'une macro
    Par Capsule dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/01/2007, 20h05
  4. [VBA-E]Ouvrir une image jpg àl'aide d'une macro
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/03/2006, 09h47
  5. [VBA] Excell : demande d'aide pour une macro
    Par Fealendril dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/01/2006, 16h28

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