Date de fin avec 2.5 de week-end

Résolu
Bonjour tout le monde,

J'aimerai définir la date de fin de mon projet avec un week-end de 2.5 jours (c'est-à-dire vendredi après-midi, samedi toute la journée et dimanche toute la journée).

J'ai utilisé la fonction serie.jour.ouvre.intl et j'ai réussi à enlever juste le samedi et le dimanche mais pas le vendredi après-midi.

Merci de votre aide.

MAH

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Bonjour

    Voilà une fonction personnalisée à mettre dans un module de l'éditeur VBA
    (ALT+F11 pour ouvrir éditeur - Insertion - Module - copier coller la macro dans la page et fermer l'éditeur)
    Function finproj(debut As Date, duree As Integer)
    datef = debut
    Do Until tot >= duree
    If Weekday(datef, 2) < 5 Then tot = tot + 1
    If Weekday(datef, 2) = 5 Then tot = tot + 0.5
    datef = datef + 1
    Loop
    finproj = datef - 1
    End Function
    


    La macro s'emploie alors comme nimporte quelle fonction avec la syntaxe :
    =finproj(cellule de la date de debut;nombre de jours du projet)
    exemple avec la date en B2 et un projet de 12 jours :
    =finproj(B2;12)

    Cdlmnt
    Via

    "L'imagination est plus importante que le savoir."    A. Einstein
    1. Bonsoir Via

      Merci pour votre réponse. c'est super ça marche. J'ai découvert VBA grâce à vous :)

      Désolé, j'ai oublié de préciser dans mon precedent message qu'il faut aussi enlever les "jours fériés" sachant que ces jours fériés sont enregistrés sur une plage de cellule. Je vous remercie de votre réponse.

      Cdlt,

      Mah
    2. @MAH1311Re,

      J'aurai du y penser !
      Voilà la macro pour en tenir compte, à adapter selon ton fichier (la 1ere instruction IF est faite pour une plage des jours féries nommée feries (Range "feries") et située dans la 2eme feuille du classeur (Sheets(2) )donc changer les références dans l'instruction si nécessaire)
      Function finproj(debut As Date, duree As Integer)
      datef = debut
      Do Until tot >= duree
      If Application.WorksheetFunction.CountIf(Sheets(2).Range("feries"), datef) = 0 Then
      If Weekday(datef, 2) < 5 Then tot = tot + 1
      If Weekday(datef, 2) = 5 Then tot = tot + 0.5
      End If
      datef = datef + 1
      Loop
      finproj = datef - 1
      End Function
      

      Cdlmnt
      Via
    3. Merci ça a fonctionné :)