Précédent   Forum du club des développeurs et IT Pro > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Débutez
Débutez Forum concentrant les premières questions que l'on se pose en tant que débutant
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/02/2013, 11h34   #1
Laurent04
Invité de passage
 
Homme
Étudiant
Inscription : février 2013
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2013
Messages : 8
Points : 3
Points : 3
Par défaut Import avec plage de données de taille variable

Bonjour,

Je cherche à faire un import depuis un fichier Excel où le nombre de lignes à importer varie avec le temps.
Dans mon proc import, j'aimerais avoir l'équivalent de "Range("A1").end(xldown).Row
Dans le code suivant, j'aimerais récupérer le numéro de la dernière ligne contenant des données à la place des ??.

Merci pour votre aide.


Code :
RANGE="Import$A1:AF??";
Laurent04 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 13h47   #2
ludivine666
Membre à l'essai
 
Femme
Inscription : octobre 2012
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 30
Points : 22
Points : 22
Bonjour,

En utilisant les liens DDE, il me semble que la commande suivante permet de sélectionner la dernière cellule d'un onglet Excel, nommé ici "DONNEES":

Code :
1
2
3
4
5
6
7
8
9
10
11
 
DATA _null_;
file fic;
put '[OPEN("fichier.xls")]';
run;
 
DATA _null_;
file fic;
put '[workbook.activate("DONNEES")]';
put '[select.special(11)]'; 
run;
A adapter à ton problème.

Avec la Proc import par contre...
ludivine666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 14h01   #3
ludivine666
Membre à l'essai
 
Femme
Inscription : octobre 2012
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 30
Points : 22
Points : 22
Ou plus simple :

Tu crées une plage dynamique sous Excel. Ensuite tu fais un libname sur ton fichier Excel :

Code :
libname lib excel 'fichier.xls';
Tu aura ainsi une vue dans la librairie "lib" des plages que tu as définies et que tu peux je pense directement utiliser dans ta proc import.

Code :
RANGE="nom de la plage";
ludivine666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 15h51   #4
Laurent04
Invité de passage
 
Homme
Étudiant
Inscription : février 2013
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2013
Messages : 8
Points : 3
Points : 3
En fait je travaille dans le cadre de l'automatisation d'un process, je ne génère pas le fichier Excel.

S'il faut créer une plage sur Excel manuellement, autant entrer en dur les coordonnées de la plage dans le code SAS.

Le premier code tourne, mais je vois mal comment récupérer le numéro de ligne de la case que le code est censé sélectionner.
Aussi, ça m'a "tué" le fichier. Après avoir éxécuté le code, il fait 0 ko et Excel ne veut plus l'ouvrir car le format ne correspond pas avec l'extension. Si je confirme l'ouverture tout de même, le fichier est vide.

merci pour ton aide.
Laurent04 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 16h43   #5
ludivine666
Membre à l'essai
 
Femme
Inscription : octobre 2012
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 30
Points : 22
Points : 22
peut être qu'en sélectionnant le nombre max de lignes cela pourrait fonctionner...A voir si l'import ne te créé pas de lignes vides dans ton dataset

Code :
1
2
 
range = "Import$A1:AF65536"
ludivine666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h36.


 
 
 
 
Partenaires

Hébergement Web