7
votes

Comment rechercher une chaîne dans tous les feuilles d'un classeur Excel?

J'ai écrit une macro qui recherchera une chaîne dans toutes les feuilles d'un classeur Excel. Cette macro activera la première feuille ainsi que la cellule dans la feuille contenant la chaîne de recherche. Si non trouvé, il affichera un message.

Je veux étendre cette fonctionnalité pour couvrir toutes les feuilles contenant cette chaîne et non seulement la première. J'ai donc modifié la macro, mais cela ne fonctionne pas comme prévu. J'ai donné au code ci-dessous et a également commenté à l'endroit où il montre l'erreur. xxx


5 commentaires

Désolé, mais votre code a quelques incohérences et je ne peux pas comprendre exactement ce que vous essayez de faire. Veuillez décrire ce que votre programme est censé faire lorsqu'il y a plusieurs matchs dans une feuille. Et BTW, jetez un coup d'oeil à la méthode FindNext


Mon code procède aux éléments suivants: 1. Recherche première correspondance disponible dans tous les feuilles. Si trouvé, il active la feuille et la cellule dans laquelle la chaîne de recherche est présente. 2. Recherche pour le prochain match disponible. Si présent, montre ensuite une msgbox avec oui / non en disant qu'il y a plus de recherches disponibles. Voulez-vous continuer? Si oui, la prochaine correspondance disponible est indiquée comme mentionnée au point 1, puis recherchée la prochaine correspondance disponible et ainsi de suite jusqu'à ce que tous les matchs soient épuisés. 3. Si aucun match n'est disponible, le processus s'arrête. Aussi dont la méthode est ce FindNext, "cellules" ou "feuilles"?


Désolé, je manque quelque chose ... Quel est le problème avec le contrôle + f? (Rechercher?) La valeur par défaut ne recherche que la feuille active, mais dans les options de la boîte de dialogue Rechercher, vous pouvez modifier la recherche sur le classeur. Je suis sûr qu'il y aurait un moyen d'appeler programmatiquement la fonction intégrée et de vous épargner des travaux inutiles.


@RICHARD, j'avais créé la méthode à l'aide de cette fonctionnalité I.e. Enregistrement de la macro et en apportant les modifications nécessaires. Mais je souhaite étendre cette fonctionnalité pour une recherche continue qui crée un problème comme mentionné ci-dessus.


Dupliqué possible de Comment puis-je exécuter VBA dans plusieurs wksheets simultanément? < / a>


3 Réponses :


0
votes

Le problème est que cellules.Find code> retourne une plage. Lorsque vous l'utilisez dans votre fonction HASMOREVALUues code>, vous l'utilisez comme suit:

str = Cells.Find(What:=datatoFind, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
  :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
  False, SearchFormat:=False).text


2 commentaires

J'ai essayé votre façon d'utiliser .text au lieu de .value, mais cela donne le même problème. Quoi qu'il en soit, je viens de trouver une solution de contournement au problème et je vais poster la même chose ici maintenant. Merci de votre aide.


@samar Avez-vous essayé de définir une variable de la plage au résultat de la recherche, puis à l'aide de la plage.Cells (1,1) .text pour obtenir au texte?



7
votes

J'ai pu résoudre mon problème et avoir posté le code pour ceux qui pourraient en avoir besoin xxx


1 commentaires

Veuillez décrire ce que vous avez changé afin que les futurs lecteurs puissent en bénéficier. Les murs du code sont rarement utiles.



0
votes

Voici une solution beaucoup plus simple qui peut fonctionner correctement pour la plupart des personnes:

Ceci est une macro qui apportera rapidement la boîte de dialogue "Rechercher" avec les paramètres appropriés à rechercher dans toutes les feuilles de calcul dans un classeur. xxx


0 commentaires