Recherche incorrecte

  • Initiateur de la discussion Initiateur de la discussion Animatrix
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

Animatrix

Guest
Bonjour à tous !

J'utilise le code suivant pour une recherche :

Code:
Private Function Recherche(i As Integer, val As Integer) As Integer

With ActiveWorkbook.Worksheets("Final").Range("N" & i & ":N3000")
    Set c = .Find(val)
    
    If c Is Nothing Then        'Renvoi du 0 si rien n'est trouvé
        Recherche = 0
        Else
        Recherche = c.Row
    End If
End With

End Function

Mais le résultat n'est jamais le bon.
Je me demande donc si il ne s'agit pas d'une erreur dans mon code.

Je l'appelle via un
Code:
Recherche(5,1)
 
Re : Recherche incorrecte

Bonjour à tous !

J'utilise le code suivant pour une recherche :

Code:
Private Function Recherche(i As Integer, val As Integer) As Integer

With ActiveWorkbook.Worksheets("Final").Range("N" & i & ":N3000")
    Set c = .Find(val)
    
    If c Is Nothing Then        'Renvoi du 0 si rien n'est trouvé
        Recherche = 0
        Else
        Recherche = c.Row
    End If
End With

End Function

Mais le résultat n'est jamais le bon.
Je me demande donc si il ne s'agit pas d'une erreur dans mon code.

Je l'appelle via un
Code:
Recherche(5,1)


Bonsoir à tous!!

essaie avec ça:

Set c = .Find(val,,xlvalues,xlwhole)

xlwhole est très important si tu recherche une valeur numérique car sinon il trouvera 1 dans 10 ou 100 etc...

A+
 
Re : Recherche incorrecte

OK merci.
Le prblème venait bien de là 🙂

Par contre, j'aimerais pouvoir appeler cette fonction pour qu'elle trouve le résultat suivant (exemple : le deuxième 1).

Est-il possible de définir un range en supprimant certains cellules ?

Savez-vous comment faire ?
 
Dernière modification par un modérateur:
Re : Recherche incorrecte

Bonsoir,

Tu peux faire une boucle avec findnext pour trouver toutes les valeur 1 par ex:

With ActiveWorkbook.Worksheets("Final").Range("N" & i & ":N3000")
Set c = .Find(val,,xlvalues,xlwhole)

If not c Is Nothing Then
adrdeb=c.address
do
--ton code ici---
set c=.findnext(c)
loop while not c is nothing and c.address<>adrdeb
End If
End With

Si j'ai bien compris, c'est là que tu veux en venir?

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
284
Réponses
41
Affichages
1 K
Retour