Excel sélection n cellules

Bonjour,
je cherche à faire depuis 2 jours une fonction qui me renvoie la valeur maximale d'une plage de cellules sélectionnées automatiquement à partir d'un point de départ.
je m'explique pour paraitre plus clair

 A      B   
 4      7
        4
        3
       13
        7
        6
        5
        9


En A1, je sais que je dois faire la recherche sur A1 cellules dans ma liste
En B, ma liste de valeur
je souhaite que la fonction recherche le max parmi les 4 données dans ma liste à partir de la cellule de départ
ex: fonction(B4,A1) -> à partir de B4 pour 4 données
sélectionner 4 valeurs pour la plage -> B4, B5, B6, B7
chercher le max dans cette plage

ce que je n'arrive pas à faire c'est définir la plage de données à étudier.

merci pour toute réponse

3 réponses

  1. Contributeur
    Bonsoir

    essaies:
    Function chercher_max(depart As Range, nbre As Byte) As Double
    Dim fin As Long
        fin = depart.Row + nbre - 1
        chercher_max = Application.Large(Range(depart.Address & ":$B$" & fin), 1)
    End Function
    


    tu cliques dans la colonne B pour avoir la celllule de départ puis dans A1
    0
    1. Tout d'abord, merci de la rapidité de la réponse.

      J'ai testé et ça marche nickel pour la colonne B et en plus c'est super court

      Par contre pour réutiliser cette fonction dans une autre colonne (disons C) la plage de recherche comprend alors les colonnes B et C (à cause du $B$). Comment faire pour rester dans la colonne de départ?

      En regardant ton modèle, je vois bien une fonction column qui me renvoie le numéro de la colonne de départ mais comment l'appliquer dans la fonction range?
      0
      1. j'ai rajouté ça, dites moi ce que vous en pensez

        Function chercher_max(depart As Range, nbre As Byte) As Double
        Dim fin, colonne As Long
        fin = depart.Row + nbre - 1
        colonne = depart.Column
        'MsgBox "fin =" & fin
        'MsgBox "colonne" & colonne
        'MsgBox "cellule " & Cells(fin, colonne).Address

        chercher_max = Application.Large(Range(depart.Address, Cells(fin, colonne)), 1)

        End Function
        0