Trouver les 5 plus grandes valeurs en prenant compte du temps

35essai.xlsx (100.88 Ko)

bonjour, j’ai un problème , je voudrais trouver les 5 plus grandes valeurs avec la condition d’avoir une différence de plus ou moins 6 heures entre eux, dans mon fichier j’ai une valeur tous les dix minutes pendant un mois

Bonjour et bienvenue sur le forum

Un essai à tester, si j'ai bien compris : pas sûr car je ne retrouve ton résultat attendu...

Option Explicit

Dim tablo, tabloP, plage As Range, cell As Range
Dim ln&, n

Sub Résultat()

    tablo = Range("A1:C" & Range("A" & Rows.Count).End(xlUp).Row)

    Range("A1:C" & Range("A" & Rows.Count).End(xlUp).Row).Sort _
            key1:=Range("A2"), order1:=xlAscending, _
            key2:=Range("B2"), order2:=xlAscending, Header:=xlNo
    Application.ScreenUpdating = False
    For n = 1 To 5
        Set plage = Range("C2:C" & UBound(tablo, 1))
        Set cell = plage.Find(Application.Max(plage))
        ln = cell.Row
        Range("A" & ln & ":C" & ln).Copy
        Range("H" & 4 + n).PasteSpecial xlPasteValues
        Range(Cells(ln - 36, 1), Cells(ln + 36, 3)).Delete shift:=xlUp
    Next n
    Range("A1").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
    Range("H3").Select
End Sub

Bye !

merci infiniment gmb , en effet le résultat que j'avais mis étais incorrect, votre solution fonctionne très bien

Si c’est possible j'aimerai trouver les plus grandes valeurs entre 3 intervalles de temps de 07:10 à 18:00 , de 18:10 à 23:00 et de 23:10 à 07:00 comme indiqué dans ce classeur, et merci encore pour votre réponse

10essai-2.xlsm (205.88 Ko)

Bonjour

Nouvelle version

15essai-v2.xlsm (120.32 Ko)
Option Explicit

Dim tablo, tabloP, plage As Range, cell As Range
Dim ln&, n
Dim max1&, max2&, max3&, lgn1&, lgn2&, lgn3&

Sub Résultat()

    tablo = Range("A1:C" & Range("A" & Rows.Count).End(xlUp).Row)

    Range("A1:C" & Range("A" & Rows.Count).End(xlUp).Row).Sort _
            key1:=Range("A2"), order1:=xlAscending, _
            key2:=Range("B2"), order2:=xlAscending, Header:=xlYes
    Application.ScreenUpdating = False
    For n = 1 To 5
        Set plage = Range("C2:C" & UBound(tablo, 1))
        Set cell = plage.Find(Application.Max(plage))
        ln = cell.Row
        Range("A" & ln & ":C" & ln).Copy
        Range("H" & 4 + n).PasteSpecial xlPasteValues
        Range(Cells(ln - 36, 1), Cells(ln + 36, 3)).Delete shift:=xlUp
    Next n

    max1 = 0: max2 = 0: max3 = 0: lgn1 = 0: lgn2 = 0: lgn3 = 0
    For ln = 2 To UBound(tablo, 1)
        If CDate(tablo(ln, 2)) >= CDate("07:10") And CDate(tablo(ln, 2)) < CDate("18:00") Then
            If tablo(ln, 3) > max1 Then
                max1 = tablo(ln, 3)
                lgn1 = ln
            End If
        ElseIf CDate(tablo(ln, 2)) >= CDate("018:10") And CDate(tablo(ln, 2)) < CDate("23:00") Then
                max2 = tablo(ln, 3)
                lgn2 = ln

        ElseIf CDate(tablo(ln, 2)) <= CDate("07:10") Or CDate(tablo(ln, 2)) > CDate("18:00") Then
                max3 = tablo(ln, 3)
                lgn3 = ln
        End If
    Next ln

    Range("A1").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
    Range("H14:J16").ClearContents
    Range("A" & lgn1 & ":C" & lgn1).Copy Range("H14")
    Range("A" & lgn2 & ":C" & lgn2).Copy Range("H15")
    Range("A" & lgn3 & ":C" & lgn3).Copy Range("H16")
    Range("H14:J16").Borders.Weight = xlMedium

    Range("H3").Select
End Sub

Bye !

Bonjour, merci votre réponse, pour la 2ème partie les tarifs 2 et 3 ne sont pas les max entre leurs intervalles de temps, j'ai mis dans le classeur le résultat souhaité, et merci d'avance.

11essai-v2-1.xlsm (114.93 Ko)

Bonjour

Nouvelle version.

17essai-v3.xlsm (119.72 Ko)

Bye !

merci infiniment tous marche à merveille

Rechercher des sujets similaires à "trouver grandes valeurs prenant compte temps"