Fonction FindNext dans une formule

Bonjour,

j'ai des prix sur plusieurs années pour différents objets. Et ce que je dois faire est une fonction me permettant d'en déduire un prix final suivant plusieurs règles:

  • Si le prix est sur les 5 premiers années on ne le cape pas (on le garde identique)
  • Si le prix est au-delà des 5 premières années 2 règles spécifiques :
    • si le prix est inférieur à celui de l'année 5 on le garde
    • sinon on prend le prix de l'année 5

J'ai dans un premier temps essayé avec les fonctions Excel de bases sans réussite, je n'arrive pas à faire une recherche sur 2 critères pour retrouver le prix de l'année 5.

Je me suis donc tourné vers le VBA, afin de ne pas faire une itération sur chaque ligne (mon tableau peut en avoir énormément) j'ai décidé d'utiliser la fonction 'Find / FindNext", malheureusement je ne comprend pas pourquoi dans une fonction il passe à Nothing à la première itération.

Je vous joint un fichier exemple pour comprendre.

15demonstration.xlsb (37.56 Ko)

Bonjour,

Essayer ce code

Sub FindValue()

    Dim cell As Range, cel11 As Range

    With Worksheets("Feuil2").Range("B1:B500")
        Set cell = .Find(5, LookIn:=xlValues)
        If Not cell Is Nothing Then
            Set cel11 = cell
            Do
                cell.Value = 0
                Set cell = .FindNext(cell)
            Loop Until cell.Address = cel11.Address
        End If
    End With

End Sub

Bonjour,

Effectivement la fonction .FindNext ne donne pas le bon résultat.

Pour corriger ton problème remplace la ligne contenant .FindNext par

Set rng = .Find(What:=rng.Value, After:=rng)

Oui merci beaucoup je venais de trouver la même solution de remplacer le findNext par un find( After:=).

Ca marche du coup parfaitement

Merci quand même !

Rechercher des sujets similaires à "fonction findnext formule"