IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ODS et reporting Discussion :

Ecrire dans Excel via DDE quand plusieurs fichiers Excel ouverts


Sujet :

ODS et reporting

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 2
    Par défaut Ecrire dans Excel via DDE quand plusieurs fichiers Excel ouverts
    Bonjour,

    Je souhaite écrire dans un fichier Excel depuis SAS grâce à une connexion DDE. Jusque là ça va.

    Mon problème est que si je travaille sur un autre fichier Excel (fichier A) pendant que SAS doit écrire dans le fichier qu'il a ouvert (fichier B), SAS n'écrit plus dans B parce qu'il reconnait le fichier A comme celui dans lequel il doit écrire. Je suppose parce que c'est le dernier à avoir été utilisé et resté ouvert.

    J'aimerais savoir s'il existe une instruction qui permet de forcer SAS à écrire dans le fichier qu'il a ouvert même si durant son exécution on travaille sur d'autres fichiers Excel ?

    Merci.

  2. #2
    Membre émérite
    Homme Profil pro
    responsable adjoint service stat
    Inscrit en
    Mars 2009
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : responsable adjoint service stat
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 448
    Par défaut
    Bonjour Lolly,

    Ce qui est faisable c'est :
    - je travaille sur A (et A', A'', ...)
    - SAS ouvre B, travaille sur B, ferme B (pendant ce temps je ne touche pas à A),
    - quand SAS a fini, je peux continuer de travailler sur A, qui n'a pas été fermé.

    Ce qu'il n'est pas possible de faire (à ma connaissance, et j'ai bcp travaillé avec les liens DDE par le passé), c'est de continuer à travailler avec un fichier A pendant que SAS travaille sur un fichier B.
    Pour être précis, c'est faisable, mais dangereux à cause des interactions.
    Si tu veux le tenter, il faut faire précéder toutes tes actions vers B d'une activation du classeur B, et bien préciser dans tes filenames d'import et d'export qu'il s'agit du classeur B.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data _null_;
        file SYS;
        put "[Activate(""Nom_Classeur"")]";
    run ;
    filename export1 dde "Excel|&chemin_sauv.\[&classeurB.]Nomfeuille!L1C1:L8C1";
    Entre nous, je te le déconseille quand même.

    Ce que je préconise (si ce n'est pas déjà fait), c'est de séparer sous SAS toute la partie calcul (interne SAS) et liens DDE, de façon à ce que celle ci soit la plus courte possible (pas de calculs SAS pendant que le lien DDE est actif).

    Au cas où, pour ouvrir Excel de façon optimisée :
    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
    options noxwait noxsync;
    filename sys dde "Excel|system";
    data _NULL_ ;
        length FID RC STOP 8 ;
        FID = FOPEN("SYS","S");                         
        if FID = 0 then do ;                            
            RC = SYSTEM("start excel");                 
            STOP = datetime() + 10 ;                    
            do while (FID = 0) ;                        
                FID = FOPEN("SYS","S");                 
                if (Datetime() > STOP) then FID = 1 ;   
            end ;
        end ;
        RC = fclose(FID);
    run ;
    Et pour ne pas fermer A quand SAS en a fini avec B, proscrire le QUIT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data _null_;
        file SYS;
        put "[close(""Nom_Classeur"")]";
    run;
    PS : comme je suis aujourd'hui en SAS sous Unix, je n'ai pas pu vérifier les codes envoyés ...

Discussions similaires

  1. [XL-2003] Création d'un fichier Excel à chaque rupture d'un fichier Excel de référence.
    Par Richard_35 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 21/06/2025, 11h57
  2. [XL-2010] copier depuis des fichiers excel identiques vers un seul fichier excel sous vba
    Par fleur-d'orient dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/01/2015, 18h29
  3. Réponses: 14
    Dernier message: 23/06/2014, 17h13
  4. Réponses: 1
    Dernier message: 19/03/2008, 10h51
  5. Réponses: 9
    Dernier message: 10/05/2007, 11h56

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