Format Date et Calcul ecart en jour et heure entre deux dates

Bonjour à tous.

Débutant et autodidacte en général je m'inspire des réponses sur ce forum mais là j'ai besoin d'aide.

Dans le fichier attaché j'ai deux colonnes avec des dates et je dois connaitre l'écart en nombre de jour et d'heure de ces 2 dates. (C'est pour par la suite calculer des frais d'annulation).

L'extraction de mon logiciel m'ajoute un premier caractère ' en début de ligne. J'ai contré ce problème avec ceci :

' Mise en forme de la colonne DateTo
Cells.Find(What:="DateTo").Activate
ActiveCell.Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.TextToColumns , DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 9), Array(1, 4), Array(11, 9)), TrailingMinusNumbers:= _
True

Problème :

Pour la deuxième colonne qui est de même format une fois ce script utilisé j'ai les dates au format Anglais et je n'arrive pas a trouver la solution pour mettre au format Français et sans perdre l'info des heures et minutes.

Ensuite une fois ces dates au bon format il faudrait que j'ai mon écart en nombre de jour et d'heure de ces deux colonnes.

J'espère que ma demande est explicite :-)

Merci de votre aide.

Eddie

Bonjour

Je penses que cela répond au besoin

Merci, on est pas loin, le piège dans la colonne "CancelledDate" la date se transforme en format anglais avec le mois/jours/année ce qui me fausse les résultats.

Regarde la ligne 40, dans le fichier d'origine la date est le 05/01/2022 et après traitement elle devient 01/05/2022.

Je pense qu'il faudrait traiter la colonne pour s'assurer de garder le bon format, mais je n'y arrive pas.

Merci encore

Eddie

Effectivement, je n'y avait pas prêté attention. Voila deux versions (assez proches) qui corrigent cela

Je n'ai gardé que 500 lignes dans le tableau pour gagner du temps

Option Explicit

Sub test01()
  Dim tb(), i!
  Dim Interval As Date

  Range("Tableau1").Replace What:="'", Replacement:="", LookAt:=xlPart, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
      ReplaceFormat:=False
  Range("Tableau1").Replace What:=".", Replacement:="/", LookAt:=xlPart, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
      ReplaceFormat:=False
  Sheets(1).ListObjects("Tableau1").ListColumns(1).DataBodyRange.Cells.NumberFormat = "m/d/yyyy h:mm"
  Sheets(1).ListObjects("Tableau1").ListColumns(2).DataBodyRange.Cells.NumberFormat = "m/d/yyyy h:mm"
  tb = Range("Tableau1").Value2
  For i = 1 To UBound(tb)
    If tb(i, 2) <> "" Then
      Interval = CDbl(CDate(tb(i, 2))) - CDbl(CDate(tb(i, 1)))
      tb(i, 3) = Int(CSng(Interval)) & " Jours " & Format(Interval, "hh") _
        & " Heures " & Format(Interval, "nn") & " Minutes " & _
        Format(Interval, "ss") & " Secondes"
    End If
  Next i

  Range("Tableau1") = tb

End Sub
Bonjour Nathalie et Yal.

Un grand merci à vous pour votre aide, j'ai ma solution

Eddie
Rechercher des sujets similaires à "format date calcul ecart jour heure entre deux dates"