Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > ODS et reporting
ODS et reporting Forum d'entraide sur les fonctionnalités de reporting de SAS : gérer les sorties et graphiques de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/05/2011, 14h44   #1
Invité régulier
 
Femme
Inscription : mai 2011
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 30
Points : 6
Points : 6
Par défaut Grouper des documents EXCEL

Bonjour,

Je souhaiterais savoir si on peut grouper des fichiers excel, pour n'en former. Et chaque fichier correspondrait à un onglet.
Les liens DDE chez moi ne fonctionne pas. Je passe par un ODS HTML pour créer une mise en forme dans le fichier Excel, car avec l'ODS TAGSET.EXCELXP ça ne fonctionne pas ! Je n'arrive pas à créer de mise en forme comme je veux !

Donc finalement, pour résumer je voudrais ..

J'ai 3 fichier excel différents :
- aaa.xls
- bbb.xls
- ccc.xls

Et je voudrais dans un seul fichier regroupement.xls, les onglets aaa, bbb et ccc.

En espérant avoir été clair, et que cela est possible !
Merci
marion.bouilly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 14h53   #2
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Salut,
Ya pas moyen de regrouper les 3 tables qui ont alimenté les 3 onglets, faire ta mise en forme et ODS par la suite?
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 14h54   #3
Membre actif
 
Inscription : mars 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 149
Points : 162
Points : 162
Bonjour,

Si depuis SAS, tu peux exécuter un scrip VBS,( Notamment si tu as SAS en local) tu peux lancer le code suivant.

Tu peux aussi bien sur stocker le script VBS sur ton poste et n'éxécuter dans SAS que les 4 dernières lignes.

Code :
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
%let work = %sysfunc(pathname(WORK)); 
%let vbs = &work.\loadsheets.vbs; 
 
filename vbs "&vbs"; 
 
DATA _null_; 
  file vbs; 
  input; 
  put _infile_; 
cards4; 
path    = WScript.Arguments(0) 
pattern = WScript.Arguments(1) 
OUTFILE = WScript.Arguments(2) 
 
' convert pattern (presumed to be DOSish) to regex pattern 
 
regex = Replace (pattern, ".", "\.") 
regex = Replace (regex, "*", ".*") 
regex = Replace (regex, "?", ".") 
regex = "^" & regex & "$" 
 
' scan the files IN the path, keeping track of which ones 
' match the pattern in an array named source 
 
Set fs = CreateObject("Scripting.FileSystemObject") 
Set folder = fs.GetFolder (path) 
Set files = folder.Files 
 
Set rx = New RegExp 
 
rx.Pattern = regex 
rx.IgnoreCase = true 
 
Dim source() 
count = -1 
For Each f in files 
  if rx.Test (f.Name) then 
    count = count + 1 
    ReDim preserve source(count) 
    source(count) = f.Name 
  end if 
Next 
 
if count = -1 then WScript.Quit 
 
' might want TO sort source(), but vbs has no sort FUNCTION! 
' so, forget about it 
 
' open excel AND make it work FOR us 
' read in each source (html) into a new sheet, 
' copy the whole thing AND 
' paste it into a new sheet in the workbook 
 
Set xl = CreateObject("Excel.Application") 
xl.Workbooks.Close 
 
Set book = xl.Workbooks.Add 
 
