1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    janvier 2011
    Messages
    1 105
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : janvier 2011
    Messages : 1 105
    Points : 775
    Points
    775

    Par défaut fichier Excel vers SAS , retour chariot et ACSII

    Bonjour,

    J'ai un fichier excel à plusieurs colonnes que je cherche à réimporter.

    L'une des colonnes contient une concaténation de plusieurs sous bloc comme ceci avec un point virgule suivi du "alt 0010" comme séparateur . Pour séparer les divers infos des sous bloc j'utilise le pipe | :

    blabla1|statut1|numeropersonne1;blabla2|statut2|numeropersonne2;blabla3|statut3|numeropersonne3
    Sur excel , un utilisateur a ajouté au préalable un retour chariot après le point virgule pour une question de visibilité sur son tableur .

    Une fois mon fichier Excel rapatrié dans SAS je lance une macro qui va me dé concaténé autant de fois qu'il y a de sous bloc. Si j'ai 1 point virgule je sais que j'aurais 2 lignes , 2 points virgules j'aurais 3 lignes etc ...

    Problème , lors de l'éclatement après le ";" il y a un retour chariot en début de chaine.

    Après plusieurs contrôle :

    * La fonction rank(monchamp,1) me donne 13 pour me dire que c'est un caractère ASCII de type 13.
    * de manière textuel je peut supprimer le retour chariot avec un substr à partir de la 4ème position de la chaine
    * en comptage sur la chaine SAS me dit que le retour chariot fait l'équivalent de 2 caractères ...

    Bref vous l'aurez compris je cherche une solution "propre" pour jarter le caractère "retour chariot".

    Merci de m'aiguiller

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    janvier 2011
    Messages
    1 105
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : janvier 2011
    Messages : 1 105
    Points : 775
    Points
    775

    Par défaut

    Bonjour,

    Après plusieurs jours de recherche le problème a été résolu :

    Voici la formule à utiliser suite à une concaténation d'un nombre de colonnes inconnues :

    Code SAS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data work.table ;
    set test.excel;
    length champ $1000.;
    champfin=transtrn(champorin,'; ',';');
    run;

    Je prend comme cas concret :

    * un clef primaire unique
    * un clef secondaire avec une relation 1<>N
    * vous souhaiter obtenir l'ensemble des clef secondaire en concaténant le tout
    * vous transposez votre table
    * vous obtenez un nombre de colonnes à concaténer inconnues d'avances

  3. #3
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    mai 2011
    Messages
    675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mai 2011
    Messages : 675
    Points : 1 562
    Points
    1 562

    Par défaut

    Bonsoir,
    et pour une autre fois, dans les variables contenant du texte et des caractères "exotiques", une solution propre est d'examiner préalablement les chaînes via leur visualisation en hexadecimal via un put(string,$hexw.) (http://support.sas.com/documentation...a000205099.htm) , puis selon les cas envisager un translate (pour un seul octet en jeu) ou un tranwrd (pour plusieurs octets en jeu).

    Cordialement

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    janvier 2011
    Messages
    1 105
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : janvier 2011
    Messages : 1 105
    Points : 775
    Points
    775

    Par défaut

    Citation Envoyé par JeromeMATHIAS Voir le message
    Bonsoir,
    et pour une autre fois, dans les variables contenant du texte et des caractères "exotiques", une solution propre est d'examiner préalablement les chaînes via leur visualisation en hexadecimal via un put(string,$hexw.) (http://support.sas.com/documentation...a000205099.htm) , puis selon les cas envisager un translate (pour un seul octet en jeu) ou un tranwrd (pour plusieurs octets en jeu).

    Cordialement
    Bonjour,

    Je vous remercie je garde la fonction sous la main en cas de besoin sur des contrôles de chaines

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/11/2014, 22h39
  2. Exportation d'un fichier excel vers Access
    Par Alkemist dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/01/2006, 16h37
  3. Passer d'un fichier Excel vers mon PRG VB et vice versa
    Par DAN68 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/12/2005, 13h42
  4. Migrer un fichier excel vers une base sql serveur
    Par vdavid1982 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/07/2005, 16h26
  5. [langage] fichier DOS et unix, retour chariot Mac unix
    Par Kinethe dans le forum Langage
    Réponses: 5
    Dernier message: 25/10/2004, 14h05

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