XL 2016 Comment calculer la somme des heures!

zinoukrimo

XLDnaute Nouveau
Bonjour je voudrais savoir dans ce fichier excel quelle fonction ou formule utiliser pour calculer la somme des heures selon la colonne nommée la durée totale (hh:mm:ss).
 

Pièces jointes

  • Detailed Event Report 2019.xlsx
    179.5 KB · Affichages: 21

Victor21

XLDnaute Barbatruc
Bonjour.

Les durées sont sous forme de textes, pas de nombres (voir éventuellement comment les convertir lors de l'importation).
En L8 : =TEMPSVAL(J8)
En M8 : =SOMME.SI($A$8:$A$2098;$A8;$L$8:$L$2018)
Le tout au format [h]:mm:ss à recopier jusqu'en bas.
 

zinoukrimo

XLDnaute Nouveau
Bonjour.

Les durées sont sous forme de textes, pas de nombres (voir éventuellement comment les convertir lors de l'importation).
En L8 : =TEMPSVAL(J8)
En M8 : =SOMME.SI($A$8:$A$2098;$A8;$L$8:$L$2018)
Le tout au format [h]:mm:ss à recopier jusqu'en bas.

je pense qu'il y a une faute vu le résultat Victor21!
 

Pièces jointes

  • Detailed Event Report 2019.xlsx
    164.1 KB · Affichages: 14

job75

XLDnaute Barbatruc
Bonjour zinoukrimo, Patrick,

Voyez le fichier joint et cette macro dans le code de la feuille "Total" (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub WorkSheet_Activate()
Dim colref%, coldur%, tablo, resu(), d As Object, i&, lig&, n&
colref = 3 'colonne de référence, à adapter
coldur = 10 'colonne des durées, à adapter
tablo = Feuil1.[A7].CurrentRegion.Resize(, coldur)
ReDim resu(1 To UBound(tablo), 1 To 3)
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(tablo)
    If IsDate(tablo(i, coldur)) Then tablo(i, coldur) = CDbl(TimeValue(tablo(i, coldur)))
    If Not IsNumeric(tablo(i, coldur)) Then tablo(i, coldur) = 0
    If d.exists(tablo(i, colref)) Then
        lig = d(tablo(i, colref))
        resu(lig, 3) = resu(lig, 3) + tablo(i, coldur)
    Else
        n = n + 1
        d(tablo(i, colref)) = n 'mémorise la ligne
        resu(n, 1) = tablo(i, 1)
        resu(n, 2) = tablo(i, colref)
        resu(n, 3) = tablo(i, coldur)
    End If
Next
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] 'cellule à adapter
    If d.Count Then .Resize(n, 3) = resu
    .Offset(d.Count).Resize(Rows.Count - d.Count - .Row + 1, 3).ClearContents 'RAZ en dessous
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Elle se déclenche quand on active la feuille.

Nota : en colonne A de la 1ère feuille les données ne sont pas des noms de conducteurs, je les ai déplacées en colonne C.

A+
 

Pièces jointes

  • Detailed Event Report 2019(1).xlsm
    176.9 KB · Affichages: 13

zinoukrimo

XLDnaute Nouveau
Bonjour zinoukrimo, Patrick,

Voyez le fichier joint et cette macro dans le code de la feuille "Total" (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub WorkSheet_Activate()
Dim colref%, coldur%, tablo, resu(), d As Object, i&, lig&, n&
colref = 3 'colonne de référence, à adapter
coldur = 10 'colonne des durées, à adapter
tablo = Feuil1.[A7].CurrentRegion.Resize(, coldur)
ReDim resu(1 To UBound(tablo), 1 To 3)
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(tablo)
    If IsDate(tablo(i, coldur)) Then tablo(i, coldur) = CDbl(TimeValue(tablo(i, coldur)))
    If Not IsNumeric(tablo(i, coldur)) Then tablo(i, coldur) = 0
    If d.exists(tablo(i, colref)) Then
        lig = d(tablo(i, colref))
        resu(lig, 3) = resu(lig, 3) + tablo(i, coldur)
    Else
        n = n + 1
        d(tablo(i, colref)) = n 'mémorise la ligne
        resu(n, 1) = tablo(i, 1)
        resu(n, 2) = tablo(i, colref)
        resu(n, 3) = tablo(i, coldur)
    End If
Next
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] 'cellule à adapter
    If d.Count Then .Resize(n, 3) = resu
    .Offset(d.Count).Resize(Rows.Count - d.Count - .Row + 1, 3).ClearContents 'RAZ en dessous
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Elle se déclenche quand on active la feuille.

Nota : en colonne A de la 1ère feuille les données ne sont pas des noms de conducteurs, je les ai déplacées en colonne C.

A+

bonjour job75 mes excuses pour le retard je viens juste de consulter le site merci pour le travail.
maintenant je voudrais entrée d'autre fonction.

il s'agit d'avoir le nom du conducteur la colonne "A" sur la ligne M quand on choisi avec son immatricule dans la ligne N, exemple si je choisi "RELEX NATIONAL" dans la la ligne M je doit avoir dans la ligne N "00468-119-30" son immatriculation et avoir sa vitesse max et min dans la ligne P comme dans le fichier ci joint dans le post, moi je n'arrive pas à trouver la bonne formule ou fonction.
 

Pièces jointes

  • Detailed Event Report 2019(1).xlsm
    162.2 KB · Affichages: 6

zinoukrimo

XLDnaute Nouveau
bonjour job75 finalement il fallait juste appliquer la Formules matricielles en P13 et P14 à valider par Ctrl+Maj+Entrée et ce que je peu ajouter des couleurs pour chaque conducteur dans la colonne "Nom du conducteur" et si c'est possible un tableau croisé dynamique pour pour suivre les excès de vitesses de chaque conducteur dans une autre feuille dans le même fichier avidement... merci beaucoup et bonne journée.
 

Discussions similaires

  • Résolu(e)
Microsoft 365 =somme.si
Réponses
4
Affichages
74
Réponses
16
Affichages
412

Statistiques des forums

Discussions
312 104
Messages
2 085 337
Membres
102 865
dernier inscrit
FreyaSalander