XL 2016 Relevé de la première et dernière données par jour dans une BDD

Matthias A

XLDnaute Nouveau
Bonjour à tous,

Je sèche sur un travail.

J'ai une base de donnée comportant l'ensemble des actes par praticien sur une période donnée. J'ai donc un certain nombre de lignes par jour pour différents praticien. Je souhaite relever l'heure du premier et du dernier acte par jour et par praticien pour calculer l'heure moyenne de début et de fin de vacation. Je vous joins une capture d'écran de ma base de donnée pour explicité le propos.

Dans les faits je n'ai pas envie de balayer une base de donnée de plusieurs dizaine de millier de lignes pour relever les informations une à une. Je pense qu'il existe un moyen plus simple de faire cela mais je touche à la limite de mes compétences.

En espérant que l'un d'entre vous aura une idée pour me permettre d'apprendre.

Bien cordialement

Matthias
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    71.9 KB · Affichages: 36
  • test.xlsx
    17.5 KB · Affichages: 3
Dernière édition:

vgendron

XLDnaute Barbatruc
en pj une propostion par formules matricielles dans la feuille 2
==> d'abord trier la BDD par vacataire + heure d'arrivée
==> extraire sans doublon la liste des vacataires pour les mettre en feuille 2
==> formule à base de Min max et index
 

Pièces jointes

  • test (4).xlsx
    19.1 KB · Affichages: 4

Modeste

XLDnaute Barbatruc
Bonjour,
Salut vgendron,

Avec un Tableau Croisé Dynamique ?
1654766303566.png


[Edit :] Tes heures n'en sont pas vraiment (considérées par Excel comme du texte !?)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Mathias, Vgendron, Modeste,
En PJ une autre approche, les RV se rafraichissent automatiquement lorsqu'on change la date, avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [C3]) Is Nothing Then
        Application.ScreenUpdating = False
        With Sheets("Feuil1")
            tablo = .Range("A2:F" & .Range("A1000000").End(xlUp).Row) ' Transfert dans tablo
        End With
        Range("B6:G7").ClearContents
        Hmin = "23:59": Hmax = 0: IndMin = 0: IndMax = 0: DateCherchée = [C3]
        For i = 1 To UBound(tablo)
            If tablo(i, 2) = DateCherchée Then      ' Si bonne date
                If tablo(i, 5) < Hmin Then          ' Si heure< min mémorisé
                    Hmin = tablo(i, 5): IndMin = i  ' On mémorise
                End If
                If tablo(i, 5) > Hmax Then          ' Si heure> max mémorisé
                    Hmax = tablo(i, 5): IndMax = i  ' On mémorise
                End If
            End If
        Next i
        For C = 1 To 6                              ' On restitue les deux RV
            Cells(6, C + 1) = tablo(IndMin, C)
            Cells(7, C + 1) = tablo(IndMax, C)
        Next C
    End If
Fin:
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • test (33).xlsm
    26 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Job,
Pour moi, cette phrase ne veut rien dire:
Je souhaite relever l'heure du premier et du dernier acte par jour et par praticien pour calculer l'heure moyenne de début et de fin de vacation.
1- On fait la moyenne de l'heure min et l'heure max, ce qui ne signifie rien.
2- On fait la moyenne pour un jour de tous les RV pour chaque praticien, mais alors l'heure du premier et du dernier acte ne veut rien dire.
Donc après des précisions, on avisera. :)
 

chris

XLDnaute Barbatruc
Bonjour à tous

D'après ce que j'ai compris, en remplaçant CHAREM par CHAFRA pour tester avec une moyenne utilisant au moins 2 valeurs pour un nom
1654768759261.png

Très simple via PowerQuery intégré à Excel
 

Pièces jointes

  • Horaires_moyenne_Début_Fin_PQ.xlsx
    26.7 KB · Affichages: 9

chris

XLDnaute Barbatruc
RE
je ne maitrise pas du tout PowerQuery mais je vais me former ca à l'air d'être un outil puissant

J'y ai en tout et pour tout effectué 4 manipulations très simples
  1. une modification du typage de la colonne date (pas nécessaire ici, plus une habitude...)
  2. un regroupement avec calcul des min et max de l'heure d'arrivée par date et personne
  3. un regroupement du résultat obtenu avec calcul des moyennes des Min et Max
  4. un tri (pas obligatoire)
cela en utilisant les options du ruban et des boites de dialogue, donc très facilement
A noter que PowerQuery a considéré automatiquement les heures pourtant sous forme de texte comme des heures
 

Discussions similaires

Réponses
16
Affichages
1 K