Calcul de durée entre deux dates en utilisant WorksheetFunction.NetworkDays

Bonjour le forum,

J'ai un tableau qui contient 4 dates, date, date du choix de solution, date de planification et enfin date de clôture. Le problème que j'ai c'est que j'ai appliqué la fonction WorksheetFunction.NetworkDays qui me renvoie le résultat sous la forme d'une date, par exemple la durée écoulée entre date:02/04/2019 et date du choix de solution 04/04/2019 c'est 03/01/1900. Merci d'avance pour votre aide.

Voici mon code ainsi que le fichier sur lequel je travaille:

Sub Date_Diff()

'Optimisation de vitesse
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlCalculationManual

'D?claration des variables
'Variable de comptage utilis?e dans la boucle "*"
Dim j As Integer
'Variable de d?signation des cellules utilis?e dans la boucle "*"
Dim Cel As Range
'Variable pour d?clarer la feuille sur laquelle on va travailler "Suivi demande d'outillages"
Dim sheet As Worksheet

'Affectation de la valeur ? la variable sheet
Set sheet = Worksheets("Suivi demande d'outillages")

'Activation de la feuille "Datas - Charge"
sheet.Activate

'Calcule du nombre de "Demandeur" dans la feuille du calcul
nD = Application.WorksheetFunction.CountA(Columns(2)) - 1

'Boucle "*"
'Param?trage de la boucle "*" en fonction du nombre de "Demandeur"
j = 0
While j <= nD - 1
'Les conditions ? tenir en compte pour faire comparer des cellules de la colonne "Date" vers les cellules de la colonne "Date du choix solution"
'Comparaison
       If sheet.Cells(2 + j, 4).Value >= sheet.Cells(2 + j, 11).Value Or sheet.Cells(2 + j, 11).Value = "" Then
       Else
       dblNetworkDays = WorksheetFunction.NetworkDays(sheet.Cells(2 + j, 4).Value, sheet.Cells(2 + j, 11).Value)
       sheet.Cells(2 + j, 12).Value = dblNetworkDays

       End If
       j = j + 1
Wend

'Message de fin
  MsgBox "Done"

'Reset Settings:
'R?initialiser les param?tre de macro optimazer
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

End Sub

Bonjour OussamaTRAIHY,

Afin de calculer une différence entre 2 dates il préférable d'utiliser la fonction DateDiff.

Exemple d'utilisation:

Dim TheDate As Date    ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg

Bonjour Florian53,

En fait je veux pas inclure dans mon calcul les week-end. Normalement la fonction WorksheetFunction doit renvoyer le résultat en nombre de jours mais dans mon cas j'arrive pas à comprendre pourquoi elle le met sous forme d'une date.

tu peux utiliser une fonction pour compter le nombre de samedi ou de dimanche ex:

Function nb_samedi_dimanche(debut, fin)
For n = debut To fin
 If Weekday(n) = 7 or weekday(n)=1 Then nb = nb + 1
Next n
nb_samedi_dimanche = nb
End Function

et déduire ce résultat au résultat de Datediff

Bonjour,

J'ai testé :

Function F_NDays(da, db) As Long
  Application.Volatile True
  F_NDays = Application.WorksheetFunction.NetworkDays(da, db)
End Function

En A1, date début, en A2, date fin, en C3 : F_NDays(A1;A2)

... et n'oublie pas de formater la colonne L en "standard"

Bonjour oxydum,

J'ai rien du tout compris de ton explication , si c'est possible oxydum de m'expliquer l'utilité de ton code et merci d'avance

Bonjour,

J'ai testé de mon tour ta fonction mais c'est toujours le même résultat il me renvoie le résultat en date, tu peux tester sur mon fichier et me dire c'est ou l'erreur.

Function F_NDays(da, db) As Long
  Application.Volatile True
  F_NDays = Application.WorksheetFunction.NetworkDays(da, db)
End Function

En A1, date début, en A2, date fin, en C3 : F_NDays(A1;A2)

Ci-joint ton fichier

Rechercher des sujets similaires à "calcul duree entre deux dates utilisant worksheetfunction networkdays"