Fonction FIND VBA

Bonjour,

J'utilise la fonction "Find" en VBA afin de rechercher dans un tableau une valeur et d'en renvoyer la ligne dans une variable :

Set RechercheRow = Range("AB2196:AB1048576").Find(Recherche)
RechercheRow = RechercheRow.Row

Dans cette exemple je recherche le contenu de la variable "Recherche" en commençant par la cellule AB2196 jusqu'à trouver une concordance dans les cellules en dessous.

Maintenant j'aimerai faire l'inverse, c'est-à-dire rechercher du bas vers le haut :

Exemple AB3000, AB2999, AB2998, etc

Je n'ai malheureusement pas la possibilité de mettre le fichier en question dans le forum.

En vous remerciant pour votre aide et en restant à votre disposition pour toutes informations complémentaires.

Bonjour,

Si je ne dis pas de bêtises il faut utiliser l'argument SearchDirection:=xlPrevious pour remonter.

https://docs.microsoft.com/en-us/office/vba/api/excel.xlsearchdirection

Cdlt,

Bonsoir

A priori, je ne vois pas l'intérêt de chercher de bas en haut.

Je ferais plutôt ceci dans le code

Dim c As Range
Dim prem As String

    With Range("AB2196:AB1048576")
        Set c = .Find(recherche, LookIn:=xlValues)
        If Not c Is Nothing Then
            prem = c.Address
            Do
                MsgBox c.Row
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> prem
        End If
    End With

Cordialement

Tout d'abord merci de vos réponses si rapide.

@Ergotamine effectivement je suis tombé lors de mes recherches Google la dessus également, mais comment ajouter l'argument a la fonction find ?

Set RechercheRow = Range("AB2196:AB1048576").Find(Recherche, SearchDirection:=xlPrevious)
RechercheRow = RechercheRow.Row

@Dan je souhaite rechercher de bas en haut car il s'agit d'un fichier contenant l'historique des devis passés à plusieurs clients, le devis le plus haut est le plus ancien, le plus bas le plus récent. La finalité du VBA sera de renvoyer les lignes des 5 derniers devis pour un client X.

Je suis parti du bureau donc je testerai ton code une fois chez moi, mais si je le comprend bien tu recherche la variable en boucle jusqu'à avoir la dernière et tu renvoies la ligne de cette dernière cellule trouvée ?

Encore merci a vous.

si je le comprend bien tu recherche la variable en boucle jusqu'à avoir la dernière et tu renvoies la ligne de cette dernière cellule trouvée

Le code s'exécute et cherche toutes les valeurs de la variable Recherche dans la plage de données(AB...). l'instruction Msgbox C.ROW renverra la ligne trouvée.

Si on modifie la ligne suivante dans le code en ajoutant searchdirection:=xlprevious, la recherche se fera de bas en haut

Set c = .Find(recherche, LookIn:=xlValues, SearchDirection:=xlPrevious)

Cordialement

D'accord, je pense qu'avec ces informations je vais pouvoir finaliser mon fichier. Un grand merci a vous.

Ceci ma permis de m'inscrire sur ce site que j'ai souvent utilisé ! Plus aucune excuse maintenant pour échanger sur le forum 😉

Ok

Cordialement

Yes, j'attend juste d'être rentré chez moi pour tester cela tranquillement.

Rechercher des sujets similaires à "fonction find vba"