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

WinDev Discussion :

Lister les dates entre 2 dates dans un tableau [WD20]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 20
    Points : 7
    Points
    7
    Par défaut Lister les dates entre 2 dates dans un tableau
    Bonjour,
    c vrai que je débute sur windev mais j'ai un problème avec mon application.
    en fait apres avoir obtenue la date de fin d'échéances d'une date de départ(qui est la date du jour)
    j'aimerai pouvoir afficher les dates comprises entre la date de départ et la date de fin d'échéance dans un tableau.

    Par exemple:
    date de départ = 11/10/2016
    nombre de mois= 3 mois
    date de fin d'échéance = 11/01/2017

    résultat:
    ligne 1=11/11/2016
    ligne 2=11/12/2016
    ligne 3=11/01/2016

    merci d'avance.

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Points : 21
    Points
    21
    Par défaut
    Tiens une petite procédure qui devrais faire ton bonheur :

    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
     
    PROCEDURE genereTableauDates(dateDebut est une Date, dateFin est une Date) : tableau de Dates
     
    dateCalculée est une Date
    nombreJours est un entier
     
    tableauDates est un  tableau de Dates
     
    QUAND EXCEPTION DANS
    	nombreJours = DateDifférence(dateDebut,dateFin)
     
    	dateCalculée = dateDebut
     
    	POUR i = 1 _A_ nombreJours - 1
    		dateCalculée..Jour++
    		TableauAjoute(tableauDates,dateCalculée)		
    	FIN
     
    	STOP
    	RENVOYER tableauDates
     
    FAIRE
    	ExceptionPropage()
    FIN

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    A priori, la demande était de bâtir un échéancier mensuel
    A partir du 11 octobre, les dates suivantes à afficher sont donc 11 novembre, 11 décembre et 11 janvier.

    La ligne 15 serait donc à remplacer par : dateCalculée..mois++

    Reste à vérifier ce qui se passe si le jour de départ est le 30 janvier. J'imagine qu'on veut voir 28 février, 30 mars et 30 avril. Pas sûr que le code proposé donne exactement ça.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2002
    Messages : 63
    Points : 64
    Points
    64
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    gtabDate est un tableau de dates
    nbMois est un entier = 3
    ddateDep est une date = "111020016"
    nPos est un entier
     
    pour i=1 _A_ nbMois
     
        ddateDep..mois +=1
        si tableauajouteligne(gtablDate,dDateDep)=-1 alors sortir
     
    fin
    A l'arrache

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Bonjour désolé pour le retard mais il me fallait un peu de temps pour adapter vos codes à mon projet.

    EN bref y a que le code de fosfore que j'ai réussi à adapter mais lorsque j'exécute le code ça me renvoi
    des dates en désordre et ne tiens pas vraiment compte de la date de départ (est-ce parce que elle est
    fixée à la date du jour?)

    le code de Fosfore adaté

    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
     
    gtabDate est une Dates = Table_Paiement
    nbMois est un entier = Durée_Nb_Mois
    ddateDep est une Date = Date_placement
    ddatefin est une Date = Date_fin_echeance
     
    POUR i=1 _A_ nbMois
     
    	Montant_a_payer = (Val(SAI_Benefices))
     
    	ddateDep..Mois++
    	Date_echeance = ddateDep
     
    	TableAjouteLigne(Table_Paiement,N_paiement,N_placement,Date_echeance,Montant_a_payer,Date_paiment,Motif_paiement,Etat_paiement)	
    FIN
    merci

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    En fait c'est bon j'ai trouvé l'astuce.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    gtabDate est une Dates = Table_Paiement
    nbMois est un entier = Durée_Nb_Mois
    ddateDep est une Date = Date_placement
     
    POUR i=1 _A_ nbMois
     
    	Date_echeance = ddateDep	
    	ddateDep..Mois++
    	TableAjouteLigne(Table_Paiement,N_paiement,N_placement,Date_echeance,Montant_a_payer,Date_paiment,Motif_paiement,Etat_paiement)
    FIN
    Et voilà

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    - Pour la lisibilité du code, je permuterais les lignes 9 et 10, car là, tu tends un piège à celui qui lit ton code de façon superficielle.

    - As-tu vérifié ce que ça donne si Date_placement= 31 Janvier 2016 et Duree_nb_mois = 5 par exemple.
    Est-ce que le résultat s'exécute sans bug, est-ce qu'il donne le résultat voulu ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Malheureusement tu as raison je viens juste de m'en rendre compte je travaille dessus et je reviens vers vous

  9. #9
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Pour les cas litigieux comme celui-ci, la première question qu'on doit se poser, c'est : Qu'est-ce qu'on veut.

    Dans certains cas, on peut éluder la question : on pond un bout de code à l'arrache , on regarde les résultats, et éventuellement, on fait avec.
    Mais si la réponse pondue par Windev ne paraît pas bien, il faut revenir à la question de départ : on veut quoi.

    Si la date de départ est 31 Janvier 2016, on veut 29 février, puis 31 mars, puis 30 avril, puis 31 mai ???
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  10. #10
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    on veut quoi.
    ...
    Si la date de départ est 31 Janvier 2016, on veut 29 février, puis 31 mars, puis 30 avril, puis 31 mai ???
    Bonsoir,

    Non, apparemment, seankeane veut 90 jours et pas 90 jours fin de mois.

    Par exemple:
    date de départ = 11/10/2016
    nombre de mois= 3 mois
    date de fin d'échéance = 11/01/2017

    résultat:
    ligne 1=11/11/2016
    ligne 2=11/12/2016
    ligne 3=11/01/2016
    Néanmoins, dans l'optique de l'échéance à fin de mois, seankeane aura tout intérêt à lire l'aide sur les propriétés afférentes aux dates (..Année, ..Mois et ..Jours).
    Il y trouvera une série d'exemples avec des solutions pour
    - le calcul des fins de mois,
    - le traitement des années bissextiles et
    - la gestion automatique des sauts de mois et d'année dans les calculs sur les dates.

    Ainsi que la recommandations d'utiliser la syntaxe courte des additions / soustractions sur ces mêmes propriétés (ddateDep..Mois++ ou ddateDep..Mois+=)

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    Désolé de refaire surface mais j'ai un problème supplémentaire.
    En fait j'ai pu adapter les codes que vous m'avez donner à mon projet (encore grand merci )
    je l'ai mis sur un bouton et ça donne ça:

    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
     
    gtabDate est une Dates = Table_Paiement
    nbMois est un entier = FEN_INT_placement.Durée_Nb_Mois
    ddateDep est une Date = FEN_INT_placement.Date_placement
    ddatefin est une Date = FEN_INT_placement.Date_fin_echeance
     
    	SI FEN_INT_placement.Combo_echéance = "Unique" ALORS	
    		TableAjouteLigne(Table_Paiement,N_placement,Date_echeance,Montant_a_payer,Motif_paiement)
    		Date_echeance = FEN_INT_placement.Date_fin_echeance
    		Montant_a_payer = FEN_INT_placement.SAI_Montant_place+FEN_INT_placement.SAI_Benefice_Total
    		SI Montant_a_payer = FEN_INT_placement.SAI_Montant_place+FEN_INT_placement.SAI_Benefice_Total ALORS
    			Motif_paiement = "Capital + Bénéfice"
    		FIN
     
    	SINON 
    		POUR i=1 _A_ nbMois				
    			TableAjouteLigne(Table_Paiement,N_placement,Date_echeance,Montant_a_payer,Motif_paiement)
    			ddateDep..Mois++
    			Date_echeance = ddateDep	
    			Montant_a_payer = (Val(FEN_INT_placement.SAI_Benefices))
    			Table_Paiement.N_placement = (Val(FEN_INT_placement.SAI_N_placement))
    			Motif_paiement = "Bénéfice"
     
    			SI ddatefin = Date_echeance ALORS
    			Montant_a_payer= (Val(FEN_INT_placement.SAI_Montant_place+FEN_INT_placement.SAI_Benefices))
    			Motif_paiement = "Capital + Bénéfices"
    			SINON
     
    			FIN
    		FIN
    	FIN
    Mais mon problème est que ça ne fait pas d'enregistrement dans le fichier Paiement qui le concerne directement.

    Merci

    Cordialement.

  12. #12
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonsoir,

    Tout d'abord, la discussion est résolue et elle traite d'un problème de date, pas d'un problème d'enregistrement fichier.
    Ce serait donc peut-être une bonne idée d'en ouvrir une nouvelle.

    Sinon, pourquoi pensez-vous que votre code devrait mettre un fichier à jour ?
    Je ne vous fais aucune suggestion, parce que je pense qu'il est préférable que vous réfléchissiez à la situation.
    Nous n'avons de toute façon pas toutes les données en main.


    Bon travail

    Hemgé

    PS : j'ai juste survolé votre code actuel, par rapport à votre nouvelle question, mais je n'ai pas revu le problème initial.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/08/2013, 09h06
  2. Lister tous les jours entre deux dates ?
    Par Gigli dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/04/2012, 17h50
  3. Réponses: 9
    Dernier message: 05/01/2012, 19h27
  4. Lister les mois entre 2 dates
    Par aurelie83 dans le forum PL/SQL
    Réponses: 10
    Dernier message: 10/03/2009, 10h32
  5. [VB6] Toutes les dates entre un interval dans un dynaset
    Par tim69000 dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 10/04/2006, 15h13

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