Date de fin avec 2.5 de week-end

Résolu
MAH1311 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
MAH1311 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    1. MAH1311 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
       
      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
      0
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > MAH1311 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
         
        Re,

        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
        0
    2. MAH1311 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci ça a fonctionné :)
      0