Trouver première valeur supérieure à
Bonjour,
J'essaye depuis ce matin de chercher le moyen de trouver dans un Range la première valeur supérieure à ma Valeur cherchée.
Pouvez-vous m'aider, car je ne trouve pas l'erreur dans mon code.
Voici le bout de code que j'ai écrit:
Dim e As Integer
'Dim plage_heure_fin As Range
Dim Valeur As Double, AdresseTrouvee As String
NewFeuil.Cells(1, 1).Value = Maximum_echelle
NewFeuil.Cells(1, 1).Select
Selection.NumberFormat = "General"
Selection.NumberFormat = ";;;" 'pour rendre invisble la valeur dans la cellule
For e = 6 To NombreLigne Step 6
'Set plage_heure_fin = NewFeuil.Range("B" & e & ":" & "H" & e)
NewFeuil.Range("B" & e & ":" & "H" & e).Select
Selection.NumberFormat = "General"
Valeur = Application.Match(NewFeuil.Cells(1, 1).Value, NewFeuil.Range("B" & e & ":" & "H" & e), -1) 'j'avais mis plage_heure_fin à la place NewFeuil.Range("B" & e & ":" & "H" & e) au début
If Valeur < NewFeuil.Cells(1, 1).Value Then
GoTo 1
Else
Rows(e).Select
'plage_heure_fin.Rows(e).Select
Range("B" & e & ":" & "H" & e).Select
Selection.NumberFormat = "h:mm;@"
Exit For
End If
1:
Range("B" & e & ":" & "H" & e).Select
Selection.NumberFormat = "h:mm;@"
Next e Merci,
Cordialement U_goffu
Bonjour,
Désolé
Pour rechercher une valeur dans une plage, il suffit de parcourir la plage au moyen d'une boucle : si la valeur remplit la condition on la note (variable)... si première veut dire la première trouvée, ça s'arrête là, si ça veut dire la plus proche, on poursuit et pour chaque valeur remplissant la condition, si elle la remplit mieux, elle se substitue à la précédente...
Cordialement.
Re,
Alors oui désolé, (je ne suis pas vraiment un pro de VBA et excel) puis je n'ai pas pensé à vous dire que j'ai mis seulement le bout de code qui me dérange.
Il s'agit de la première valeur trouvée supérieure à.
Je suis d'accord tout ceci est un peu brouillon néanmoins, peux tu m'explique dans ce cas là ce qui ne fonctionne pas?
Car :
Je fais une boucle
Dim e as Integer
Dim NombreLigne as Integer
For e = 6 To NombreLigne Step 6
....
Next eJe définis ma plage de recherche
Dim plage_heure_fin as Range
Set plage_heure_fin = NewFeuil.Range("B" & e & ":" & "H" & e)Je définis mon résultat souhaité
Dim Valeur as Double
Valeur = Application.Match(NewFeuil.Cells(1, 1).Value, NewFeuil.Range("B" & e & ":" & "H" & e), -1)Bonjour,
comme j'ai un peu de mal a comprendre votre code (incomplet) je vous fournie une code de recherche de valeur :
dim plage as range
dim r as range
plage = range(.....) ' votre plage dans la quelles s'effectue la recherche
for each r in plage
if r.value > votreValeur then
'faire ce que vous avez à faire avec cette cellule 'r'
end if
next r
Bonjour,
Pourquoi un pas de 6 ? (mais cela n'intervient pas dans le problème je suis d'accord.
De même pour NewFeuil : variable dont on n'a pas vu de déclaration...
Ceci étant tu utilises Match, soit une fonction de feuille de calcul (contrairement à la plupart son utilisation en VBA est souvent pertinente, VBA n'ayant pas de fonction équivalente...) mais tu l'utilises avec un argument impliquant que les valeurs soient classées en ordre décroissant... Peut-être y a-t-il un problème à cet égard ?
Bonjour,
Désolé pour le temps d'attente. Merci pour vos réponses et votre aide. J'ai utilisé ce que "minase" m'a envoyé et j'ai utilisé un Match comme MFerrand me l'a conseillé et j'ai réussi à obtenir ce que je souhaité.
Maintenant, pour répondre à MFerrand, j'utilise un pas de 6 car j'ai un tableau dans lequel se trouve des Heures de fin toutes les 6 lignes.
Merci pour votre aide, la prochaine fois que je poseterai quelque chose, je tâcherai d'être plus clair et de mettre l'intégralité de mon code, etc...