XL 2019 Opérations sur les Dates

KHEROUBI

XLDnaute Nouveau
Bonjour
J'ai trois colonnes :
- Début date (ex : 01/02/2020)
- Durée en mois (Ex : 24 mois)
- fin date ( Début date + durée)

je veux avec les deux premières colonnes (Début date et durée) affiche automatiquement la troisième colonne (fin date).
Merci pour vos interventions.
 

Robert

XLDnaute Barbatruc
Bonjour le fil, bonjour le forum,

Une proposition VBA acec le code ci-dessous :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DR As Date 'déclare la variable DR (Date de Référence)
Dim DC As Date 'déclare la variable DC (Date Calculée)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
For I = 1 To DL 'boucle sur toutes les lignes I de 1 à DL
    'définit la date de référence DR
    DR = DateSerial(Year(O.Cells(I, "A").Value), Month(O.Cells(I, "A").Value), Day(O.Cells(I, "A").Value))
    'définit la date calculée DC
    DC = DateSerial(Year(DR), Month(DR) + O.Cells(I, "B").Value, Day(DR))
    O.Cells(I, "C").Value = DC 'renvoie la date calculée dans la colonne D de la ligne I
Next I 'prochaine ligne de la boucle
End Sub

[Édition]
Je remarque que si la date de départ est 29/01/2006 avec une durée de 13 mois, la formule renvoie :
28/02/2007 et mon code renvoie 01/03/2007... Qu'est-ce qui est plus logique ?!...
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Bonsour®
[Édition]
Je remarque que si la date de départ est 29/01/2006 avec une durée de 13 mois, la formule renvoie :
28/02/2007 et mon code renvoie 01/03/2007... Qu'est-ce qui est plus logique ?!...

dans ton code tu recrées une date via DateSerial qui travaille par rapport à l'origine par ajout explicite d'années, mois et jours
en l'occurrence selon les années
ton code renvoie année X, mois 2 et jours 29
si mois = 2 alors le 29éme jour sera hors mois lors des années bissextiles.
ce qui est parfaitement logique ;)

sans connaitre le code ni la logique de la fonction MOIS.DECALER ...?
Ou il n'y a pas de notion de jour , logique différente ??

Eternel problème de la valeur calendaire vis à vis de la valeur variable de la durée d'un mois...
sacré mois de Février ;)))

flagrant délit :
1606569072453.png
 

patricktoulon

XLDnaute Barbatruc
Bonjour
en a1
01/02/2020
en B1
24
en c1
=date(année(A1);mois(A1)+B1;jour(A1))
il n'y a pas de soucis avec les années bissextiles on decale d'un jour et c'est normal2021 n'a pas de 29 fevrier
mois decaler ramene au dernier jour du mois
on peut aussi considérer que c'est juste puisque l'on parle d'ajout en mois
tout dépend des calculs qui doivent être fait
sur un calcul linéaire exact prendre l'option 1: sur un calcul calendaire prendre l'option 2

Capture.JPG
 
Dernière édition:

Discussions similaires

Réponses
27
Affichages
717

Statistiques des forums

Discussions
284 862
Messages
1 863 695
Membres
155 617
dernier inscrit
MoriSI
Haut Bas