Microsoft 365 Calcul de réccurence

sr94

XLDnaute Occasionnel
Bonjour
J’aurai besoin d’un coup de main pour finaliser une formule.
Je souhaiterais créer des tâches récurrentes avec 4 possibilités :
Le 1er jour du mois
Tous les jours de la semaine
Mensuel
Hebdomadaire

Je pars d’une date de début, à partir de laquelle la réccurence est calculée. Certaines tâches sont sans réccurence.
Lorsque la tâche est effectuée, je passe Terminé Non en Oui et à partir de là il doit me recalculer une échéance puis remettre Terminé à « Non » au démarrage du fichier par macro.
Ci-joint ce que j’ai fait mais la macro et la formule date d’échéance ne marchent pas comme il faut.
Pouvez vous m’aider ?

Je suis ouverte à d'autres approches si quelqu'un a déjà fait un fichier de ce type.

Merci beaucoup
 

Pièces jointes

  • todo test.xlsm
    36.3 KB · Affichages: 9

Dranreb

XLDnaute Barbatruc
Bonjour.
Avec cette formule il calcule bien le 15/6
En Tableau1[Date d'échéance] :
Code:
=SI([@[Date de début]]<>"";CHOISIR(EQUIV([@[Task Recurrance]];{"Hebdomadaire";"Mensuel";"1er du mois";"Tous les jours de la semaine";""};0);[@[Date de début]]+7;MOIS.DECALER([@[Date de début]];1);DATE(ANNEE([@[Date de début]]);MOIS([@[Date de début]])+1;1);[@[Date de début]]+1);"")
 

sr94

XLDnaute Occasionnel
super merci !
par contre si j'ai une échéance à aujourd'hui, que je mets Terminé en oui, et "tous les jours de la semaine" en réccurence il ne recalcule pas. Il faut attendre le jour suivant ? (il doit passer du vendredi au lundi pas au samedi). Egalement ça ne doit pas se calculer 1 seule fois mais de façon réccurente chaque jour, ou semaine etc ... la date de début est juste un point de départ.
 

Dranreb

XLDnaute Barbatruc
Je n'ai as regardé la programmation, en attendant que ce problème soit réglé.
Après, je suppose qu'il faut quelque part une macro qui remplace toutes les Date de début dépassées et Terminé par la Date d'échéance.
 

Dranreb

XLDnaute Barbatruc
Cette macro devrait faire le taf :
VB:
Sub NouvellesEchéances()
   Dim LOt As ListObject, CDDéb As Integer, CDEch As Integer, CTerm As Integer, L As Long, RngLig
   Set LOt = Feuil1.ListObjects(1)
   CDDéb = LOt.ListColumns("Date de début").Index
   CDEch = LOt.ListColumns("Date d'échéance").Index
   CTerm = LOt.ListColumns("Terminé").Index
   For L = 1 To LOt.ListRows.Count
      Set RngLig = LOt.ListRows(L).Range
      If RngLig(1, CTerm).Value = "Oui" And RngLig(1, CDEch).Value <= Date Then
         RngLig(1, CDDéb).Value = RngLig(1, CDEch).Value
         RngLig(1, CTerm).Value = Empty
         End If
      Next L
   End Sub
 

Discussions similaires

Réponses
16
Affichages
2 K

Statistiques des forums

Discussions
312 103
Messages
2 085 312
Membres
102 860
dernier inscrit
fredo67