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

SAS Base Discussion :

Repérer les données vides dans une table [DATA]


Sujet :

SAS Base

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 376
    Points : 199
    Points
    199
    Par défaut Repérer les données vides dans une table
    Bonjour,

    Je souhaiterai exécuter une macro lorsque une valeur de certains champs de ma table sont vides.
    Je récupère le numéro de ligne + le nom du champ dont la valeur est vide.

    J'ai écris le code suivant mais je n'arrive pas à récupérer correctement le numéro de ligne + le nom du champ puis exécuter la macro "verification" :
    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
    DATA table;
    INPUT
    champ1 	
    champ2 	$
    ;
    CARDS;
    1 a
    2 .
    3 c
    ;
    RUN;
     
    %MACRO programme();
    DATA _NULL_;
    	SET table;
    	IF champ1 = ' ' THEN %STR(%verification(_N_ , champ1)(_N_));
    	IF champ2 = ' ' THEN CALL EXECUTE(%verification(_N_ , champ2)(_N_));
    RUN;
    %MEND;
     
    %MACRO verification(ligne , champ);
    	%PUT Champ &champ vide pour la donnée &donne à la ligne &ligne;
    %MEND;
     
    %programme();
    Merci pour l'aide

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    c'est pas beau mais je pense que ça marche...
    DATA TABLE;
    INPUT
    champ1
    champ2 $
    ;
    CARDS;
    1 a
    2 .
    . c
    4 .
    5 b
    6 .
    7 m
    ;
    RUN;
    option nonotes;

    %MACRO programme(quelchamp);
    data _null_;
    if 0 then set table nobs=nombre;
    call symput('nombreobs',left(put(nombre,8.)));
    stop;
    run;
    %do i=1 %to &nombreobs.;
    %let maisoudonc=0;
    DATA _null_;
    SET TABLE;
    if _n_=&i.;
    IF &quelchamp. = "" THEN call symput("maisoudonc",_n_);
    RUN;
    %if &maisoudonc.>0 %then %do;
    %PUT Champ &quelchamp. vide à la ligne &maisoudonc.;
    %end;
    %end;
    %MEND;

    %programme(champ1);
    %programme(champ2);

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 376
    Points : 199
    Points
    199
    Par défaut
    Bonjour,

    Parfait ! ce code répond parfaitement à ma question.

    Merci beaucoup

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

Discussions similaires

  1. Utiliser les champs vides d'une table dans un code
    Par marcelstan dans le forum Access
    Réponses: 1
    Dernier message: 23/03/2015, 12h34
  2. Réponses: 7
    Dernier message: 16/05/2013, 15h37
  3. Réponses: 7
    Dernier message: 05/09/2008, 11h07
  4. Enlever les données identiques dans une table
    Par DubeiserTM dans le forum Langage SQL
    Réponses: 15
    Dernier message: 31/01/2007, 21h14
  5. Enlever les données identiques dans une table
    Par DubeiserTM dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/01/2007, 18h27

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