Bonjour,
C'est le code que je t'ai donné hier sur un autre forum !
Si des valeurs sont entrées entre les bornes, il suffit de rechercher la valeur égale ou immédiatement supérieure dans la plage :
Function IMC(Fe As Worksheet) As String
Dim Plage As Range
Dim Cel As Range
Dim Lig As Long
With Fe: Set Plage = .Range(.Cells(3, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
Set Cel = Plage.Find(Int(TextBox1.Text), , xlValues, xlWhole)
If Not Cel Is Nothing Then
Lig = Cel.Row
With Fe: Set Plage = .Range(.Cells(Lig, 2), .Cells(Lig, .Columns.Count).End(xlToLeft)): End With
End If
For Each Cel In Plage
'les valeurs étant de la gauche veres la droite de la plus petite à la plus grande, il suffit de rechercher
'la valeur immédiatement supérieure !
If Cel.Value >= Int(TextBox2.Text) Then
IMC = Fe.Cells(1, IIf(Fe.Cells(1, Cel.Column).Value = "", Cel.Column - 1, Cel.Column)).Value
Exit Function
End If
Next Cel
End Function
la fonction IIf() est utilisée car les cellules en ligne 1 sont fusionnées ce qui n'est pas conseillé pour un bon fonctionnement du classeur !
Tu peux entrer la même valeur dans les deux cellules et utiliser un format personalisé ";;;" (trois point-virgules) pour masquer la valeur.