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

Java Discussion :

Dates de plusieurs échéances


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Economiste
    Inscrit en
    Décembre 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Bénin

    Informations professionnelles :
    Activité : Economiste
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2016
    Messages : 114
    Points : 63
    Points
    63
    Par défaut Dates de plusieurs échéances
    Bonsoir les membres. Je suis en train de développer une application Java me permettant d'établir les échéanciers de paiement d'emprunt. Dans le projet, je souhaite générer des dates de remboursement qui ne prennent pas en compte les week-end. Pour ce fait, j'ai demandé à l'application de me ramener toutes les échéances qui tombent dans un week-end à la date de vendrédi précédant. Pour y parvenir, j'ai programmé le code ci-après:
    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
                           int j=1;
    				for(int i=0; i<Double.parseDouble(nobreEche); i++){
     
     
    				row[0] = a++;
    					Date today = dateDebutEche.getDate();
    					Instant instant = Instant.ofEpochMilli(today.getTime()); 
    					LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); 
    					LocalDate date1 = localDateTime.toLocalDate();
    					DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
     
    				       if (date1.getDayOfWeek() == DayOfWeek.SATURDAY||date1.getDayOfWeek() == DayOfWeek.SUNDAY) {
     
    				    	   			LocalDate date2 = date1.plusMonths(j++);
    									TemporalAdjuster nextFriday = TemporalAdjusters.next(DayOfWeek.MONDAY);
    									LocalDate nextFridayDate = date2.with(nextFriday);
     
    									String formattedString = nextFridayDate.format(formatter);
    				row[1]= formattedString ;
    						       }
     
    						    	   		else {
    							    	   		LocalDate date2 = date1.plusMonths(j++);
    							    	   		String formattedString = date2.format(formatter);
    				row[1]= formattedString ;
    						    	   			}
    Cet code me permet d'avoir les dates de paiement selon le nombre d'échéance (qui est mensuel). Le problème est que l'application ne fait que me sortier uniquement les dates de paiement pour les vendrédis même si celles-ci tombe dans les jours ouvrables.
    Veuillez m'aidé pour resoudre ce problème.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Points : 37
    Points
    37
    Par défaut
    En espérant que sa t'aide , mais si tu veux plus, il faut donner plus parce que le code que tu as donné n'est pas complet :/


    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
     
    public class DateUtils {
     
        private DateUtils(){}
     
     
        public static boolean isInWeekend(LocalDate dateToCompare) {
            if (dateToCompare.getDayOfWeek().equals(DayOfWeek.SATURDAY)
                    || dateToCompare.getDayOfWeek().equals(DayOfWeek.SUNDAY)) {
                return true;
            };
     
            return false;
        }
     
        public static LocalDate goToPreviousFriday(LocalDate dateToCompare) {
     
            if (isInWeekend(dateToCompare)) {
     
                if (dateToCompare.getDayOfWeek().equals(DayOfWeek.SATURDAY)) {
                    return dateToCompare.minusDays(1);
     
                } else if (dateToCompare.getDayOfWeek().equals(DayOfWeek.SUNDAY)) {
     
                    return dateToCompare.minusDays(2);
                }
     
            }
            return null;
        }
     
    }

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    C'est peut-être beaucoup de détours pour pas grand-chose, non ? On obtient le même avec simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static LocalDate getCorrespondingWorkDay(LocalDate date) {
      switch(date.getDayOfWeek()) {
        case SATURDAY:
          return date.minusDays(1);
        case SUNDAY:
          return date.minusDays(2);
        default:
          return date;
      }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre du Club
    Homme Profil pro
    Economiste
    Inscrit en
    Décembre 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Bénin

    Informations professionnelles :
    Activité : Economiste
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2016
    Messages : 114
    Points : 63
    Points
    63
    Par défaut
    Merci pour vos reponses. J'ai vue les propositions que vous m'aviez faites. Mais je n'est pas puis utiliser les fonctions static avec return dans mon Jtable qui aussi est dans une autre fonction. Je vais donc vous donnez l'intégralité du code pour que vous m'aidez pour le parfait.
    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    JButton btnEtablirLchance = new JButton("Etablir l'\u00E9ch\u00E9ance");
    		btnEtablirLchance.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
     
     
    				int b=Integer.parseInt(txtNombreEche.getText()); 
    				montantAccorder=txtMontantAccordé.getText();
     
    				nobreEche=txtNombreEche.getText();
    				taux=cmbTaux.getSelectedItem().toString();
     
    				interet=Integer.parseInt(montantAccorder)*Integer.parseInt(taux)/100;//calcul d'interet
     
    				amort=Integer.parseInt(montantAccorder)/Integer.parseInt(nobreEche);
     
    				/*BigDecimal bd = new BigDecimal(amort);//Arrondi
    				bd= bd.setScale(2,BigDecimal.ROUND_DOWN);//arrondi
    				amort = bd.doubleValue();*///arrondi
     
    				mensualite=amort+interet;
    				/*BigDecimal bd1 = new BigDecimal(mensualite);
    				bd1= bd1.setScale(2,BigDecimal.ROUND_DOWN);
    				mensualite = bd1.doubleValue();*/
     
    				interetTotal=interet*Integer.parseInt(nobreEche);
    				epargne=Integer.parseInt(montantAccorder)*10/(Integer.parseInt(nobreEche)*100);
    				/*BigDecimal bd2 = new BigDecimal(epargne);//Arrondi
    				bd2= bd2.setScale(2,BigDecimal.ROUND_DOWN);//arrondi
    				epargne = bd2.doubleValue();//arrondi
    */				echeance=mensualite+epargne;
    				int capitalDegr=(((Integer.parseInt(montantAccorder)/Integer.parseInt(nobreEche))));
    				/*BigDecimal bd3 = new BigDecimal(capitalDegr);//Arrondi
    				bd3= bd3.setScale(2,BigDecimal.ROUND_DOWN);//arrondi
    				capitalDegr = bd3.doubleValue();//arrondi
    */				
     
    				txtAmor.setText(String.valueOf(amort));
    				txtInteret.setText(String.valueOf(interet));
    				txtMensualite.setText(String.valueOf(mensualite));
    				txtTotaInteret.setText(String.valueOf(interetTotal));
    				txtEpargne.setText(String.valueOf(epargne));
    				txtEcheMens.setText(String.valueOf(echeance));
     
     
    				model = new DefaultTableModel();
    				model.setColumnIdentifiers(new Object[]{"N°","Date","Capital","Amortissemnt","Interet",
    														"Mensualite","Epargne","Echeance"});
    				Object[] row = new Object[8];
    				int a=1;
    				int j=1;
    				for(int i=0; i<Double.parseDouble(nobreEche); i++){
     
     
    				row[0] = a++;
    					Date today = dateDebutEche.getDate();
    					Instant instant = Instant.ofEpochMilli(today.getTime()); 
    					LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); 
    					LocalDate date1 = localDateTime.toLocalDate();
    					DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
     
    				       if (date1.getDayOfWeek() == DayOfWeek.SATURDAY||date1.getDayOfWeek() == DayOfWeek.SUNDAY) {
     
    				    	   			LocalDate date2 = date1.plusMonths(j++);
    									TemporalAdjuster nextFriday = TemporalAdjusters.next(DayOfWeek.MONDAY);
    									LocalDate nextFridayDate = date2.with(nextFriday);
     
    									String formattedString = nextFridayDate.format(formatter);
    				row[1]= formattedString ;
    						       }
     
    						    	   		else {
    							    	   		LocalDate date2 = date1.plusMonths(j++);
    							    	   		String formattedString = date2.format(formatter);
    				row[1]= formattedString ;
    						    	   			}
     
     
    				row[2] = (b--)*capitalDegr;// calcul du capital restant du
    				row[3] = amort;
    				row[4] = interet;
    				row[5] = mensualite;
    				row[6] = epargne;
    				row[7] = echeance;
     
    ///****************************************************************************/*
     
     
     
    					model.addRow(row);
     
    				}	
     
    				table.setModel(model);
     
    			}
     
    }
    Merci d'avance pour votre aide.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Ton plus gros problème c'est l'énorme manque d'organisation.

    Ton code contient plein de code commenté que tu aurais dû effacer, et il est énormément trop long. Il ne faut pas faire des blocs de code aussi long. Il faut faire plein de méthodes différentes qui font chacun un travail et un seul, et il faut appeler ces méthodes au lieu de tout faire en un seul endroit incompréhensible. Tu seras toujours bloqué comme ça tant que tu n'apprendras pas à t'organiser.

    Concernant le fait que le résultat produit est erroné :

    - d'abord, toutes tes échéances sont les mêmes, puisqu'à chaque boucle tu recommences du début avec Date today = dateDebutEche.getDate(); et on ne passe jamais au mois prochain.

    - ensuite, dans ton code tu recherches d'abord si date1 est un samedi ou un dimanche, puis si c'est le cas tu prends la date d'un mois plus tard et tu l'alignes sur un vendredi. Ce n'est pas la date d'un mois plus tard que tu veux aligner. C'est celle qui tombe sur un week-end.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre du Club
    Homme Profil pro
    Economiste
    Inscrit en
    Décembre 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Bénin

    Informations professionnelles :
    Activité : Economiste
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2016
    Messages : 114
    Points : 63
    Points
    63
    Par défaut
    Merci pour votre fidèle commentaire de mon code. J'en suis conscient. Mais j'ai garder les commentaires par ce que cherche de solution optimal. Je promet me réorganiser. Comment peut-je manipuler ces dates dans ce cas?

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Citation Envoyé par afkiba Voir le message
    Comment peut-je manipuler ces dates dans ce cas?
    Autrement qu'avec des choses qui ne marchent pas.

    Là pour l'instant les dates que tu réalignes sur un vendredi, ce sont celles d'un mois plus tard, et non pas celles qui tombent sur un week-end.
    Il faut que tu effaces ce code erroné, et que tu en fasses un autre en recommençant du début et qui ne fait pas cette erreur-là.

    Il ne devrait pas être difficile de créer un nouveau code qui ne contient pas l'erreur qui t'a déjà été expliquée.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par thelvin Voir le message
    C'est peut-être beaucoup de détours pour pas grand-chose, non ? On obtient le même avec simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static LocalDate getCorrespondingWorkDay(LocalDate date) {
      switch(date.getDayOfWeek()) {
        case SATURDAY:
          return date.minusDays(1);
        case SUNDAY:
          return date.minusDays(2);
        default:
          return date;
      }
    }
    Effectivement sa fait le café !

  9. #9
    Membre du Club
    Homme Profil pro
    Economiste
    Inscrit en
    Décembre 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Bénin

    Informations professionnelles :
    Activité : Economiste
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2016
    Messages : 114
    Points : 63
    Points
    63
    Par défaut
    Bonjour M. thelvin. Comme vous me l'avez recommandez, j'ai réorganisé mon code qui désormais se presente comme suit:
    Pour le calcul des données autres que la date et l'affichage dans le Jtable
    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
    JButton btnEtablirLchance = new JButton("Etablir l'\u00E9ch\u00E9ance");
    		btnEtablirLchance.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
     
    				int b=0; 
    				//Conversion des données en de 
    				capital=Double.parseDouble(txtMontantAccordé.getText());
    				tauxInte=Double.parseDouble(cmbTaux.getSelectedItem().toString());
    				tauxEpargne=Double.parseDouble(comboBox.getSelectedItem().toString());
    				nbrEcheance=Double.parseDouble(txtNombreEche.getText());
    				dateDebut=dateDebutEche.getDate();
     
    				//les différents calcul sur les données
    				amorti=capital/nbrEcheance;
    				inte=capital*tauxInte/100;
    				mens=amorti+inte;
    				epar=capital*tauxEpargne/(100*nbrEcheance);
    				eche=mens+epar;
    				interetTotal=inte*nbrEcheance;
     
     
    				model = new DefaultTableModel();
    				model.setColumnIdentifiers(new Object[]{"N°","Date","Capital","Amortissemnt","Interet",
    														   "Mensualite","Epargne","Echeance"});
     
    				Object[] row = new Object[8];
    				int a=1;
    				int j=1;
    				for(int i=0; i<nbrEcheance; i++){
     
     
    				row[0] = a++;
     
    				DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
    				String formattedString = DateEcheance(date).format(formatter);
    				row[1]= formattedString;
    				row[2] = capital-(amorti*b++) ;
    				row[3] = amorti;
    				row[4] = inte;
    				row[5] = mens;
    				row[6] = epar;
    				row[7] = eche;
     
    				model.addRow(row);
     
    				}	
     
    				table.setModel(model);
     
    			}
     
     
    		});
    Pour la date j'ai crée une nouvel méthode avec le code que vous m'avez donnée.

    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
    public static  LocalDate DateEcheance(LocalDate date) {
     
    		Instant instant = Instant.ofEpochMilli(dateDebutEche.getDate().getTime()); 
    		LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); 
    		LocalDate dateintial = localDateTime.toLocalDate();
     
    				date = dateintial.plusMonths(1) ;
     
    		switch(date.getDayOfWeek()) {
    		    case SATURDAY:
    		      return date.minusDays(1);
    		    case SUNDAY:
    		      return date.minusDays(2);
    		    default:
    		      return date;
    		  }
    		}
    Actualement le problème est que pour toutes les lignes l'application m'affiche qu'une même date. Alors que je souhaite qu'à chaque ligne qu'il ajoute un mois par rapport à la ligne précédante.
    Veuillez bien m'aidé pour trouver un code pourra resoudre ce problème.
    Merci.

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Le problème c'est que dans cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String formattedString = DateEcheance(date).format(formatter);
    tu utilises toujours la variable date, mais tu ne modifies jamais cette variable, après un calcul d'échéance, pour qu'elle contienne le mois qui suit là où elle était.
    ... Enfin pour des calculs d'échéance, il vaut mieux retenir la toute première date et y ajouter le nombre de mois voulus pour chaque échéance, sinon on décale tout le temps.

    Toujours est-il que tu dois te débrouiller pour ajouter les mois à ta date de départ, au lieu de toujours utiliser ta date de départ.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre du Club
    Homme Profil pro
    Economiste
    Inscrit en
    Décembre 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Bénin

    Informations professionnelles :
    Activité : Economiste
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2016
    Messages : 114
    Points : 63
    Points
    63
    Par défaut
    Bonsoir. Merci pour la reponse. J'ai tous faire mais je n'arrive pas a échellonné ces dates. Lorsque j'ai commencé ce projet, cet après trois mois de recherche que j'ai about au resultat du premier code que j'avais envoyé. Cela je l'ai fait en mettant ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LocalDate date2 = date1.plusMonths(j++);
    dans un boucle qui est qui se trouve également dans un autre boucle du Jtable. A chaque fois que je l'enlève du boucle, j'ai le resultat que je trouve actuellement. Mais lui ses conséquences est qu'il aligne toutes les échéances à la date du dernier vendredi. Si je l'enlève le boucle qui consiste à ramener aux vendrédi, j'ai un bon resultat; mais là il y aura des échéances qui vont tombés sur les week-end. Voilà le castête que j'ai avec ce travail. J'ai ne s'est plus quel combinaison faire. Si vous avez d'autres idées ce sera les bienvenu pour moi.

  12. #12
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Cette ligne-là n'est pas un problème.

    Le problème c'est que dans ton premier code tu l'avais mise n'importe où et tu en faisais n'importe quoi, et donc ton premier code doit être effacé et oublié.

    Mais ça ne vient pas de cette ligne-là, ça venait des autres lignes que celle-là.

    Oublie ton premier code, il est mauvais et il doit disparaître. Il n'a aucun sens, il n'y a rien à dire dessus à part que c'est n'importe quoi.

    Recommence, en calculant correctement chaque mois, quelle est la date où tu voudrais mettre l'échéance en partant de la première échéance. Puis, si ça tombe sur un week-end, prends la date du vendredi précédent à la place.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre du Club
    Homme Profil pro
    Economiste
    Inscrit en
    Décembre 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Bénin

    Informations professionnelles :
    Activité : Economiste
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2016
    Messages : 114
    Points : 63
    Points
    63
    Par défaut
    Bonjour. Dépuis hier je n'est cessé travail sur les dates mais j'ai toujours le même résultat.
    Nom : Capture d’écran (3).png
