Private Sub CommandButton1_Click() Dim maplage As Range, mavaleur As Double Set maplage Range("A1:A10") '>> ici la plage de ton choix mavaleur = 4 '===>> ici la valeur de ton choix ou référence à celle d'une cellule MsgBox nbapproche(maplage, mavaleur) End Sub Private Function nbapproche(plage As Range, nob As Double) As Double Dim tabl() As Variant ReDim retenu(1 To 1) As Double tabl = plage nb = 0 For i = 1 To UBound(tabl) If tabl(i, 1) >= nob Then nb = nb + 1 ReDim Preserve retenu(1 To nb) retenu(nb) = tabl(i, 1) End If Next nbapproche = Application.Min(retenu) End Function
Sub test() Set d = Range("D7:D13") Set maDonnee = Range("G7") For Each c In d If c.Value >= maDonneeThen [maDonnee].Offset(0, 1).Value = c.Offset(0, 1).Value Exit Sub End If Next End Sub
Sub recherche() Dim maplage As Range, mavaleur As Double Set maplage Range("A1:A10") '>> ici la plage de ton choix mavaleur = Range("D1").Value '===>> ici la valeur de ton choix ou référence à celle d'une cellule Dim MaCellule As Range n = nbapproche(maplage, mavaleur) 'je stock la valeur On Error Resume Next Set MaCellule = maplage.Find(n, , xlValues).Select ' je la cherche en la selectionnant Range("E1").Value = Selection.Offset(0, 1).Value ' je prends la valeur à coté End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question...il y a surement mieux...
...Cependant je m'atèle à étudier ta fonction...
Private Function nbapproche(plage As Range, nob As Double) As Double Dim tabl() As Variant '==>> 1) je vais travailler sur un 1er tableau dynamique (voir plus bas) 'je vais également alimenter un 2ème tableau/Array par les 'seules valeurs au moins égales à celle de ma recherche ReDim retenu(1 To 1) As Double '==>> voir 1) : les éléments de mon tableau dynamique 'seront les valeurs de ma plage. 'parcourir un tel tableau est beaucoup plus rapide 'que de parcourir les cellules de la feuille tabl = plage nb = 0 For i = 1 To UBound(tabl) 'je parcours l'ensemble des éléments du tableau ainsi constitué If tabl(i, 1) >= nob Then 'si donc répond au critère nb = nb + 1 ReDim Preserve retenu(1 To nb) 'j'augmente la taille de mon array 'et ajoute à sa fin la valeur répondant au critère retenu(nb) = tabl(i, 1) ' et End If Next 'j'extrait maintenant la plus petite valeur des valeurs retenues nbapproche = Application.Min(retenu) End Function