Userform de recherche avec boucle

Jeremy992

XLDnaute Occasionnel
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:
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
 

Pièces jointes

  • Jeremy1.xlsm
    23.6 KB · Affichages: 21
  • Jeremy1.xlsm
    23.6 KB · Affichages: 25
  • Jeremy1.xlsm
    23.6 KB · Affichages: 24
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Userform de recherche avec boucle

Bonjour.
Un essai avec une ComboBox au lieu de TextBox.
 

Pièces jointes

  • SujCBxJeremy992.xls
    146.5 KB · Affichages: 19
  • SujCBxJeremy992.xls
    146.5 KB · Affichages: 22
  • SujCBxJeremy992.xls
    146.5 KB · Affichages: 23

Jeremy992

XLDnaute Occasionnel
Re : Userform de recherche avec boucle

Bonjour Dranreb,

Tout d'abord... WAOUW !! C'est exactement ça que je voulais faire !! Un grand merci !

Mais, parce-qu'il y a toujours un "mais", si je rajoute des feuille supplémentaire cela ne fonctionne plus... :/
Quel paramètre je dois changer dans ce cas?

Encore un grand merci en tout cas !!
 

Jeremy992

XLDnaute Occasionnel
Re : Userform de recherche avec boucle

Je n'ai rien dis !! Cela à l'air de fonctionner (je me demande ce que j'ai bien pus encore faire comme bétises ^^)

Serait-il possible de faire commence la rechercher des critère a partir de la 5ème colonne?? Toujours sur le colonne F bien sur !
 

Dranreb

XLDnaute Barbatruc
Re : Userform de recherche avec boucle

Étonnant car le tableau TPlg est dimensionné au nombre de feuille du classeur contenant la macro. Ça devrait marcher. S'il est fait pour fonctionner sur un autre classeur remplacez ThisWorkbook par ActiveWorkbook

Alors je n'ai rien répondu. Commencer à la 5ième ligne de toutes les feuilles, vous voulez dire ? Remplacez .[F1] par .[F5]

On peut remplacer le CommandButton1 par une ScrollBar1
VB:
Private Sub ComboBox1_Change()
If ComboBox1.ListIndex = -1 Then Exit Sub
TLgn = Sujet(1)(ComboBox1.ListIndex)
ScrollBar1.Value = 1
ScrollBar1.Max = UBound(TLgn)
Application.Goto TCel(TLgn(ScrollBar1.Value))
End Sub

Private Sub ScrollBar1_Change()
Application.Goto TCel(TLgn(ScrollBar1.Value))
End Sub
 
Dernière édition:

Jeremy992

XLDnaute Occasionnel
Re : Userform de recherche avec boucle

Une dernière petite chose (désolé si jamais j'abuse un peu trop) comment faire pour mettre une MsgBox pour signaler que tout les occurrence sont passé, du type:

Code:
MsgBox "Il n'y a plus d'occurence." & Chr(10) & Chr(10) & "fin de la recheche."
 

Jeremy992

XLDnaute Occasionnel
Re : Userform de recherche avec boucle

Aie, j'ai sauté des messages de votre part.

Bon pour récapituler:
Remplacer F1 par F5 ne fonctionne pas "Variable objet ou variable de bloc With non définie"

J'ai bien compris comment remplacer le CommandButton1 par une ScrollBar1 ! TRES ASTUCIEUX !!

Ce que j'ai fais:
J'ai remplacer
Code:
 For Le = 1 To UBound(Te)
par
Code:
 For Le = 5 To UBound(Te)

Dans le code suivant
Code:
Private Sub UserForm_Initialize()
Dim F As Long, TPlg() As Range, Ls&, Te(), Le&
ReDim TPlg(1 To ActiveWorkbook.Worksheets.Count)
For F = 1 To UBound(TPlg)
   Set TPlg(F) = ColUti(ActiveWorkbook.Worksheets(F).[F1])
   Ls = Ls + TPlg(F).Rows.Count: Next F
ReDim TCel(1 To Ls), Ts(1 To Ls, 1 To 1)
Ls = 0
For F = 1 To UBound(TPlg)
   Te = TPlg(F).Value
   For Le = 5 To UBound(Te)
      Ls = Ls + 1: Ts(Ls, 1) = Te(Le, 1): Set TCel(Ls) = TPlg(F).Rows(Le): Next Le, F
Sujet = SujetCBx(Ts)
ComboBox1.List = Sujet(0)
End Sub

Cela à l'air de fonctionner.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Userform de recherche avec boucle

Non. Il faut toujours commencer à Le = 1. Par contre il faut pendre Set TPlg(F) = ColUti(ActiveWorkbook.Worksheets(F).[F5])
 

Pièces jointes

  • SujCBxJeremy992.xls
    135.5 KB · Affichages: 19
  • SujCBxJeremy992.xls
    135.5 KB · Affichages: 25
  • SujCBxJeremy992.xls
    135.5 KB · Affichages: 25

Discussions similaires

Réponses
2
Affichages
187
Réponses
12
Affichages
630
Réponses
12
Affichages
631

Statistiques des forums

Discussions
312 609
Messages
2 090 201
Membres
104 451
dernier inscrit
scp9990