Affichages : 343
Taille : 106,8 Ko
    Je suis donc coincé.

  14. #14
    Membre du Club
    Homme Profil pro
    Economiste
    Inscrit en
    Décembre 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Bénin

    Informations professionnelles :
    Activité : Economiste
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2016
    Messages : 114
    Points : 63
    Points
    63
    Par défaut
    Après plusieurs essaies je vient de trouver un autre resultat en utilisant la methode que vous m'avez donnée. Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LocalDate date2 = DateEcheance(date1).plusMonths(j++);
    . Dans ce cas, l'application ramène a vendrédi seulement si la première échéance coincide avec un week-end. Pour les autres il ne respecte plus les conditions.
    Voici l'image
    Nom : Capture d’écran (4).png
Affichages : 339
Taille : 96,1 Ko

    le 05/03/2017 est un dimanche et l'application l'a remené à vendredi 03/05/2017. Et il a aligné les autres dates sur la date 03 au lieu de la date 05.

  15. #15
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par afkiba Voir le message
    le 05/03/2017 est un dimanche et l'application l'a remené à vendredi 03/05/2017. Et il a aligné les autres dates sur la date 03 au lieu de la date 05.
    Bonjour,

    ça, c'est un classique. Le champ de saisie des dates est-il paramétré pour le format DD/MM/YYYY ?
    On dirait que le format est MM/DD/YYYY : Mois/Jour/Année.

    Il faudrait rectifier ça et ça devrait aller mieux...

  16. #16
    Membre du Club
    Homme Profil pro
    Economiste
    Inscrit en
    Décembre 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Bénin

    Informations professionnelles :
    Activité : Economiste
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2016
    Messages : 114
    Points : 63
    Points
    63
    Par défaut
    Je vien de le rectifier mais ça me produit le même résultat.
    Nom : Capture d’écran (6).png
