Excel sélection n cellules

xerxcor Messages postés 3 Statut Membre -  
 xerxcor -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. xerxcor
     
    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
  3. xerxcor
     
    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