|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Astrid Genet Inscription : novembre 2010 Messages : 43 ![]() |
Bonjour,
J'ai crée dans un fichier une variable compteur avec un retain. Mais je veux incrémenter à partir de 1, et non pas 0, et je m'aperçois que bien que j'aie fixé le retain à 1, il incrémente systématiquement à partir de 0. Il doit y avoir dans mon code quelque-chose qui cloche mais je ne vois vraiment pas quoi. Il focntionne parfaitement sinon. Je vous le met en dessous, si quelqu'un a le temps de regarder je serai ravie. Je ne trouve pas le hic, et au bilan, toute la table est faussée... Code :
Astrid |
||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : janvier 2010 Messages : 185 ![]() |
bonjour Astrid,
ton code est un peu compliqué. un petit peu de ménage ne lui ferait pas de mal. Explique nous ce que tu veux calculer et donne nous un jeu de données. |
|
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Astrid Genet Inscription : novembre 2010 Messages : 43 ![]() |
Bonjour,
Voici la partie intéressante du code: Code :
J'ai crée une variable "JoursConsecutifs" qui prend la valeur 0 si la valeur manquante est isolée et 1 si elle est consécutive à une autre. Une illustration: Annee Mois Jour JourConsecutif 69 2 5 0 69 4 10 0 69 4 11 1 69 4 12 1 69 7 8 0 Puis j'incrémente dans une variable "NbreJoursConsecutifs" pour connaitre la longueur des séries consécutives de données manquantes. Et c'est là qu'est le problème. Je veux initialiser "NbreJoursConsecutifs" à 1 car comme vous le voyez sur l'illustration la première valeur manquante d'une série est notée 0 car elle ne suit pas le jour qui la précède. Or dans le code affiché plus haut, bien que j'initialise "NbreJoursConsecutifs" à 1 dans mon retain, j'incrémente à partir de 0. Quelqu'un aurait le fin mot de l'histoire? Est-ce que je n'ai pas le droit d'initialiser ainsi mon retain? Peut-être est il mal placé dans le code? Merci! Astrid |
||
|
|
00
|
|
|
#4 | ||
|
Membre confirmé
![]() Inscription : janvier 2010 Messages : 185 ![]() |
L'initialisation de ta variable retain perdure tant que tu ne modifies pas sa valeur (merci La palice).
Code :
|
||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Astrid Genet Inscription : novembre 2010 Messages : 43 ![]() |
Bonjour Sasadm,
Ah oui, c'est à cause du "else do" qui met "NbreJoursConsecutifs" à 0 dans le cas où "JoursConsecutifs" n'est pas égal à 1. Donc ma première valeur nulle de "JoursConsecutifs" initialise effectivement "NbreJoursConsecutifs" à 0. Merci pour votre remarque! Du coup auriez-vous une idée de l'ajustement dans le code qui permettrait de commencer l'incrémentation à 1 dans le cas d'une série consécutive? Merci beaucoup, Astrid |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Astrid Genet Inscription : novembre 2010 Messages : 43 ![]() |
J'ai solutionné mon problème, je mets la solution si des fois elle pouvait aider quelqu'un un jour. Cependant c'est un peu de la "bricole", puisque j'ai juste mis NbreJoursConsecutifs = 1 dans l'alternative et je rectifie ensuite au moment de récupérer le nombre de jours manquants dans une variable suivante.
Merci pour votre aide Sasadm! Astrid |
|
|
00
|
|
|
#7 | ||
|
Membre confirmé
![]() Inscription : janvier 2010 Messages : 185 ![]() |
Tu peux me tutoyer,
Avant de répondre à ta question, je me permets de te donner deux trois notions qui te seront utiles : 1) il existe des dates SAS (0 = 1er janvier 1960, 1 = 2 janvier 1960, aujourd'hui=18605). 2) tu peux calculer facilement la différence (en jours) entre 2 dates grace a la fonction intck. 3) le retain répond à une logique assez destabilisante au début. Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com