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

SAS Base Discussion :

lancer une macro VBA excel à partir de SAS base


Sujet :

SAS Base

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 167
    Points : 65
    Points
    65
    Par défaut lancer une macro VBA excel à partir de SAS base
    Bonjour,

    Je voudrais automatiser mon traitement excel à partir de SAS. J'ai une macro qui se presente ainsi:


    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
    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
    84
    85
    86
    Sub test()
    '
    ' test Macro
    ' Macro recorded 16/12/2009 by jaliouu
    '
     
    '
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "=TODAY()"
        Range("A2").Select
        Columns("A:A").ColumnWidth = 13.29
        Rows("1:1").RowHeight = 26.25
        Range("A1").Select
        Selection.Font.Bold = True
        Range("C1").Select
        ActiveCell.FormulaR1C1 = "STATISTICS on production of manufactured"
        Range("C1:R1").Select
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Selection.Merge
        Selection.Font.Bold = True
        With Selection.Font
            .Name = "Arial"
            .Size = 14
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
        End With
        Range("C2").Select
        ActiveCell.FormulaR1C1 = "To use the database"
        Range("C2:R2").Select
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Selection.Merge
        Selection.Font.Underline = xlUnderlineStyleSingle
        Range("A3").Select
        ActiveCell.FormulaR1C1 = "PRODCOME code"
        Range("B3").Select
        ActiveCell.FormulaR1C1 = "UNIT"
        Range("C3").Select
        ActiveCell.FormulaR1C1 = "Flag EU27"
        Range("C4").Select
        Columns("C:C").ColumnWidth = 10
        Range("D3").Select
        ActiveCell.FormulaR1C1 = "flag eu25"
        Range("E3").Select
        ActiveCell.FormulaR1C1 = "value eu25"
        Columns("F:F").Select
        Range("F3").Activate
        Columns("E:E").ColumnWidth = 9.71
        Range("F3").Select
        ActiveCell.FormulaR1C1 = "base EU25"
        Range("G3").Select
        ActiveCell.FormulaR1C1 = "Belgium"
        Range("H3").Select
        ActiveCell.FormulaR1C1 = "Bulgaria"
        Range("H4").Select
        ActiveCell.FormulaR1C1 = "ALL VALUE AND VOLUMES ARE"
        Range("H5").Select
        ActiveCell.FormulaR1C1 = "ALL CONFIDENTIEL DATA"
        Range("H6").Select
        ActiveCell.FormulaR1C1 = "(:C)=confidentiel, (:CE)=Confidentiel"
        Range("H7").Select
    End Sub
    Comment puis je faire pour l executer de SAS?

    Merci

  2. #2
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    connais-tu le DDE ?

    je crois me souvenir que c'est possible par ce biais.

    Si tu es dans EGUIDE+Serveur c'est quasiment impossible.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

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

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 448
    Points : 823
    Points
    823
    Par défaut
    Dans l'idée il faut
    1- Démarrer Excel (ici le code "optimisé")
    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 ;
    2- Ouvrir ton fichier Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data _null_;
        file SYS;
        put "[ERROR(false)]"; /* Pour éviter message sur MàJ */
        put "[open(""&CHEMIN.\&FICHIER."",,TRUE)]";
    run;
    3- Lancer ta macro Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data _NULL_ ;
        file sys;
        put "[run(""NomMacro"")]";
    run;
    Le tout peut être, si besoin, complété en fermant le fichier Excel, en quittant Excel, etc.

  4. #4
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    il connaît maintenant
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 167
    Points : 65
    Points
    65
    Par défaut
    Merci beaucoup ca marche. Et pour fermer excel?

    Merci

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

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 448
    Points : 823
    Points
    823
    Par défaut
    Pour fermer le fichier Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data _null_;
        file SYS;
        put "[close()]";
    run;
    Pour quitter Excel (pas forcément recommandé!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data _null_;
        file SYS;
        put "[QUIT()]";
    run;
    Pour avoir toutes les commandes du langage X4ML :
    --> rechercher sur le net l'aide du langage, un fichier qui s'appelle MacroFun.exe

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 167
    Points : 65
    Points
    65
    Par défaut
    Merci ca m'a vraiment aidé.

    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/03/2014, 13h39
  2. Lancer une macro VBA à partir d'un complément
    Par knarf44 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 09/08/2011, 12h48
  3. [Toutes versions] Traiter un fichier txt à partir d'une macro VBA Excel
    Par alaize dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/07/2011, 15h25
  4. [PPT-2003] Lancer une macro dans PPT à partir d''Excel
    Par Daejung dans le forum VBA PowerPoint
    Réponses: 4
    Dernier message: 30/11/2009, 11h19
  5. [WD11] Lancer une macro VBA Excel
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 1
    Dernier message: 11/09/2007, 11h46

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