For i = lbound(source) to ubound(source) 
  Set sheet = book.Sheets.Add(,book.Sheets(i+1)) 
 
  sheet.Name = Left (source(i), Len(source(i))-13) 
  Set parse = xl.Workbooks.Open (path &"\"& source(i)) 
  parse.Sheets(1).UsedRange.Copy 
  sheet.Paste 
  xl.CutCopyMode = false ' Clear clipboard so big clipboard dialog will NOT appear when closing parse 
  parse.Close 
  sheet.Range("A1:A1").SELECT 
Next 
 
book.Sheets(1).Visible = false 
book.Sheets(1).Activate 
 
book.SaveAs (OUTFILE) 
xl.Quit 
;;;; 
run; 
filename vbs; 
 
options noxwait xsync xmin; 
%let vbs = loadsheets.vbs; 
x cd "&work"; 
x "&vbs ""H:\12_TDB\tdb_RFA\tx_equipement_cars\rpt"" ""eqpm_cars_eer*&jour..xls"" ""H:\12_TDB\tdb_RFA\tx_equipement_cars\rpt\eqpm_cars_eer_&jour..xls""";
PS: que veux tu faire avec l'ODS tagsets.excelxp qui fonctionne sous ODS HTML extension XLS.

Bon courage.
la2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 14h56   #4
Invité régulier
 
Femme
Inscription : mai 2011
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 30
Points : 6
Points : 6
Salut Megamind2;

Je ne comprends pas réellement ce que tu essaye de me dire !
marion.bouilly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 14h57   #5
Invité régulier
 
Femme
Inscription : mai 2011
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 30
Points : 6
Points : 6
Salut La2002,

Avec ODS HTML extension XLs, je peux mettre en forme en choississant le fond de mes cellules ... alors que dans ODS TAGSETS.EXCELXP, quand j'essaye d'ouvrir le fichier Excel il me dit qu'il ne reconnait pas Style ..
marion.bouilly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 15h07   #6
Membre actif
 
Inscription : mars 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 149
Points : 162
Points : 162
Citation:
Envoyé par marion.bouilly Voir le message
Salut La2002,

Avec ODS HTML extension XLs, je peux mettre en forme en choississant le fond de mes cellules ... alors que dans ODS TAGSETS.EXCELXP, quand j'essaye d'ouvrir le fichier Excel il me dit qu'il ne reconnait pas Style ..
- As tu la dernière version du tagsets.excelxp ? L'option Style devrait marcher sur les proc classiques : print, tabulate, report...

- Sinon, peux tu transmettre ton code ?
la2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 15h09   #7
Invité régulier
 
Femme
Inscription : mai 2011
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 30
Points : 6
Points : 6
La2002,

Je ne sais si j'ai la dernière version de TAGSETS.EXCELXP ! Je suis en SAS V9.2 ! donc normalement je devrais l'avoir ..

En espérant que tu puisse m'aider.

Code :
1
2
3
4
5
6
7
8
9
10
11
ODS TAGSETS.EXCELXP FILE="&rootmain.\SAS\HTML\Contactable.xls";
	TITLE "Contactable Distribution";
	PROC TABULATE  DATA=source.base_client_coupon;
	CLASS TOPMARDMCONT  TOPMAREMCONT TOPMARPHCONT;
	VAR external_card_number;
	CLASSLEV TOPMARDMCONT  TOPMAREMCONT TOPMARPHCONT / STYLE=[BACKGROUND=white FOREGROUND=black];
	TABLE TOPMARDMCONT="Contact Papier"  TOPMAREMCONT="Contact E-MAIL" TOPMARPHCONT="Contact Téléphone" ALL="Total", 
		  external_card_number= "Customers" 
		  * (N= 'Effectifs' PCTN= "%");
	RUN;
ODS TAGSETS.EXCELXP CLOSE;
marion.bouilly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 15h56   #8
Membre actif
 
Inscription : mars 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 149
Points : 162
Points : 162
Marion,

Lance ce bout de code, tu verras dans la log de quelle version tu possèdes?

Code :
ODS tagsets.excelxp  options(doc="help") ;
Si tu es en 1.116 tu as la dernière, sinon va chercher la dernière version à l'adresse http://support.sas.com/rnd/base/ods/odsmarkup/

Quant à ton code, il me parait correct.

Sinon, je ne saurais te dire, tagsets.excelxp peut aussi donner des résultats surprenants suivant les versions d'Excel.

Et le prgm vbs que je t'ai fourni, as tu essyer de l'adapter à ton besoin. Normalement, tu n'as besoin de toucher que les 4 dernières lignes.
A+
la2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 16h27   #9
Invité régulier
 
Femme
Inscription : mai 2011
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 30
Points : 6
Points : 6
La2002,
Quand je copie colle ton code, après le cards4; Tout est surligné en jaune pale ? Est-ce normal ?

(Je t'avoue que j'ai du mal à comprendre ton code aussi ! :s)
marion.bouilly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 17h35   #10
Membre actif
 
Inscription : mars 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 149
Points : 162
Points : 162
Marion,

Le but du code fourni est d'exécuter un fichier VBS qui exécutera les traitements de groupage de fichier.

Lignes 1 à 3 =>
Allouer un fichier vbs dans le répertoire physique de la work. Il est nommé loadsheets.vbs
J'aurais très bien pu le mettre dans un autre dossier pour éviter de le réécrire à chaque exécution de SAS.


Lignes 6 à 77 =>Ecriture de l'étape DATA, qui va écrire dans ce fichier vbs.
Il s'agit d'un code Visual Basic. Je reviens plus tard sur ce code.

Concernant les 3 dernières lignes :

%let vbs = loadsheets.vbs;
x cd "&work";

C'est une commande DOS, qui va permettre de se placer dans le dossier de la work.(&Work=> défini comme %sysfunc(pathname(WORK)); voir la 1ere ligne.

x "&vbs ""H:\12_TDB\tdb_RFA\tx_equipement_cars\rpt"" ""eqpm_cars_eer*&jour..xls"" ""H:\12_TDB\tdb_RFA\tx_equipement_cars\rpt\eqpm_cars_eer_&jour..xls""";

Exécution du programme VBS qui a 3 paramètres :

1) Le dossier où sont stockés les fichiers à rassembler => H:\12_TDB\tdb_RFA\tx_equipement_cars\rpt

