Calcul date bute

bonjour

Voici mon probléme, j ai un tableau avec en première ligne les mois de l'année, les lignes suivantes comportant le jour du mois (exemple ligne I2 correspond au 31/07/17. Ce que je souhaiterais c est une formule qui calcule une date bute a 7 mois pour chaque ligne en colonne O; pour la ligne 2 O2 serais alors égale au 28/02/18..

J'ai essayé avec la fonction mois décaler mais je n'y arrive pas ...

Merci d'avance

Bonjour Stef,

A la condition de modifier les entêtes de mois avec un date à la place de texte (de les formater en "mois - année" pour avoir le même rendu),

la formule suivante doit faire la blague :

=FIN.MOIS(DATEVAL(CONCATENER(I2;"/";MOIS(I1);"/";ANNEE(I1)));7)

Bonjour et merci

ça marche pour la ligne 2 mais pas pour les autres cela doit être parce qu'on fait référence à la cellule I2, en fait ce que je voudrais c'est incrémenter la colonne O de + 7 mois avec la dernière date de chaque ligne qui n'est pas forcément en I2 ?????

pas sur d'avoir été très clair

En fait ce tableau me sert de suivi pour des contrôles qui ne peuvent pas être espacé de plus de 7 mois, la colonne O m'indiquant la date butoire cela me permettrait d'avoir un suivi peu plus pointu ....

Bienveillamment

Bonjour,

une solution avec une fonction personnalisée, voila ce que j'ai compris

si le jour de la date +7 mois est plus petit que le jour de fin de mois on prend le jour de la date butoir, sinon on prend le jour de fin de mois du mois + 7 mois. exemples :

31/7/2017 -> 28/2/2018

25/7/2017->25/2/2018

30/9/2017->30/4/2018

Function datbutoir(ld As Range, lt As Range, nm)
' ld, plage de dates pour laquelle il faut déterminer la date butoir
' lt, plage de titres correspondants
' nm, nombre de mois à ajouter à la dernière date trouvée pour déterminer la date butoir
    tm = Split("janv.,févr.,mars,avr.,mai,juin,juil.,août,sept.,oct.,nov.,déc.", ",")
    If ld.Count <> lt.Count Then datbutoir = CVErr(xlErrValue): Exit Function
    For i = ld.Count To 1 Step -1
        If ld.Cells(1, i) <> "" Then Exit For
    Next i
    d = Val(ld.Cells(1, i))
    y = Right(lt.Cells(1, i), 2)
    m = Replace(lt.Cells(1, i), " " & y, "")
    y = y + 2000
    For i = 1 To 12
        If m = tm(i - IIf(LBound(tm) = 0, 1, 0)) Then Exit For
    Next i
    m = i
    m = m + nm
    If m > 12 Then y = y + 1: m = m - 12
    eom = Day(Application.WorksheetFunction.EoMonth(DateSerial(y, m, 1), 0))
    If eom < d Then d = eom
    dt = DateSerial(y, m, d)
    datbutoir = dt
End Function

la fonction pourrait être grandement simplifiée si tu utilisais des dates dans ton tableau et non des chaines de caractères qu'il faut convertir en date pour pouvoir faire les calculs.

Bonjour à tous,

déjà il faut mettre des vraies dates et des vrais nombres (alignés à droite) et non du texte partout (aligné à gauche) comme tu as fait.

La formule :

=MOIS.DECALER(INDEX($A$1:$N$1;;MAX(SI(B2:N2;COLONNE(B2:N2))))+INDEX(A2:N2;;MAX(SI(B2:N2;COLONNE(B2:N2))))-1;7)

formule matricielle à valider avec shift+ctrl+entrée

La formule doit s'entourer de { } si la validation est correcte.

eric

Merci à tous pour votre travail

Je ne suis pas très doué avec toutes ces formules, de toute les réponses celle de h2so4 me semble la plus simple et correspond parfaitement à ce que je veux faire ... Mais tellement mauvais que je n'arrive même âs à la transposée à mon tableau de boulot que je vous joins ...

Si quelqu'un peut m'aider ....

Bienveillement

j'avais oublié de joindre le fichier.

Un grand merci pour votre travail et surtout pour votre réactivité, ça fonctione parfaitement ...

Grace a vous tous je vais gagner un temps précieux ...

Rechercher des sujets similaires à "calcul date bute"