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 :

[PROC REPORT] Fusionner une cellule


Sujet :

ODS et reporting

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 80
    Points
    80
    Par défaut [PROC REPORT] Fusionner une cellule
    Bonjour à tous,

    J'utilise une proc REPORT pour sortir un tableau, mais j'aimerai fusionner une cellule d'une variable regroupée. Voici un exemple:

    Mon tableau actuel:

    -----------------------------------------------------------
    Temps|Produit|Nb 2010|Répar 2010|Nb 2009|Var 2010/2009|
    -----------------------------------------------------------
    Mois |a |41 |16.84% |38 |9.4% |
    -----------------------------------------------------------
    ____ |i |11 |4.68% |10 |13.5% |
    -----------------------------------------------------------
    An(s) |a |39 |16.04% |38 |2.6% |
    -----------------------------------------------------------
    ____ |i |60 |24.38% |59 |2.0% |
    -----------------------------------------------------------
    Total | |249 |100% |241 |3.1% |
    -----------------------------------------------------------
    Ce que je souhaiterai avoir:

    -----------------------------------------------------------
    Temps|Produit|Nb 2010|Répar 2010|Nb 2009|Var 2010/2009|
    -----------------------------------------------------------
    Mois |a |41 |16.84% |38 |9.4% |
    ____ |----------------------------------------------------
    ____ |i |11 |4.68% |10 |13.5% |
    -----------------------------------------------------------
    An(s) |a |39 |16.04% |38 |2.6% |
    ____ |--------------------------------------------------
    ____ |i |60 |24.38% |59 |2.0% |
    -----------------------------------------------------------
    Total | |249 |100% |241 |3.1% |
    -----------------------------------------------------------
    Alors je ne sais pas si vous voyez bien la différence entre les 2, la ligne en pointillé caractérise le quadrillage du tableau, et les _ l'espace vide. Désolé si c'est vraiment pas parlant
    Donc c'est bien la première cellule que je dois fusionner avec ma proc report (je dois garder la proc report car je fais appel à du Style).

    Voici mon code:
    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
     
    PROC REPORT DATA=table.donnee
         SPLIT='*' NOWD
         STYLE(REPORT)={FRAME=box FONT=(Helvetica) BORDERCOLOR=orange
                        BORDERWIDTH=1}
         STYLE(HEADER)={BACKGROUND=white FONT=(Helvetica)}
         STYLE(COLUMN)={FOREGROUND=#000000 BACKGROUND=CXFFFFFF FONT=(Helvetica)
                        CELLWIDTH=175 JUST=right }
         STYLE(HEADER)={BACKGROUND=yellow
                        FOREGROUND=pink FONT=(Helvetica) FONT_SIZE=6pt
                        JUST=left VJUST=center }
         STYLE(SUMMARY)={BACKGROUND=grey FOREGROUND=black
                         FONT_FACE=Helvetica FONT=(Helvetica) FONT_STYLE=roman
                         FONT_WEIGHT=bold VJUST=center }
    ;
     
         COLUMN temps temps1 produit Nb_2010 Repar_2010 Nb_2009 Var_2010_2009;
         DEFINE temps1 / FORMAT=$Pmnt_freq. STYLE=[CELLWIDTH=115 JUST=LEFT BACKGROUND=yellow] "Temps";
         DEFINE produit / STYLE=[CELLWIDTH=145 JUST=LEFT BACKGROUND=orange] "Produit";
         DEFINE Nb_2010/ FORMAT=nb. STYLE=[CELLWIDTH=105] "Nb_2010";
         DEFINE Nb_2009 / FORMAT=nb. STYLE=[CELLWIDTH=105] "Nb_2009";
         DEFINE Var_2010_2009 / FORMAT=pct.1 STYLE=[CELLWIDTH=105] "Var_2010_2009";
         DEFINE Repar_2010 / FORMAT=percent.2 STYLE=[CELLWIDTH=105] "Répar_2010";
         DEFINE temps / order ORDER=DATA NOPRINT ;
    	 break after temps / suppress;
         COMPUTE temps1 / CHARACTER LENGTH=20;
               temps1=temps;
               IF temps1 EQ "Total" THEN DO;
                     CALL DEFINE(_ROW_,'style','STYLE={BORDERCOLOR=black
                        BORDERWIDTH=1 FONT_WEIGHT=bold FONT_FACE=Helvetica JUST=RIGHT}');
                     CALL DEFINE(_COL_,'style','STYLE={JUST=LEFT}');
               END;
         ENDCOMP;
    RUN;
    Voilà j'espère que vous avez bien compris le problème.

    Un grand merci à vous.

  2. #2
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    A ce que je comprends de ton problème je te conseille l'option group pour temps1. Mais je ne suis pas sur d'avoir bien visualisé le but escompté. serait-il possible de fournir tes tables en format word?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 80
    Points
    80
    Par défaut
    J'ai essayé de mettre l'option group mais cela ne marche toujours pas.

    Voici mon code avec la création de table:
    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
    DATA donnee;
    INPUT temps$ produit$ Nb_2010 Repar_2010 Nb_2009 Var_2010_2009;
    CARDS;
    An(s) a 39 16.04 38 2.6
    An(s) i 60 24.38 59 2.0
    Mois a 41 16.84 38 9.4
    Mois i 11 4.68 10 13.5
    Total . 249 100 241 3.1
    ;
    run;
     
    data donnee;
    set donnee;
    temps1=temps;
    run;
     
     ods pdf file="c:\rapport_ca2_final.pdf";
     
    PROC REPORT DATA=donnee
         SPLIT='*' NOWD
         STYLE(REPORT)={FRAME=box FONT=(Helvetica) BORDERCOLOR=orange
                        BORDERWIDTH=1}
         STYLE(HEADER)={BACKGROUND=white FONT=(Helvetica)}
         STYLE(COLUMN)={FOREGROUND=#000000 BACKGROUND=CXFFFFFF FONT=(Helvetica)
                        CELLWIDTH=175 JUST=RIGHT }
         STYLE(HEADER)={BACKGROUND=yellow
                        FOREGROUND=pink FONT=(Helvetica) FONT_SIZE=6pt
                        JUST=LEFT VJUST=center }
         STYLE(SUMMARY)={BACKGROUND=grey FOREGROUND=black
                         FONT_FACE=Helvetica FONT=(Helvetica) FONT_STYLE=roman
                         FONT_WEIGHT=bold VJUST=center }
    ;
     
         COLUMN temps temps1 produit Nb_2010 Repar_2010 Nb_2009 Var_2010_2009;
         DEFINE temps1 / FORMAT=$Pmnt_freq. STYLE=[CELLWIDTH=115 JUST=LEFT BACKGROUND=yellow] "Temps";
         DEFINE produit / STYLE=[CELLWIDTH=145 JUST=LEFT BACKGROUND=red] "Produit";
         DEFINE Nb_2010/  STYLE=[CELLWIDTH=105] "Nb_2010";
         DEFINE Nb_2009 /  STYLE=[CELLWIDTH=105] "Nb_2009";
         DEFINE Var_2010_2009 / STYLE=[CELLWIDTH=105] "Var_2010_2009";
         DEFINE Repar_2010 / STYLE=[CELLWIDTH=105] "Répar_2010";
         DEFINE temps / ORDER ORDER=DATA NOPRINT ;
    	 break after temps / suppress;
         COMPUTE temps1 / CHARACTER LENGTH=20;
               temps1=temps;
               IF temps1 EQ "Total" THEN DO;
                     CALL DEFINE(_ROW_,'style','STYLE={BORDERCOLOR=black
                        BORDERWIDTH=1 FONT_WEIGHT=bold FONT_FACE=Helvetica JUST=RIGHT}');
                     CALL DEFINE(_COL_,'style','STYLE={JUST=LEFT}');
               END;
         ENDCOMP;
    RUN;
     
    ods pdf close;

  4. #4
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    tu peux fournir tes sorties(tes pdf)? (si ya confidentialité, génère de fausses données)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 80
    Points
    80
    Par défaut
    Le voici, les couleurs ne sont pas terrible mais c'est juste pour l'exemple.

    Merci à toi
    Images attachées Images attachées

  6. #6
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    et tu veux faire quoi? fusionner la cellule dans laquelle il est écrit "An(s)" avec celle en dessous? Si c'est le cas ce n'est pas possible à ma connaissance. il existe une autre facon de le coder en utilisant de la programmation orientée objet.

    cf http://www2.sas.com/proceedings/sugi28/022-28.pdf pour une introduction, mais ca risque d'être assez long pour arriver à la table finale...

    Si je ne parle pas de la bonne fusion au dessus, peux tu envoyer les2sorties en rtf(la première étant la sortie sas et la deuxième ce que tu cherches à obtenir)?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par Manoutz Voir le message
    et tu veux faire quoi? fusionner la cellule dans laquelle il est écrit "An(s)" avec celle en dessous? Si c'est le cas ce n'est pas possible à ma connaissance. il existe une autre facon de le coder en utilisant de la programmation orientée objet.

    cf http://www2.sas.com/proceedings/sugi28/022-28.pdf pour une introduction, mais ca risque d'être assez long pour arriver à la table finale...

    Si je ne parle pas de la bonne fusion au dessus, peux tu envoyer les2sorties en rtf(la première étant la sortie sas et la deuxième ce que tu cherches à obtenir)?
    C'est exactement ce que je veux Manoutz, vraiment dommage qu'on ne peut pas le faire car c'est pas terrible...

    J'avais pensé en mettant une couleur TRANSPARENT pour les lignes de cette colonne, à tester.

    Merci.

  8. #8
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Ya possibilité de mettre la couleur transparent seulement pour une partie des lignes(on va y perdre son latin sinon..)? tu fais comment?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par Manoutz Voir le message
    Ya possibilité de mettre la couleur transparent seulement pour une partie des lignes(on va y perdre son latin sinon..)? tu fais comment?
    J'ai essayé mais ça ne fonctionne pas.
    Impossible de fusionner une cellule avec PROC REPORT dommage!

  10. #10
    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
    Peut-être devrais-tu revenir sur l'ODSout pour ce besoin ?
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par datametric Voir le message
    Peut-être devrais-tu revenir sur l'ODSout pour ce besoin ?
    Ce que je fais avec la PROC REPORT tu penses que je peux le faire avec l'ODS OUT?
    Je ne connais pas trop ce ODS OUT....

  12. #12
    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
    pour faire simple, tu peux générer une table d'agrégat en première phase puis tu formattes l'ensemble à ta guise avec l'ODSout via une étape DATA _null_. Regarde dans le forum avec ce mot clef je crois bien avoir échangé avec toi là-dessus il y a quelques temps.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 80
    Points
    80
    Par défaut
    Ok je te remercie je vais tester tout ça...
    En espérant que ce soit compatible avec l'ODS REGION

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 80
    Points
    80
    Par défaut
    J'ai réussi à faire ce que je voulais faire grâce à l'ODS OUT qui est beaucoup plus fastidieux que la PROC REPORT mais cela fonctionne très bien avec l'option ROW_SPAN.

    Merci à vous.

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 20/01/2014, 22h04
  2. proc report : insérer une ligne de séparation dans le header
    Par Cyrielle25 dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 15/06/2011, 13h09
  3. Réponses: 6
    Dernier message: 01/11/2010, 21h42
  4. Réponses: 2
    Dernier message: 21/07/2008, 11h16
  5. [XSL:FO] fusionner une cellule sur deux lignes.
    Par Luc Hermitte dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 03/07/2008, 11h33

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