VB Excel moteur de recherche dans classeur
Résolu/Fermé
A voir également:
- Moteur de recherche excel
- Liste déroulante excel - Guide
- Si et excel - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
7 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 708
9 févr. 2009 à 21:30
9 févr. 2009 à 21:30
bonjour
Pour rechercher dans un classeur entier avec cette macro tu peux vérifier que le temps de comptage des résultats n'est pas prohibitif.
Pour tester, tu peux remplacer : "rech As String" par espace et "rech" par un mot à chercher
Ensuite à toi de rajouter le traitement que tu veux à chaque élément trouvé et la macro peut être appelée dans ton formulaire en mettant les variables en "Public".
Pour rechercher dans un classeur entier avec cette macro tu peux vérifier que le temps de comptage des résultats n'est pas prohibitif.
Public Sub chercher(rech As String) 'recherche d'une chaine Dim sel As Object ' cellule trouvée Dim c As Integer ' colonne Dim f As Integer ' feuille Dim l As Long ' ligne Dim n As Integer ' éléments trouvés n = 0 For f = 1 To Sheets.Count ' boucle feuilles With Sheets(f) l = 1: c = 1 Do ' recherche Set sel = .Cells.Find(What:=rech, after:=.Cells(l, c), _ LookIn:=xlValues, LookAt:=xlPart, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, MatchCase:=False) If sel Is Nothing Then Exit Do If sel.Column <= c And sel.Row <= l Then Exit Do c = sel.Column l = sel.Row n = n + 1 ' élément trouvé : traitement Loop End With Next f MsgBox n & " éléments trouvés" End Sub
Pour tester, tu peux remplacer : "rech As String" par espace et "rech" par un mot à chercher
Ensuite à toi de rajouter le traitement que tu veux à chaque élément trouvé et la macro peut être appelée dans ton formulaire en mettant les variables en "Public".
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 708
8 févr. 2009 à 23:24
8 févr. 2009 à 23:24
bonjour
Ce que tu veux faire est la procédure effectuée par ctrl + f et rechercher tout et elle est relativement rapide.
Au lieu de sélectionner toutes les occurrences (activate) au fur et à mesure de la recherche, il vaut mieux les enregistrer comme fait la fonction "recherche" pour les lister ensuite mais tout dépend de l'utilisation que tu veux faire de ta macro
Ce que tu veux faire est la procédure effectuée par ctrl + f et rechercher tout et elle est relativement rapide.
Au lieu de sélectionner toutes les occurrences (activate) au fur et à mesure de la recherche, il vaut mieux les enregistrer comme fait la fonction "recherche" pour les lister ensuite mais tout dépend de l'utilisation que tu veux faire de ta macro
Bonjour gbinforme,
merci pour ta réponse.
En fait, voici précisément ce que je souhaite faire:
- chercher une valeur saisie dans une zone de texte dans le classeur
- ouvrir l'onglet où se trouve cette valeur.
- si c'est le bon feuillet (c'est le user qui dira si c'est ok ou non), ouvrir le userform TEST
- si c'est le mauvais feuillet (c'est le user qui dira si c'est ok ou non), continuer la recherche, ouvrir le feuillet...
- après avec mon userform, je vais faire pleins de choses.
Qu'en penses-tu?
merci pour ta réponse.
En fait, voici précisément ce que je souhaite faire:
- chercher une valeur saisie dans une zone de texte dans le classeur
- ouvrir l'onglet où se trouve cette valeur.
- si c'est le bon feuillet (c'est le user qui dira si c'est ok ou non), ouvrir le userform TEST
- si c'est le mauvais feuillet (c'est le user qui dira si c'est ok ou non), continuer la recherche, ouvrir le feuillet...
- après avec mon userform, je vais faire pleins de choses.
Qu'en penses-tu?
Ludivine50
Messages postés
114
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
1 février 2016
7
10 févr. 2009 à 12:13
10 févr. 2009 à 12:13
Gbinforme, je ne peux pas passer en résolu car entre-temps je suis devenue membre.
Peux-tu le faire à ma place?
Merci
Peux-tu le faire à ma place?
Merci
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 708
9 févr. 2009 à 17:17
9 févr. 2009 à 17:17
bonjour
Qu'en penses-tu?
Je n'ai pas ton classeur devant les yeux mais ce que tu veux réaliser le parait tout à fait possible.
Tu pourrais même faire tes recherches avec ton userform sans avoir à ouvrir tes onglets et en affichant le résultat dans le formulaire.
Qu'en penses-tu?
Je n'ai pas ton classeur devant les yeux mais ce que tu veux réaliser le parait tout à fait possible.
Tu pourrais même faire tes recherches avec ton userform sans avoir à ouvrir tes onglets et en affichant le résultat dans le formulaire.
Merci pour ta réponse,
Effectivement, c'est une idée intéressante. Cela évite de se ballader dans les onglets.
Mais ma difficulté, c'est que je suis bloquée dès la première étape: rechercher dans le classeur entier.
Je n'arrive qu'à rechercher dans une feuille. Ou alors, il faut que je fasse une boucle pour chercher dans toutes les feuilles une par une, mais ça va mouliner. Pourtant dans Excel, il est possible avec ctrl F de faire une recherche dans l'ensemble du classeur, donc ça doit être possible de ne pas passer par une boucle sur les feuillets non? Mais le code fournit par l'enregistrement automatique de macro ne m'aide pas.
J'ai cherché dans les forums, certains proposent des codes de plusieurs pages alors que la solution est relativement simple je pense, d'autres n'ont finalement pas aboutis...
Effectivement, c'est une idée intéressante. Cela évite de se ballader dans les onglets.
Mais ma difficulté, c'est que je suis bloquée dès la première étape: rechercher dans le classeur entier.
Je n'arrive qu'à rechercher dans une feuille. Ou alors, il faut que je fasse une boucle pour chercher dans toutes les feuilles une par une, mais ça va mouliner. Pourtant dans Excel, il est possible avec ctrl F de faire une recherche dans l'ensemble du classeur, donc ça doit être possible de ne pas passer par une boucle sur les feuillets non? Mais le code fournit par l'enregistrement automatique de macro ne m'aide pas.
J'ai cherché dans les forums, certains proposent des codes de plusieurs pages alors que la solution est relativement simple je pense, d'autres n'ont finalement pas aboutis...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ludivine50
Messages postés
114
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
1 février 2016
7
10 févr. 2009 à 12:05
10 févr. 2009 à 12:05
Bonjour gbinforme!
Je viens de tester et c'est une excellente base de travail pour ce que je souhaite réaliser! Et en plus, ton code est très compréhensible! Je suis déjà en train de l'adapter à mon traitement.
Je te remercies, tu m'as fournie la clé pour travailler sur ce traitement.
Merci encore, et je te souhaite une bonne journée!
Je viens de tester et c'est une excellente base de travail pour ce que je souhaite réaliser! Et en plus, ton code est très compréhensible! Je suis déjà en train de l'adapter à mon traitement.
Je te remercies, tu m'as fournie la clé pour travailler sur ce traitement.
Merci encore, et je te souhaite une bonne journée!
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 708
10 févr. 2009 à 15:56
10 févr. 2009 à 15:56
bonjour
Content de voir que cela te permet de continuer : il ne faut souvent pas chercher trop compliqué car le plus simple est en général le plus efficace.
Content de voir que cela te permet de continuer : il ne faut souvent pas chercher trop compliqué car le plus simple est en général le plus efficace.
Bonjour,
gbinforme, le code que tu donne, il faut l'assigner à un bouton ou à la zone de texte dans laquelle on entre les mots à rechercher.
en tous cas merci pour les infos.
gbinforme, le code que tu donne, il faut l'assigner à un bouton ou à la zone de texte dans laquelle on entre les mots à rechercher.
en tous cas merci pour les infos.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 708
22 oct. 2010 à 19:05
22 oct. 2010 à 19:05
Bonjour,
C'est un module à appeler dans une macro de traitement comme elle a été conçue.
Maintenant c'était surtout un exemple pour voir comme rechercher dans un classeur : tout dépend de ce que tu veux faire ?
Si tu précises un peu, l'on pourra adapter.
C'est un module à appeler dans une macro de traitement comme elle a été conçue.
Maintenant c'était surtout un exemple pour voir comme rechercher dans un classeur : tout dépend de ce que tu veux faire ?
Si tu précises un peu, l'on pourra adapter.
7 sept. 2012 à 21:13
Le lien est: http://excelminiapps.blogspot.com.ar/