Trouver valeur supérieure avec la fonction Find ?

Bonjour,

Pour un projet en VBA j'aimerai pouvoir identifier le numéro de la ligne à partir de laquelle la valeurs de la cellule dépasse la valeurs préalablement acquise à l'aide d'une inputbox.

J'ai vu qu'on pouvait se servir de la fonction Find pour trouver une valeur exacte mais je ne cherche que à trouver quelle ligne est supérieure à une valeur fixe et non trouver la valeur exacte. En effet c'est pour faire une sorte de "tri" dans le valeur.

Pour le moment j'ai essayé avec ce code :

Sub Zoom()

Dim feuille As Worksheet
Dim graphique As ChartObject
suppression_graphe_zoom

BL = InputBox("Zoom à partir de quelle valeur:", "Zoom")
Set CL = Range("F:F").Find(">BL", lookat:=xlWhole)
ActiveSheet.Range("M8") = CL

Bonjour

je ne cherche que à trouver quelle ligne est supérieure à une valeur fixe et non trouver la valeur exacte.

Si dans la colonne F vous avez 10 valeurs supérieures à BL, vous voulez quoi ?

Crdlt

Pour plus de précision,
J'ai cherché mais je n'ai troué aucune requête correspondante.

J'aimerais que mon programme attribu à une variable (ici CL) la première ligne pour laquelle la valeur de la cellule est supérieure ou égale à la valeur défini au préalable BL.

Pour te répondre Dan j'aimerais avoir la ligne correspondante à la première valeur supérieure à BL

Pas avec la fonction FIND car même si on trouve la ligne de la valeur BL, on ne sait pas si la valeur supérieur se trouve avant ou après la ligne de la valeur BL

Essayez comme ceci :

Dim cel As Range
Dim BL
BL = InputBox("Zoom à partir de quelle valeur:", "Zoom")
For Each cel In Range("F:F")
    If cel > BL Then ActiveSheet.Range("M8") = cel: Exit Sub
Next cel

Cordialement

Bonjour, Trop rapide Dan je viens seulement de finir mon code qui a peu de chose ressemble à ta boucle

Ayant un titre à ma colonne j'ai du décaler ma sélection sinon celà me renvoyait en permanance le titre de ma colonne mais depuis je n'ai plus rien qu'il se passe lorsque j'active la macro

Possible de voir une image de votre colonne F ou mieux un fichier (sans données confidentielles) ?

capture

Voilà ma colonne F et les données continues après j'ai un nombre important de donnée

Essayez comme ceci alors

Dim cel As Range
Dim BL
BL = InputBox("Zoom à partir de quelle valeur:", "Zoom")
For Each cel In Range("F2:F" & Range("F" & Rows.Count).End(xlUp).Row)
    If cel > BL Then ActiveSheet.Range("M8") = cel: Exit Sub
Next cel

Le mot Elongation étant considéré en position F1

Edit : si M8 est sur la même feuille que la colonne F ( ce que je suppose...) vous pouvez utiliser mettre le code comme ceci

Dim cel As Range
Dim BL
BL = InputBox("Zoom à partir de quelle valeur:", "Zoom")
With ActiveSheet
    For Each cel In .Range("F2:F" & .Range("F" & .Rows.Count).End(xlUp).Row)
        If cel > BL Then .Range("M8") = cel: Exit Sub
    Next cel
End With

"Ayant un titre à ma colonne j'ai du décaler ma sélection sinon celà me renvoyait en permanance le titre de ma colonne mais depuis je n'ai plus rien qu'il se passe lorsque j'active la macro"

D'où l'intérêt d'utiliser les tableaux structurés

"For Each cel In Range("F2:F" & Range("F" & Rows.Count).End(xlUp).Row) "

devient :

For Each cel In Range("nomTableau[nomColonne]) et il n'y a plus de problème de titre ni de hauteur de colonne

ça simplifie la vie parfois

Bonjour j'ai toujours le même problème rien ne s'affiche en M8 pourtant j'ai essayé avec plusieurs valeur présente dans le tableau .

Une chose m'intrigue. Vos valeurs dans la colonne F sont au format Texte ?
Car avoir 0,00000 .... cela vous renvoie 0 dans la cellule

Comme dit avant, voir votre fichier serait mieux

Autre chose : lorsque vous tapez la valeur dans l'inputbox, la séparation décimale est un point ou une virgule ?

Bonjour,

Voici un essai avec INDEX EQUIV si les données sont bien croissantes :

BL = InputBox("Zoom à partir de quelle valeur:", "Zoom")
set wf = worksheetfunction
With ActiveSheet
    .range("M8").value = wf.index(.range("F:F"), wf.match(BL, .range("F:F"), 1))
End With

Cela doit renvoyer la plus grande valeur inférieure à BL.

Je rejoins yal_excel sur les tableaux structurés, beaucoup plu ssimples à l'utilisation.

Cdlt,

il faut modifier : "cel > BL"

en : cel.Value > CDbl(BL)

L'entrée dans linputBox est une chaine de caractères, il faut la convertir en nombre

Oui je confirme que mes données sont bien au format numérique c'est juste que j'ai volontairement augmenté le nombre de décimal présente.

Et j'ai essayé en remplaçant "cel>BL" par cel.Value>CDbl (BL) et la macro ne marche plus justement cette instruction provoque une erreur 13 incompatibilité de type.

Oui je confirme que mes données sont bien au format numérique c'est juste que j'ai volontairement augmenté le nombre de décimal présente.

Alors essayez comme ceci :

Dim cel As Range
Dim valeur As String
Dim BL
BL = InputBox("Zoom à partir de quelle valeur:", "Zoom")
With ActiveSheet
    For Each cel In .Range("F2:F" & .Range("F" & .Rows.Count).End(xlUp).Row)
        valeur = Replace(cel, ",", ".")
        If valeur > BL Then .Range("M8") = cel: Exit Sub
    Next cel
End With

Attention cela suppose que vous avez bien le point dans l'inputbox lorsque vous entrez votre chiffre

Re bonjour,

Votre variable BL pour un chiffre à virgule :

Dim BL as single

Cette fois j'ai bien une valeur qui s'affiche en M8 mais il s'agit toujours de la première valeur non-nulle.

J'aimerai avoir le numéro de la ligne

Cette fois j'ai bien une valeur qui s'affiche en M8 mais il s'agit toujours de la première valeur non-nulle.

J'aimerai avoir le numéro de la ligne

Ah juste votre demande c'était le numéro de ligne

Alors dans le code juste avant le Exit Sub --> Cel devient --> CEL.ROW

Rechercher des sujets similaires à "trouver valeur superieure fonction find"