Erreur : .findnext renvoi nothing si appelé depuis la feuille

Bonjour,

je ne suis pas un spécialiste VBA, j'essaie toujours de trouver les infos disponibles sur les forums.

d'habitude j'arrive toujours a m'en sortir (même si au final je ne fais pas des codes propres, ça marche quand même...)

mais là, je commence à criser sérieux....

d'abord le principe :

(j'ai simplifié au maxi le code pour se focaliser sur le problème)

dans une feuille excel, j'ai des nombres dans la première colonne

j'ai fait une fonction qui recherche toutes les cellules qui contiennent le nombre 11808005, et qui renvoi toutes les adresses des cellules trouvés.

PROBLEME :

quand je lance la fonction depuis une macro. : ça marche..!..

quand je lance la fonction depuis la feuille excel : ça plante, .findnext retourne "nothing"

J'ai pas besoin d'avoir un code parfait et tout joli, je voudrais juste que ça marche..

en vous remerciant par avance !!

si vous avez besoin de plus de précision, n'hésitez pas a demander.

(sur mon autre pc, je peux mettre le fichier en excel 2010, mais ça changera rien)

cordialement

Olivier

Bonsoir,

L'écriture du code ne me plait guère mais il devrait fonctionner...

L'erreur 91 s'explique si FindNext renvoie Nothing, car difficile d'obtenir l'adresse d'une plage qui n'existe pas, mais la recherche initiale ayant aboutie, aucune raison qu'il renvoie Nothing...

Quelles que soient les manipulations sur les données, cela ne débouche pas. On débouche, en faisant prélever par la Sub de démonstration les arguments à passer à la fonction, et en lui faisant affecter le résultat à une variable module, avec une autre fonction récupérant la valeur de la variable.

Ce qui me laisse penser, par l'analogie de réaction qu'on obtient avec DisplayFormat (interdit à l'utilisation en fonction de feuille de calcul) qu'on pourrait être dans un cas semblable : cela marche normalement en VBA mais pas en fonction dans la feuille.

Et si le concepteur s'est bornée à une démo d'utilisation au moyen d'une Sub et ne l'a pas proposée comme fonction personnalisée utilisable dans Excel, ce n'est peut-être pas un hasard.

Cependant, faire renvoyer l'adresse de la première occurrence trouvée fonctionne. Il resterait donc un test à faire : recoder la fonction pour éliminer FindNext, en poursuivant la recherche avec Find. Pas fait car je n'y ai pensé qu'après avoir éliminé le fichier.

Ceci étant, il n'est pas rare que Find pose divers problèmes et, pour ma part, je privilégierais volontiers une autre méthode pour avoir une fonction fiable.

Cordialement.

Bonjour advert, MFerrand

Une fonction tout simple et bien plus rapide à mon avis

Function FindAllv2(ByVal sText As String, ByRef oSht As String, ByRef sRange As String) As String
  Dim rSearch As Range, sortie As String
  ' Pour chaque cellule de la plage
  For Each rSearch In Sheets(oSht).Range(sRange)
    If rSearch.Value = sText Then
      sortie = sortie & "  " & rSearch.Address
    End If
  Next rSearch
  FindAllv2 = sortie
End Function

Dans la cellule, appelée la fonction

=FindAllv2(F8;F9;F10)

A+

Bonjour Bruno !

Là c'est parfait, simple, clair, fiable. Aucun risque d'erreur baroque dès lors qu'on passe les arguments adéquats.

Et je pense aussi que la méthode sera plus rapide.

Il m'est revenu après coup un souvenir de lecture que je crois pouvoir attribuer au bouquin de référence de Microsoft sur la programmation VBA des années 90 : un conseil y était donné de poursuivre, à la suite d'un Find, la recherche par une boucle... Et je me demandais si cela ne figurait pas dans un chapitre consacré aux fonctions. Je ne l'ai pas sous la main, mais je pourrais mettre la main dessus dans les semaines qui viennent. Je me note de vérifier ça.

Bonne journée à tous.

Bonjour,

du coup, même si le code d'origine était loin d'être propre, c'était bien un os...

en tout cas merci à Mferrand pour les explications et Bruno pour la solution (c'est tout simple et fiable) !

comme quoi la programmation c'est un métier.....

c'est la première fois que je viens poser une question sur un forum, je suis impressioné par la rapiditié et la qualité des réponses.

encore MERCI !!!

Cordialement

Olivier

Bonne continuation.

Rechercher des sujets similaires à "erreur findnext renvoi nothing appele feuille"