Tion exercice bornes maximum

Bonjour,

D'après le fichier ci-joint.

Je cherche a écrire dans la feuille 2 (vierge à la base sauf les 2 premières lignes), l'ensemble des valeurs surlignées en grise (pour meilleure compréhension) de la feuille 1 telles que:

  • On recherche la ligne où l'on a le nombre max en colonne B (surlignage jaune pour info)
  • On soustrait la valeur 10 décimale de ce max chronologiquement AVANT ET APRES cette heure du max (par rapport à l'heure affichée en colonne A) ce qui nous donne l'ensemble des valeurs surlignées en grises.
=> Par exemple le maximum est de 60.359 dans cet exemple (surligné en jaune), on va donc chercher les valeurs AU MOINS égale à 60.359-10 de part et d'autre de ce max et on l'on trouve l'ensemble de données surlignées en grises, que l'on va copier en feuille 2.

Merci pour votre aide!

12classeur1.zip (170.57 Ko)

Bonjour OpusTlse,

Une solution par macro :

Option Explicit

Sub MaxAvantApres()
    Dim maxi As Double, borne#
    Dim derlign As Long, i&, ligneInf&, ligneSup&
    Dim tablo As Variant, tablo2 As Variant

    Application.ScreenUpdating = False
    'on détermine la dernière ligne du tableau de la feuille 1
    derlign = Sheets(1).Range("A65000").End(xlUp).Row
    'on mets les valeurs de la colonne B dans une variable tableau
    'la manipulation de variable tableau va plus vite
    tablo = Sheets(1).Range("b3:b" & derlign).Value
    'on cherche le max
    maxi = Application.WorksheetFunction.Max(tablo)
    'on détermine la borne de recherche des valeurs
    borne = maxi - 10
    i = 1
    'Cette première boucle permet de chercher la borne inférieure du tableau
    Do While tablo(i, 1) <= borne And i < UBound(tablo)
        i = i + 1
    Loop
    ligneInf = i + 2
    'Cette deuxième boucle permet de chercher la borne supérieure du tableau
    Do While tablo(i, 1) >= borne And i < UBound(tablo)
        i = i + 1
    Loop
    ligneSup = i + 1

    tablo2 = Sheets(1).Range("A" & ligneInf & ":M" & ligneSup).Value
    'on efface le contenu de la feuille active (à partir de A3)
    ActiveSheet.Range("A3:M" & [A65000].End(xlUp).Row + 1).ClearContents
    [A3].Resize(UBound(tablo2, 1), UBound(tablo2, 2)).Value = tablo2
End Sub

Cliquer sur le bouton Lancer du fichier joint.

15copieclasseur1.zip (180.39 Ko)
Rechercher des sujets similaires à "tion exercice bornes maximum"