XL 2013 VBA / Calcul du nombre de 1/4 heure entre 2 dates avec condition

PMG

XLDnaute Junior
Bonjour le fil, le forum,

Voici mon problème:
Soit un tableau 3 colonnes (Code / début / fin).
J'essaye de calculer le nombre de 1/4 d'heure compris entre 2 dates de chaque lignes d'un tableau en fonction d'un code.
Et essaye de reporter les totaux obtenus pour chaque code ds un tableau de résultat.

Je suis parti d'un code de @job75 qui me permet de compter le nombre de lignes pour chaque codes, mais je crois faire fausse route!

VB:
Sub Compte()
Dim resu(), cel As Range, i As Variant
With Sheets("Feuil1").Range("H3:H12")
    ReDim resu(1 To .Rows.Count, 1 To 1)
    For Each cel In [B3:B38] 'tableau à étudier
        i = Application.Match(cel.Value, .Columns(0), 0)
        If IsNumeric(i) Then
        resu(i, 1) = resu(i, 1) + 1
    Next
    .Value = resu  'restitution
End With
End Sub
n code

Pourriez vous m'aider svp?
Merci d'avance pour votre disponibilité et vos lumières!
PMG
 

Pièces jointes

  • Différence entre dates.xlsm
    38.1 KB · Affichages: 9
Solution
Re,

Sinon en VBA, on pourra tester :
Code:
Sub test()
Const formul = "=arrondi(SOMMEPROD( (bbb=G3) * (ddd-ccc))/'00:15';0)"
Dim der1&, der2&, x As Range, formule

   Application.ScreenUpdating = False
   With Feuil1
      If .FilterMode Then .ShowAllData
      der1 = .Cells(.Rows.Count, "b").End(xlUp).Row
      der2 = .Cells(.Rows.Count, "g").End(xlUp).Row
      Set x = .Range("b3:b" & der1)
      formule = Replace(formul, "'", """")
      formule = Replace(formule, "bbb", x.Address)
      formule = Replace(formule, "ccc", x.Offset(, 1).Address)
      formule = Replace(formule, "ddd", x.Offset(, 2).Address)
      .Range("h3").FormulaLocal = formule
      .Range("h3:h" & der2).FillDown
      .Range("h3:h" & der2) = .Range("h3:h" &...

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Pourquoi partir d'un code qui est sensé faire autre chose que répondre à votre question.
Prenez-vous un marteau pour manger un steack ?

Calcul du nombre de quarts d'heure : (dateHeure1 - dateHeure2) * 96 où 96 = 24*4

Condition ? quelle condition ?

Bonne journée
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Sinon en VBA, on pourra tester :
Code:
Sub test()
Const formul = "=arrondi(SOMMEPROD( (bbb=G3) * (ddd-ccc))/'00:15';0)"
Dim der1&, der2&, x As Range, formule

   Application.ScreenUpdating = False
   With Feuil1
      If .FilterMode Then .ShowAllData
      der1 = .Cells(.Rows.Count, "b").End(xlUp).Row
      der2 = .Cells(.Rows.Count, "g").End(xlUp).Row
      Set x = .Range("b3:b" & der1)
      formule = Replace(formul, "'", """")
      formule = Replace(formule, "bbb", x.Address)
      formule = Replace(formule, "ccc", x.Offset(, 1).Address)
      formule = Replace(formule, "ddd", x.Offset(, 2).Address)
      .Range("h3").FormulaLocal = formule
      .Range("h3:h" & der2).FillDown
      .Range("h3:h" & der2) = .Range("h3:h" & der2).Value
   End With
End Sub
 

PMG

XLDnaute Junior
Bonjour Roblochon, mapomme et le Forum,

Merci pour vos réponses.
En postant hier soir ma demande, je me suis dis que je donnais le bâton pour me faire battre!
Du coup j'ai droit au marteau, ok je l'ai bien cherché!! J'étais pas très frais, j'aurais dû m'abstenir!! Lol

Merci pour vos solutions, j'avais utilisé pour chaque lignes et trouver le nombre de 1/4 d'heure:
Code:
=((D3-C3)/(1/24))/0,25
et pour le tableau de résultat:
Code:
=SOMME.SI(B$3:B$40;G$3:G$12;E$3:E$40)

C'est plutôt en VBA que je rame! J'avais commencé mais n'est pas encore le niveau!
Work in progress!

Le but est de calculer résultat de cette opération pour chaque ligne du tableau:
Heure de fin - Heure de début = X Nb de 1/4 d'heure
Et d'additionner les résultats en fonction du code (colonne 1) de chaque lignes dans le tableau final.

Merci @mapomme pour le code, il marche très bien!
Pourriez vous m'expliquer cette partie:
VB:
      formule = Replace(formul, "'", """")
      formule = Replace(formule, "bbb", x.Address)
      formule = Replace(formule, "ccc", x.Offset(, 1).Address)
      formule = Replace(formule, "ddd", x.Offset(, 2).Address)

Merci!
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 324
Membres
102 862
dernier inscrit
Emma35400