Userform de recherche boucle sur toutes les feuilles

Bonjour tout le monde,

Je viens vers vous car j'ai un petit problème avec mon code de recherche...

Voila le contexte: J'ai un fichier excel avec plusieurs feuilles, j'ai un userform qui me permet de faire une recherche d'un terme ce qui as pour conséquence de me sélectionner la cellule en question. Jusqu'ici tout vas bien, seulement il est possible qu'un terme soit présent dans la feuille1, la feuille2 et la feuille4 par exemple, et je n'arrive pas a faire une boucle de recherche... Cela me donne toujours et seulement le dernier trouvé.

Autres info: Ma recherche s'effectue toujours sur la colonne F quelque soit la feuille !

J'espère être assez compréhensible... Je n'en suis pas sur pour le coup haha ^^

Le code:

Private Sub CommandButton1_Click()
motclé = TextBox1.Value
For Each ws In Worksheets
        With ws.Columns("F:F")
            Set re = .Find(motclé, lookat:=xlWhole)
            If Not re Is Nothing Then
                fa = re.Address
                Do
                    ws.Activate
                    re.Select
                Set re = .FindNext(re)
                Loop Until re Is Nothing Or re.Address = fa
            End If
        End With
    Next
End Sub

Je vous joint également un fichier exemple

45jeremy1.xlsm (23.64 Ko)

Bonjour, votre boucle fonctionne correctement, elle sélectionne l’occurrence trouvée puis passe à l’occurrence suivante comme vous l'avez demandé avec .findnext...

bonjour,

essaie ceci, non testé

Private Sub CommandButton1_Click()
dim plage as range
motclé = TextBox1.Value
For Each ws In Worksheets
        With ws.Columns("F:F")
            Set re = .Find(motclé, lookat:=xlWhole)
            If Not re Is Nothing Then
                fa = re.Address
                Do
                    ws.Activate
                   if plage is nothing then set plage=re else set plage=union(plage,re)
                Set re = .FindNext(re)
                Loop Until re Is Nothing Or re.Address = fa
            End If
        End With
plage.select
    Next
End Sub

Bonjour Force Rouge,

A priori oui, seulement cela le fait d'un bloc, ce que j'aimerais c'est m’arrêter sur chaque occurrence et poursuivre en cliquant sur suivant.

Créer une sorte de point d'arrêt sur chaque occurrence avec de passer à l'autre.

Cela est-il possible?

Merci encore de votre réponse rapide.


Bonjour h2so4,

Cela ne fonctionne pas : "La méthode 'Union' de l'objet '_Global' a échoué" :/


En fait dans l'idéal voila ce que cela devrait faire:

Etape 1: Entrée du critère de recherche

Etape 2: Sélection de la cellule

Etape 3: Bouton Suivant (recherche la prochaine occurrence) etc...

Etape 4: Message pour l'utilisateur "Plus d'occurrence"

Je sais que ce n'est pas ma demande initial mais j'espère que cela pourra vous éclairez sur mon besoin.

Merci à vous de vous investir et de prendre du temps pour mon problème

Dans se cas après re.select vous collez

If MsgBox("Voulez vous continuer ?", vbYesNo) = vbNo Then Exit Sub

Force Rouge,

Super, c'est exactement ce que je cherche a faire. Par contre est-il obligatoire d'utiliser une MsgBox? Car je n'ai plus accès en écriture à ma feuille (MsgBox = modal?)

L’intérêt pour moi c'est de pouvoir rester en écriture, d'où mon Userform non modal !

Excuser moi, j'aurais du le dire avant :/


L'idéal serait de passer seulement par l'userform, et d'avoir une MsgBox seulement pour signaler la fin des occurrence, non?

Private Sub CommandButton1_Click()
motclé = TextBox1.Value
For Each ws In Worksheets
        With ws.Columns("F:F")
            Set re = .Find(motclé, lookat:=xlWhole)
            If Not re Is Nothing Then
                fa = re.Address
                Do
                    ws.Activate
                    re.Select
                    If MsgBox("Adresse trouvée :" & re.Address & Chr(10) & Chr(10) & "Voulez vous continuer ?", vbYesNo) = vbNo Then GoTo fin
                Set re = .FindNext(re)

                Loop Until re Is Nothing Or re.Address = fa

            End If
        End With
    Next
    MsgBox "Il n'y a plus d'occurence." & Chr(10) & Chr(10) & "fin de la recheche."
fin:    Unload Me
End Sub

Edit de dernière de minute : a voir si vous ne pouvez pas integrer un bouton dans votre userform qui aurait une valeur booléenne et qui validerait ou non la suite de la recherche

Et bien Force Rouge... Je ne sais pas quoi dire, réponse rapide, précise et répondant (presque ^^) à mon besoin !!

Tu es génial !! Bon il me reste le problème que je n'ai pas accès en écriture lorsque la MsgBox est ouverte :/

Ce que je voudrais pouvoir faire c'est trouver la 1er occurrence, écrire sur la feuille (n'importe où), trouver l'autre occurrence, écrire sur le feuille....

C'est peut-être beaucoup demandé de ma part :X

J'essaie de passer par un autre userform plutôt que par une msgbox, bon je n'y arrive pas mais ça pourrait être une solution?

Je ne sais pas, pour le moment je fais divers test, soyez patient merci...

Oups, excuser moi ! Prenez tout votre temps, c'est déjà génial ce que vous faites

Mes recherches n'ont rien donnée par contre...Si vous faites ctrl f vous avez l'équivalent en natif sans avoir de code vba à gerer

Oui je sais bien, mais voyez-vous, si je propose un fichier où il faut utiliser un raccourci, personne ne voudra prendre la peine de la faire, c'est bien pour ça que je passe par un userform ! Et puis je vais faire tout un menu en plus :/

En tout cas merci encore de votre aide ! Je vais essayer de voir comment je pourrais me débrouiller...

Je pense que l'idée d'un userform pour remplacer la Msgbox est peut-être une bonne idée, mais je sais pas comment ^^

Si ces messieurs/dames ne peuvent pas appuyer sur deux touches de clavier, pas besoin d'userform modal . Si pas de réponse d'autres personnes vous pouvez néanmoins faire comme la fonction recherche fait avec une listbox cliquable qui recuperera toutes les valeurs sur toutes les feuilles

Finalement problème résolue (par une aide extérieur ^^) !

Je vous la partage pour les curieux ! Aller faire un tour coté VBA cela vaut le coup d’œil je trouve !

PS: j'aurais jamais cru cela aussi complexe.... !!

Tant mieux si le problème est résolu...

Rechercher des sujets similaires à "userform recherche boucle toutes feuilles"