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 :

Importation Excel avec dbsastype : colonnes considérées comme du texte si le champ importé est vide


Sujet :

SAS Base

  1. #1
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 258
    Points : 127
    Points
    127
    Par défaut Importation Excel avec dbsastype : colonnes considérées comme du texte si le champ importé est vide
    Bonjour à tous,

    Mon problème est le suivant : lors de l'importation de fichiers XLSX multiple, SAS definit certaines colonnes comme du TEXT si le champ importé est vide.

    Il me faut donc pré-formater les données XLSX dès la récupération des datas via le premier Data Set en utilisant la fonction DBSASTYPE.

    Via la fonction 'FORMAT' cela ne fonctionne pas car SAS affiche le message d'erreur variable définie comme numeric & caractere.

    Le code suivant fonctionne parfaitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    LIBNAME xls_data EXCEL 'C:\test.xlsx' header = no ;
     
     
     
    data BASE_FNI_EPARGNE ;
    set xls_data.'révision vers BD$'n  (dbsastype=(	'f30'n=numeric										
    								'f31'n=numeric)) 
    ; run ;
    Le problème, c'est que je dois faire cette opération pour 20 fichiers XLSX de structure identique avec chacun 50 champs à adapter.

    L'idée est donc la suivante qui fonctionne parfaitement dans une fonction FORMAT mais pas DBSASTYEPE.

    Il s'agit s'assigner toute la structure à une variable que l'on appelle ensuite dans le code.

    Ici je la nomme 'formatage_xls' que je récupère dans notre dbsastype via '&&fomatage_xls'.

    La variable est bien reconnue mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    399  data BASE_FNI_EPARGNE ;
    400  set xls_data.'révision vers BD$'n(dbsastype=('&&fomatage_xls'));
                                           ---------
                                           23
    ERROR 23-7: Invalid value for the DBSASTYPE option.
    Voici le code posant problème ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    %let formatage_xls = 'f30'n=numeric 'f31'n=numeric ;
     
    %put _user_ ;
     
    data BASE_FNI_EPARGNE ;
    set xls_data.'révision vers BD$'n(dbsastype=('&&fomatage_xls'));
    run ;
     
    libname _all_ clear  ;
    Auriez-vous une idée ?

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    double quotes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DATA BASE_FNI_EPARGNE ;
    SET xls_data.'révision vers BD$'n(dbsastype=("&&fomatage_xls"));
    run ;
    X

  3. #3
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 258
    Points : 127
    Points
    127
    Par défaut Merci
    Bonjour,

    Merci pour cette réponse que j'ai malheureusement déjà tenté.

    Avec le double quote, nous avons en plus la variable elle-même qui n'est plus reconnue...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    4    %let formatage_xls = 'f1'n='char(10)' ;
    5
    6    data BASE_FNI_EPARGNE ;
    7    set xls_data.'révision vers BD$'n(dbsastype=("&&fomatage_xls"));
                                           ---------
                                           23
    WARNING: Apparent symbolic reference FOMATAGE_XLS not resolved.
    ERROR 23-7: Invalid value for the DBSASTYPE option.
     
    8    run ;

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    le pb se situe entre le clavier et ta chaise

    formatage_xls pas fomatage_xls

    X

  5. #5
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 258
    Points : 127
    Points
    127
    Par défaut
    Malgré cette erreur de bleusaille et bien qu'ayant rajouté le 'R' à mon clavier, ça ne passe toujours pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    3    %let formatage_xls = 'f1'n='char(10)' ;
    4
    5    data BASE_FNI_EPARGNE ;
    6    set xls_data.'révision vers BD$'n(dbsastype=("&&formatage_xls"));
                                           ---------
                                           23
    ERROR 23-7: Invalid value for the DBSASTYPE option.
     
    7    run ;

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    je propose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    %let formatage_xls = f1='char(10)' ;
     
    DATA BASE_FNI_EPARGNE ;
       SET xls_data.'révision vers BD$'n(dbsastype=(&formatage_xls));
    run ;

  7. #7
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 258
    Points : 127
    Points
    127
    Par défaut Grand Merci
    Super, selon moi ça fonctionne de la sorte car dans le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIBNAME ... header = no ;
    Car à l'origine, je reprenais le nom réel des champs qui contenaient des caractères accentués et donc devait selon moi utiliser la formulation
    Encore un grand merci pour ton aide

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

Discussions similaires

  1. Importation EXCEL avec accents et tabulations
    Par PhYx dans le forum SAS Base
    Réponses: 3
    Dernier message: 24/05/2016, 17h08
  2. Importation excel avec lien hypertexte pdf dans sharepoint
    Par helene1 dans le forum Configuration
    Réponses: 1
    Dernier message: 06/12/2011, 09h31
  3. [AC-2007] Probleme import Excel-entetes de colonnes
    Par chrisloom dans le forum Access
    Réponses: 1
    Dernier message: 03/05/2011, 18h38
  4. Réponses: 4
    Dernier message: 12/05/2009, 12h21
  5. Réponses: 4
    Dernier message: 05/12/2006, 11h43

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