Excel sélection n cellules

Fermé
xerxcor Messages postés 3 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 28 juin 2009 - 28 juin 2009 à 18:14
 xerxcor - 28 juin 2009 à 21:57
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

michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 3 292
28 juin 2009 à 19:14
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
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
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