Bonsoir
J'ai une question concernant une boucle for each
J'aimerais savoir si il est possible de faire une recherche de la valeur dans une colonne en remontant et pas en descendant, donc exemple en admettant que j'ai rempli des données qui sont dans un ordre croissant dans la colonne B, que cette colonne comporte des cases vides, et que j'ai trouvé la valeur immédiatement supérieure dans cette colonne, je recherche maintenant la valeur immédiatement inférieure qui se trouve donc forcement au dessus de la borne supérieure, sauf qu'elle peut ne pas être immédiatement au dessus mais que des cases vides les séparent (c'est un tableau de données brutes que je recois donc j'aimerais ne pas avoir à le réarranger dans sa globalité), du coup je sais la plage de cellule dans mon tableau dans laquelle je dois chercher la valeur immédiatement inférieure, mais je dois "ignorer" les cases vides, bref je fais un for each en commencant du bas vers le haut qui va chercher la première valeur numérique au dessus de ma borne supérieure, et donc plus du haut vers le bas comme au début mais du bas vers le haut, le souci c'est que le code se passe bien mais me renvoie pas la bonne valeur, donc est ce que la recherche dans une plage de cellule de type Range(XX:XX) peut se faire du bas vers le haut ou forcement excel inverse l'ordre indiqué dans le range pour que ca se fasse toujours du haut vers le bas ? d'où le fait que j'ai pas le résultat escompté...(C'est extrêmement possible que j'ai mal codé, la fin parce que le début je me suis fait aidé ici et ca fonctionne)
For Each cel In Plg
If IsNumeric(cel.Value) And cel.Value > Pk Then
SA1 = cel.Value
Exit For
End If
If IsNumeric(cel.Value) Then valeur = cel.Value
Next cel
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String
Set PlageDeRecherche = Plg
Set SA1 = Plg.Cells.Find(what:=SA1, LookAt:=xlWhole)
AdresseTrouvee = SA1.Address
x = Range(SA1.Address).Row
y = Range(SA1.Address).Column
'v= Asc(ucase(lettre)) - 64
lettre = Chr(y + 64)
MsgBox lettre
MsgBox x
Set Plg2 = Worksheets("Axe En Plan").Range(lettre & x & ":E10")
For Each cel2 In Plg2
If cel2.Value <> "" And cel2.Value <> 0 Then
SA2 = cel2.Value
Exit For
End If
MsgBox " valeur borne inf " & SA2
Next cel2
End Sub