Optimisation moteur de recherche et liste

Bonjour !

•J'ai actuellement le moteur de recherche suivant:

Sub recherche()
    motclé = InputBox("Numéro de plan à chercher :", "Moteur de recherche", "Exemple: 221500")
    For Each ws In Worksheets
        With ws.Columns("K:K")
            Set re = .Find(motclé, lookat:=xlWhole)
            If Not re Is Nothing Then
                fa = re.Address
                Do
                    ws.Activate
                    re.Select
                    Exit Sub
                   Set re = .FindNext(re)
                Loop Until re Is Nothing Or re.Address = fa
            End If
        End With
    Next
End Sub

Ce moteur parcours toutes les valeurs de la colonne K et nous emmène à la feuille contenant cette valeur. Sauf que celui-ci s’arrête à la première valeur. J'aimerais que si jamais il y a deux fois la même valeur, on ait le choix d'aller à la feuille contenant l'autre valeur, via une MessageBox par exemple

•J'ai aussi une liste

With Sheets(ActiveSheet.Name).Cells(j, 23).Validation 'Entrez le numero de la feuille ainsi que la cellule correspondante
     .Delete
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(tabl, ",")
    End With

et je n'arrive pas à trouver le bout de code qui me manque pour qu'il m'affiche la liste dans l'ordre décroissant

j'ai lu sur quelques fourums qu'il y avait un ".Reverse" mais cela ne fonctionne pas

Merci

Bonjour,

Je me suis rendu compte qu'en supprimant une ligne, le moteur nous emmène désormais à la dernière feuille contenant le mot recherché.

Est-il possible d'afficher un message "Aller à la feuille suivante ?" si jamais le mot recherché existe plusieurs fois dans le classeur ?

    Sub recherche()

        motclé = InputBox("Numéro de plan à chercher :", "Moteur de recherche", "Exemple: 221500")
        For Each ws In Worksheets
            With ws.Columns("K:K")
                Set re = .Find(motclé, lookat:=xlWhole)
                If Not re Is Nothing Then
                    fa = re.Address
                    Do
                        ws.Activate
                        re.Select
                       Set re = .FindNext(re)
                       If MsgBox("Un autre résultat à été trouvé, aller à celui ci ?", vbOKCancel, "Résultat de la recherche") = vbCancel Then Exit Sub
                    Loop Until re Is Nothing Or re.Address = fa
                End If
            End With
        Next
    End Sub

J'ai donc une fenêtre qui s'ouvre à chaque recherche mais je voudrais que celle-ci n'apparaissent uniquement si il y a des "doubles" et non pas à chaque fois.

Merci

J'ai trouver la solution pour le moteur de recherche

Sub recherche()

        Dim Premier_passage As Boolean
        Premier_passage = True

        motclé = InputBox("Numéro de plan à chercher :", "Moteur de recherche", "Exemple: 221500")
        For Each ws In Worksheets
            With ws.Columns("K:K")
                Set re = .Find(motclé, lookat:=xlWhole)
                If Not re Is Nothing Then
                    fa = re.Address
                    Do
                        If Premier_passage = False Then
                                 If MsgBox("Un autre résultat à été trouvé, aller à celui ci ?", vbOKCancel, "Résultat de la recherche") = vbCancel Then Exit Sub
                        End If
                        Premier_passage = False
                        ws.Activate
                        re.Select
                       Set re = .FindNext(re)
                    Loop Until re Is Nothing Or re.Address = fa
                End If
            End With
        Next
    End Sub

Par contre concernant l'ordre inverse de la liste si quelqu'un a des infos je suis preneur !

Rechercher des sujets similaires à "optimisation moteur recherche liste"