Bonjour tout le monde,
Savez-vous comment mettre en forme une feuille Excel via SAS. Je voudrais mettre des lignes en gras et quadrillée automatiquement la feuille Excel aussi.
Merci de votre aide.
Ash_rmy.
Bonjour tout le monde,
Savez-vous comment mettre en forme une feuille Excel via SAS. Je voudrais mettre des lignes en gras et quadrillée automatiquement la feuille Excel aussi.
Merci de votre aide.
Ash_rmy.
Il faut utiliser les commandes X4ML suivantes :
A/ pour le format du contenu : FORMAT.FONT(,,TRUE)
B/ pour le quadrillage de la page : DISPLAY(,TRUE)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 filename sys dde "Excel|system"; data _NULL_ ; file sys ; put "[SELECT(""L2C2:L3C6"")]"; put "[FORMAT.FONT(,,TRUE)]"; run ;
(à moins que tu parles de "bordure" plutôt que de quadrillage, auquel cas c'est plutôt la fonction BORDER() )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 filename sys dde "Excel|system"; data _NULL_ ; file sys ; put "[DISPLAY(,TRUE)]"; run ;
Pour chercher toutes les commandes X4ML et leur documentation précise, recherche sur le net le fichier macrofun.exe
Mais dans ton cas, plutôt que de mettre en forme depuis SAS, as tu envisagé de travailler à partir d'une maquette ?
C'est à dire que tu met en forme ton fichier Excel vierge, et tu ouvres ce fichier Excel vierge depuis SAS, tu l'alimentes avec tes données puis tu le sauvegardes ?
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 %let chemin_maquette = C:\TEMP; %let fichier_maquette = Maquette.xls ; %let chemin_sauv = C:\TEST; %let fichier_sauv = Fichier test.xls ; data _NULL_ ; file SYS ; put "[open(""&chemin_maquette.\&fichier_Maquette."",,true)]"; put "[SAVE.AS(""&chemin_sauv.\&fichier_sauv."")]"; run ; /* Alimentation des données */ data _NULL_ ; file SYS ; put "[SAVE()]"; put "[CLOSE()]"; run ;
Merci Remi Bousquet pour ton aide.
Oui j'avais envisagé de travailler avec des maquettes, cependant, comme je souhaite le faire sous Sas pour apprendre.
J'ai testé le code pour le quadrillage :
Cependant, il me place juste l'expression [DISPLAY(,TRUE)] dans la feuille Excel. Voir PJ.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 options noxwait noxsync; x '"c:\users\ash_rmy\documents\02-pgm_sas______________\results\sep_milliers.xls"'; filename write dde 'excel|c:\users\ash_rmy\documents\02-pgm_sas______________\results\[sep_milliers.xls]feuil1!l2c3:l2c5'; DATA _NULL_ ; file write ; put "[DISPLAY(,TRUE)]"; run ;
Merci de ton aide.
Ash_rmy.
En fait avec les liens dde, il y a 2 types de filename distincts
(*) Les attributions du type doublet dde :
permettent d’indiquer que l’on va exécuter une commande X4ML, dirigée depuis SAS (exemple : sauvegarde, copier - coller, tri, etc.).
Code : Sélectionner tout - Visualiser dans une fenêtre à part filename X4mlcmd dde "Excel|system";
A noter qu’il suffit de définir une seule fois le filename X4mlcmd.
(*) Les attributions du type triplet dde :
permettent de réaliser des transferts de données (importation et exportation), et l’on précise le lieu exact de l’exportation : fichier, feuille, cellule…
Code : Sélectionner tout - Visualiser dans une fenêtre à part filename export dde "Excel|chemin\[Nomfichier.xls]Nomfeuille!LiCj:Ln.Cm";
Les filename export doivent être redéfinis avant chaque exportation.
--> Dans ton code tu ulises le mauvais type de filename
Re essaie avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 filename X4MLcmd dde "Excel|system"; DATA _NULL_ ; file X4MLcmd; put "[DISPLAY(,TRUE)]"; run ;
Merci pour ces explications qui me dépannent bien !
En cherchant sur le net, j'ai trouvé un doc pas mal pour modifier les formats des cellules :
www.nesug.org/proceedings/nesug04/hw/hw01.pdf
Salut,
Quelqu'un sait si cela marche encore le dde sur Excel 2007 / 2010 ?
xav
Bonjour,
Le DDE fonctionne avec Office 2007, mais j'ai eu des soucis avec SAS version française. Il faut utiliser SAS version anglaise pour être sûr que ça marche.
Voilà une question qui mériterait un poste dédié !
Je confirme que, dans l'ensemble... ça marche avec Excel 2007.
Mais :
- pour la version française, il y a effectivement un bug. Je crois qu'il y a eu un patch, mais je ne trouve plus le message à ce sujet.
- la quasi totalité des fonctions X4ML fonctionnent. Les exceptions :
(1) WORKBOOK.COPY qui permettait de copier un onglet. Très regrettable !
(2) SELECT(""<Element de graphe>"") qui permettait de sélectionner des objets d'un graphe, tel que légende, axe, titre et série.
- un certain nombre de comportements étranges, en particulier pour les graphiques
Globalement, j'ai l'impression qu'il y a eu une vraie "rupture" avec le passage en version 2007, et que la technique des "liens DDE" en prend un vrai coup.
@+
Rémi
Partager