|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre régulier
![]() Mariam Statisticienne-Consultante BI Inscription : avril 2008 Messages : 127 ![]() |
Bonjour,
J'ai un programme de base que je dois optimiser en macro programme. D'après ce que j'ai compris il permet de lineariser les données. Je m'explique : Les données sources sont sous la forme (exemple): NO_SEQ_CLI_BEN NO_SEQ_PRE_DEM MN_MEN_CAL_PRE AN_DEB_PRE AN_FIN_PRE 1 2 29 1992 1993 1 2 50 1994 1994 1 2 50 2001 2001 A la fin je voudrais avoir : NO_SEQ_CLI_BEN 1 NO_SEQ_PRE_DEM 2 MN_MEN_CAL_PRE 50 AN_DEB_PRE 1992 AN_FIN_PRE 2001 Mn_31_dec_1970 0 ..... Mn_31_dec_1992 29 Mn_31_dec_1993 29 Mn_31_dec_1994 50 ..... Mn_31_dec_2001 50 .... Mn_31_dec_2010 0 Voici le programme qui marche bien: Code :
J'ai tenté ceci: Code :
Merci d'avance pour vos idées. |
||||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Bonjour.
Outre le fait que je ne suis pas spécialement convaincu qu'une macro s'impose (un ARRAY me semblerait plus simple. Si j'ai un peu de temps dans la journée j'essaierai de faire un petit exemple), dans ton code la boucle macro est mal placée, j'ai l'impression. Une boucle macro, ce n'est rien d'autre qu'un copier/coller. Si tu regardes dans ton programme initial ce qui est recopié pour chaque année, c'est l'instruction WHEN et elle seule. Pas le SELECT, ni le OTHERWISE, ni le END. Si tu exécutes ton macro-programme avec l'option MPRINT activée, tu verras dans la log qu'il produit 40 blocs SELECT avec un seul WHEN chacun, au lieu d'un seul bloc SELECT avec 40 WHEN. Je proposerais donc plutôt Code :
Olivier |
||
|
|
10
|
|
|
#3 | ||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Voici une solution avec un Array. Pas forcément plus simple à lire mais exempte de macros.
Code :
|
||
|
|
10
|
|
|
#4 | |||
|
Membre régulier
![]() Mariam Statisticienne-Consultante BI Inscription : avril 2008 Messages : 127 ![]() |
Citation:
merci de la réponse. je vais essayer avec la macro car hélas les bornes 1970 et 2010 ne sont pas fixés. Le but est vraiment de pouvoir le généraliser et ne pas être obliger de modifier dans le code des dates. Merci. |
|||
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 957 ![]() |
Bonjour,
Tu peux définir les deux dates en marco-variables, tu n'auras donc pas à modifier le programme que Olivier t'as proposé. Code :
|
||
|
|
10
|
|
|
#6 | |||
|
Membre régulier
![]() Mariam Statisticienne-Consultante BI Inscription : avril 2008 Messages : 127 ![]() |
Citation:
J'ai résolu mon problème merci de vos contributions. Je garde la solution des Arrays dans un coin pour un besoin futur. Pour etre honnete je suis pas très a l'aise ![]() Mais cela peut servir !!! |
|||
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Géraldine CADE DESCHAMPSSupport Clients SAS (France et Europe) Inscription : février 2010 Messages : 62 ![]() |
Bonjour,
Concernant les ARRAY, j'ai écrit un article en français à ce sujet : http://www.sas.com/offices/europe/fr...support_13.pdf Cet un outil très interessant, j'espère que l'article vous aidera à vous familiariser avec. Géraldine Cade Deschamps Support Clients SAS |
|
|
30
|
Copyright © 2000-2012 - www.developpez.com