Affichages : 325
Taille : 107,8 Ko
    Voila le que j'ai utilisépour avoir ce résultat.
    Pour les calculs
    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
    	JButton btnEtablirLchance = new JButton("Etablir l'échéancier");
    		btnEtablirLchance.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				Date today = dateDebutEche.getDate();
    				Instant instant = Instant.ofEpochMilli(today.getTime()); 
    				LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); 
    				LocalDate date1 = localDateTime.toLocalDate();
    				DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
     
     
    				int b=0; 
    				//Conversion des données en de 
    				capital=Double.parseDouble(txtMontantAccordé.getText());
    				tauxInte=Double.parseDouble(cmbTaux.getSelectedItem().toString());
    				tauxEpargne=Double.parseDouble(comboBox.getSelectedItem().toString());
    				nbrEcheance=Double.parseDouble(txtNombreEche.getText());
    				dateDebut=dateDebutEche.getDate();
     
    				//les différents calcul sur les données
    				amorti=capital/nbrEcheance;
    				inte=capital*tauxInte/100;
    				mens=Math.round(amorti)+Math.round(inte);
    				epar=capital*tauxEpargne/(100*nbrEcheance);
    				eche=mens+epar;
    				interetTotal=inte*nbrEcheance;
     
    				//Visualiser les résulter dans un Jtestfild				
    				txtAmor.setText(String.valueOf(Math.round(amorti)));
    				txtInteret.setText(String.valueOf(Math.round(inte)));
    				txtMensualite.setText(String.valueOf(Math.round(mens)));
    				txtTotaInteret.setText(String.valueOf(Math.round(interetTotal)));
    				txtEpargne.setText(String.valueOf(Math.round(epar*nbrEcheance)));
    				txtEcheMens.setText(String.valueOf(Math.round(eche*nbrEcheance)));
     
     
    				model = new DefaultTableModel();
    				model.setColumnIdentifiers(new Object[]{"N°","Date","Capital","Amortissement","Interet",
    														"Mensualite","Epargne","Echeance"});
     
    				Object[] row = new Object[8];
    				int a=1;
    				int j=1;
     
    				for(int i=0; i<nbrEcheance; i++){
     
    				row[0] = a++;
     
     
    				LocalDate date2 = DateEcheance(date1).plusMonths(j++);
     
    			   String formattedString = date2.format(formatter);
    				row[1]= formattedString ;
     
    				row[2] = Math.round(capital-(amorti*b++)) ;
    				row[3] = Math.round(amorti);
    				row[4] = Math.round(inte);
    				row[5] = Math.round(mens);
    				row[6] = Math.round(epar);
    				row[7] = Math.round(eche);
     
    				model.addRow(row);
     
    				}	
     
    				table.setModel(model);
    				InfoClient();
    				InfoEmploye();
    				NumCompt();
    			}
     
     
    		});
    Pour remaner la date au vendredi s'il s'agit d'un week-end.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static  LocalDate DateEcheance(LocalDate date) {
     
    		switch(date.getDayOfWeek()) {
    		    case SATURDAY:
    		      return date.minusDays(1);
    		    case SUNDAY:
    		      return date.minusDays(2);
    		    default:
    		      return date;
    		  }
    		}
    Dans ce cas je devrais avoir:
    1er échéance vendrédi 07/04/2017
    2e échéance mardi 09/05/2017
    3e échéance vendrédi 09/06/2017
    4e échéance vendrédi 07/07/2017
    5e échéance mardi 09/08/2017
    6e échéance vendrédi 08/09/2017

  17. #17
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Citation Envoyé par afkiba Voir le message
    Je souhaite les dates 05 pour les jours ouvrable et la date du vendrédi précedent si le 05 tombe sur un week-end.
    Dans ce cas je devrais avoir:
    1er échéance vendrédi 07/04/2017
    2e échéance mardi 09/05/2017
    3e échéance vendrédi 09/06/2017
    4e échéance vendrédi 07/07/2017
    5e échéance mardi 09/08/2017
    6e échéance vendrédi 08/09/2017
    Tu veux la date du 05 et donc les résultats que tu devrais obtenir c'est des 07, 08 et 09 ?

    Corrige encore...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  18. #18
    Membre du Club
    Homme Profil pro
    Economiste
    Inscrit en
    Décembre 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Bénin

    Informations professionnelles :
    Activité : Economiste
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2016
    Messages : 114
    Points : 63
    Points
    63
    Par défaut
    Autant pour moi. J'ai deja corriger.

  19. #19
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Citation Envoyé par afkiba Voir le message
    Dans ce cas je devrais avoir:
    Dans quel cas ?

    (Il arrive un moment où pour faire de l'informatique il faut être à l'aise avec certaines notions, comme par exemple qu'est-ce qu'on veut au juste, au point d'être capable de le dire à quelqu'un d'autre.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  20. #20
    Membre du Club
    Homme Profil pro
    Economiste
    Inscrit en
    Décembre 2016
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Bénin

    Informations professionnelles :
    Activité : Economiste
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2016
    Messages : 114
    Points : 63
    Points
    63
    Par défaut
    Bonsoir. Après plusieurs réflection, j'ai pensé créer une méthode qui me permettra de récuperer les dates (d'intervalle mensuel) figurant dans le Jtable puis vérifier si chaque date ne coincide pas avec un week-end avec une autre methode puis enfin mettre à jour cette colonne.
    Pour ce fait voici les deux methode:
    1- Recuperer et mettre à jour le Jtable
    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
    public void setTableModelListener() {
            tableModelListener = new TableModelListener() {
                public void tableChanged(TableModelEvent e) {
                    if (e.getType() == TableModelEvent.UPDATE) {
     
                    	int row = table.getSelectedRow();
                             for(int i =0; i < row; i++){
                            	 LocalDate date=(LocalDate) model.getValueAt(i, 1);
    		                     model.setValueAt(DateEcheance(date),i,1);
                             }
     
                    }
                    }
              };
     
     
        }
    et cette methode pour verifier les dates afin de les remaner à Vendrédi s'il s'agit de week end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static  LocalDate DateEcheance(LocalDate date) {
     
    		switch(date.getDayOfWeek()) {
    		    case SATURDAY:
    		      return date.minusDays(1);
    		    case SUNDAY:
    		      return date.minusDays(2);
    		    default:
    		      return date;
    		  }
    	}
    Mais l'application ne lève pas d'exception et ne réagir pas. Quelqu'un a t il une idée pour m'aidé.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. selectionner plusieures dates pour plusieures personnes
    Par davidengalere dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 27/06/2007, 12h05
  2. [Requêtes] Selectionner une seule date parmis plusieurs
    Par Herman dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 28/03/2007, 15h01
  3. [MySQL] UNE date pour plusieurs dates et UN évènement pour plusieurs évènements...
    Par Aliosha dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 19/03/2007, 21h58
  4. [Dates] Enregistrer plusieurs dates
    Par bfabrice dans le forum Langage
    Réponses: 7
    Dernier message: 17/05/2006, 10h57
  5. [VBA-E]Recherche de date dans plusieurs feuilles
    Par atypik dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 05/04/2006, 20h36

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