Bonjour,

je souhaite créer une macro qui, à partir d'un nom de table, réalise la description (proc freq) de chacune des variables qui la compose vers un fichier excel.
Je souhaite que chacune des descriptions soit sur un onglet qui porte le nom de la variable décrite.

J'y arrive avec le DDE mais je dois avoir créer tout les onglets préalablement, ce qui peut être très long quand il y a beaucoup de variables.

Pour "contourner" ce problème, j'ai préalablement codé un ODS TAGSET, qui crée le fichier avec mes onglets.
Mais impossible de faire ouvrir le fichier excel automatiquement sans message d'erreur.
J'imagine que le problème vient du fait que l'ODS TAGSET génère des XML plutôt que des XLS, sans réussir à résoudre mon problème.

Voici le code jusqu'à la tentative d'ouverture:

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
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
 
%LET SAVE=C:\01 - PROGRAMMATION\02 - EXCEL\FBQ10;
%LET EXCEL=TEST;
%LET SLEEP=2;
 
PROC CONTENTS DATA=TEMP OUT=DICO NOPRINT;RUN;
 
	DATA DICO;
	SET DICO;
	/* RÉCUPÉRATION DU NOM DE CHAQUE VARIABLE DANS DES MV AINSI QUE LE NOMBRE DE VARIABLES*/
	CALL SYMPUTX(COMPRESS("NVAR"||_N_),NAME);
	CALL SYMPUTX("NBVAR",_N_);
	RUN;
 
 
	/*CREATION DU FICHIER EXCEL ET DES ONGLETS + OUVERTURE */
	%DO I=1 %TO &NBVAR;
		DATA TABLE&I;
		SET DICO;
		IF NAME="&&NVAR&I";
		KEEP NAME;
		RUN;
	%END;
			/*CRÉATION DU FICHIER XLS ET DES ONGLETS*/
	ODS TAGSETS.EXCELXP FILE = "&SAVE\&EXCEL..XML" ; 
	%DO I=1 %TO &NBVAR;
		ODS TAGSETS.EXCELXP OPTIONS (SHEET_NAME = "&&NVAR&I");
			PROC PRINT DATA=TABLE&I NOOBS;
			VAR NAME;
			RUN;
	%END;
	ODS TAGSETS.EXCELXP CLOSE;
 
			/*OUVERTURE DU FICHIER*/
	FILENAME TEST DDE ' EXCEL|SYSTEM ';
	SYSTASK COMMAND "START EXCEL";
 
	DATA _NULL_;
	DODO=SLEEP(&SLEEP);
	RUN;
 
	DATA _NULL_;
	FILE TEST;
	PUT %UNQUOTE(%BQUOTE('[OPEN(&SAVE\&EXCEL..XLS)]'));
	PUT %UNQUOTE(%BQUOTE('[SAVE.AS(&SAVE\&EXCEL..XLSX)]'));
	RUN;
Et voici le message d'erreur dans la log:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
ERROR: Session DDE n'est pas prête.
FATAL: Unrecoverable I/O error detected in the execution of the DATA step program.
       Aborted during the EXECUTION phase.

Merci d'avance pour votre aide.