Date d'échéance

4contrat.xlsx (9.80 Ko)

Bonjour,

J'ai des dates a calculer en fonction de la durée de contrat. La date de renouvellement doit être la date du contrat + la durée - 1 jour §

Dans le tableau joint, ça marche dans les 3 premiers cas mais pas pour les deux suivant ... quelle est la formule a adopter car je suppose que si l'année du contrat est une année bissextile ou pas ça change la date d'échéance.

Merci pour vos réponses

Cordialement

B GOUTHIER

Salut Bernard,

ça marche aussi ainsi...

=SI(A3="P";"Perpétuité";DATE(ANNEE(B3)+A3;MOIS(B3);JOUR(B3)-1))


A+

Bonjour

Un essai à tester. Te convient-il ?.

17contrat-v1.xlsx (15.13 Ko)

Bye !

Bonjour Gmb,

Ça marche même beaucoup mieux, je vous remercie beaucoup !

Comment avez vous deviné que c'était pour des conceptions de cimetiére ? Le problème c'est que maintenant quand la case de durée n'est pas remplie : ça me met une erreur "nombre" dans la case, mais ce n'est pas gênant !

Merci encore et bonne journée

Suffit de demander...

=SI(A3="P";"Perpétuité";SI(A3="";"Á déterminer";DATE(ANNEE(B3)+A3;MOIS(B3);JOUR(B3)-1)))


A+

S'cusez moi ... mon message s'adressait a currulis57, mais merci également à GMB

: ça me met une erreur "nombre"

Nouvelle version.

15contrat-v2.xlsx (15.19 Ko)

Bye !

Bonjour à tous

J'ai essayé cette formule qui fonctionne mais pas pour les année avant 1900

Si il y a une solution, je suis preneur

Merci

cordialement

Salut micîd,

normal, le système de date débute le 1/1/1900.
Pour calculer avec des dates antérieures, il faut s'amuser avec VBA...


A+

Salut micîd,

en cherchant un peu plus, il y a moyen de passer à côté de ce problème en encodant TOUTES les dates en format TEXTE et en convertissant ce texte en date via la formule suivante (à adapter).

=DATE(DROITE(F3;4)+E3;STXT(F3;4;2);GAUCHE(F3;2))-1
3contrat.xlsx (12.30 Ko)


A+

Bonsoir

Merci pour vos commentaires, mais je me permet de joindre mon fichier pour vérification si c'est vous le voulez bien

2cimetiere-03.xlsm (31.93 Ko)

Salut micîd,

vois si ceci, à ma sauce, peut te convenir.
- j'ai formaté la colonne I (dates) en TEXTE, comme expliqué plus tôt
- la colonne K est formatée (personnalisée) ainsi : [$-fr-BE] jj/mm/aaaa
- pas compris ta formule : "type","I"...
- ma formule

=SI(J3="P";"Perpétuité";SI(OU(J3="";J3<1);"?";DATE(DROITE(I3;4)+J3;STXT(I3;4;2);GAUCHE(I3;2))-1))

À adapter en fonction de tes besoins.

2cimetiere-03.xlsm (28.47 Ko)


A+

=SIERREUR(SI(NBVAL(I3:J3)<>2;"";SI(J3="P";"Perpétuité";SI(ESTTEXTE(I3);GAUCHE([@[Date de Début]];6)&DROITE([@[Date de Début]];4)+[@Durée];DATE(ANNEE(I3)+A3;MOIS(I3);JOUR(I3)-1))));"???")

=SI(NBVAL(Tab_bdd[@[Date de Début]:[Durée]])<>2;"";SI([@Durée]="P";"perpétui...";SI(ESTTEXTE([@[Date de Début]]);GAUCHE([@[Date de Début]];6);TEXTE([@[Date de Début]];"dd/mm/"))& SI(ESTTEXTE([@[Date de Début]]);DROITE([@[Date de Début]];4);TEXTE([@[Date de Début]];"jjjj"))+[@Durée]))

4cimetiere-03.xlsm (33.97 Ko)

avec un udf

Function DateFin(DateDebut, Durée)
     If Len(DateDebut) * Len(Durée) = 0 Then DateFin = "-": Exit Function
     If StrComp(Durée, "P", 1) = 0 Then DateFin = "Perpuité": Exit Function
     If IsNumeric(DateDebut) Then dd = Format(dd, "dd/mm/yyyy") Else dd = DateDebut
     DateFin = Left(dd, 6) & Right(dd, 4) + Durée
End Function

Merci

Mais j'ai encore un souci, lorsque j'ajoute une date dans la colonne date de début dans le tableau, j'ai dans ka colonne kolom2 la réponse UDF

que faut-il faire

Merci de m'aider

Comme vous

pouvez le constater je n'ai pas les même résultat dans les différentes colonne

Micîd,

on t'a dit de mettre la colonne [I:I] en format TEXTE.
Précision : formater obligatoirement la date en "jj/mm/aaaa"...

image

A+

merci beaucoup

l'UDF est modifié un petit peu, les années avant 1900 restent texte et le reste est numerique où on peut appliquer un format comme "jj/mm/aaaa" ou un autre

Ceci fonctionne pour les date à partir de l'année 0 et est facile à adapter pour les années plus tôt.

Il vérifie aussi le 29 février en cas de ...

Function DateFin(DateDebut, Durée)
     '***********************************
     'fonctionne pour des date > 01/01/0000
     '***********************************
     Dim DatePlus
     If Len(DateDebut) * Len(Durée) = 0 Then DateFin = "-": Exit Function     'un des 2 variables n'est pas connu
     If StrComp(Durée, "P", 1) = 0 Then DateFin = "Perpétuité": Exit Function     'durée est un "P"
     If VarType(Durée) = vbString Then DateFin = "Texte": Exit Function     'durée est texte
     If VarType(DateDebut) <> vbString Then     'date n'est pas un texte, donc un date >= 01/01/1900
          DateFin = CDbl(WorksheetFunction.EDate(DateDebut, 12 * Durée))     'c'est facile, juste ajouter la durée en mois
     Else
          sp = Split(DateDebut, "/")     'split le texte sur les "/"
          DatePlus = WorksheetFunction.EDate(DateSerial(sp(2) + 2000, sp(1), sp(0)), 12 * Durée)     'ajouter 2.000 années pourque la date soit >= 1/1/1900 et puis au tant d'années *12
          On Error Resume Next     'continuer en cas d'erreurs
          DateFin = WorksheetFunction.EDate(DatePlus, -12 * 2000)     'substraire de nouveau 2.000 anées
          On Error GoTo 0
          If VarType(DateFin) = 0 Then DateFin = Format(DatePlus, "DD/MM/") & Format(Format(DatePlus, "yyyy") - 2000, "0000")     'si après substraction la date est < 1/1/1900, le résultat sera un texte
     End If
End Function
Rechercher des sujets similaires à "date echeance"