2) Les fichiers à rassembler => Ici, eqpm_cars_eer*&jour..xls .
Ainsi tous les fichiers Excel qui commencent par eqpm_cars_eer et qui se termine par la valeur de &jour. Tous ces fichiers doivent être placés dans le dossier du paramètre 1.

3) le fichier de sortie.
H:\12_TDB\tdb_RFA\tx_equipement_cars\rpt\eqpm_cars_eer_&jour..xls


Maintenant, si je reviens sur le code VBS :

1) on récupère les paramètres

path = WScript.Arguments(0)
pattern = WScript.Arguments(1)
OUTFILE = WScript.Arguments(2)

2) on fait une recherche de tous les fichiers à rassembler.
Il y en a "count" fichiers.

3) on ouvre ensuite un nouveau classeur Excel (Book).

4) pour chaque fichier à rassembler,
on ouvre le fichier.
on copie colle la feuille dans une nouvelle feuille du classeur Excel.
Le nom de la feuille est
"sheet.Name = Left (source(i), Len(source(i))-13) ".
Cela doit être adapté à ton cas.

on ferme le fichier qui vient d'être copier.


5) On se place sur la 1ere feuille. (Mais je ne sais plus pourquoi je masquais la 1ere feuille)

6) On enregistre le classeur crée sous le nom OUTFILE, qui est le 3ème paramètre.

7) je quitte Excel xl.quit;;;;



En espérant que cela t'aidera, cela fonctionne bien si tu es en local.
la2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 09h54   #11
Invité régulier
 
Femme
Inscription : mai 2011
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 30
Points : 6
Points : 6
Bonjour La2002,

Je te remercie d'avoir pris le tps de m'expliquer tout le programme il me semble maintenant un peu plus compréhensible.
Cependant, j'aurais une question. J'ai changer le chemin où se trouvait les fichiers, les fichiers ainsi que la sortie. Seulement, une fenêtre m'arrive. (voir la pièce jointe !)

Est-ce que cela t'es déjà arrivé ?
Je ne comprends pas pk ça me le fait !
Images attachées
Type de fichier : jpg pb.JPG (20,8 Ko, 4 affichages)
marion.bouilly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h50   #12
Invité régulier
 
Femme
Inscription : mai 2011
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 30
Points : 6
Points : 6
La2002,

J'ai réussi à régler mon pb.
Il fallait juste que je donne un nom plus long à mes fichier, car je ne comprends pas ce phénomène, mais chaque onglet se voit réduit de deux lettres à chaque fois. Est-ce que c'est dans le programme que ça fait ça ?

Je te remercie encore une fois La2002, pour le tps que tu m'as accordé.
marion.bouilly est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h16.


 
 
 
 
Partenaires

Hébergement Web