Gérer des résultats multiples lors d'une recherche

Bonjour à tous et heureux de rejoindre ce forum de passionnés,

Voila mon problème, j'aimerai créer une macro de recherche.

Pour mieux comprendre et simplifier :

Imaginons une dizaine de feuille. Toutes, sauf la première, possèdent le nom d'un fruit dans la case A1, et je souhaite me rendre à la page qui contient "Raisin" en A1.

Je crée une macro qui fonctionne avec For / Next, je tape le nom du fruit que je recherche dans la case prévue à cet effet situé sur la première feuille, et la macro m’emmène bien à la page désirée. Tout fonctionne parfaitement.

Le problème arrive lorsque plusieurs pages contiennent le mot "Raisin". J'ignore concrètement comment la macro interprète ce résultat mais il semblerait qu'elle m’emmène directement à la dernière page qui possède le mot "Raisin".

J'aimerais donc avoir la possibilité de "manipuler" ces multiples résultats, lorsqu'ils interviennent, en proposant par exemple à l'utilisateur de se rendre à la page souhaitée parmi celles qui comprendrait le mot "Raisin". Je suppose pour ça qu'il faut passer par une boite de dialogue proposant les différentes pages en tant que boutons, mais j'ignore comment m'y prendre.

Je vous remercie d'avance pour votre aide.

Bonjour,

Une piste à adapter :

Sub ActiverFeuille()

    Dim Fe As Worksheet
    Dim Noms As String
    Dim Liste As String
    Dim Fruit As String
    Dim I As Integer
    Dim Choix

    'le nom du fruit recherché est en A1 de la feuille "Feuil1"
    Fruit = Worksheets("Feuil1").Range("A1").Value

    For Each Fe In Worksheets

        'évite la feuille qui contient le fruit recherché
        If Fe.Name <> "Feuil1" Then

            'concatène les noms des feuilles
            If Fe.Range("A1").Value = Fruit Then Noms = Noms & Fe.Name & ";"

        End If

    Next Fe

    'si pas trouvé, fin...
    If Noms = "" Then Exit Sub

    'suppression du point virgule de fin
    Noms = Left(Noms, Len(Noms) - 1)

    'si plus d'une feuille...
    If UBound(Split(Noms, ";")) > 1 Then

        'prépare pour le message
        For I = 0 To UBound(Split(Noms, ";"))
            Liste = Liste & Split(Noms, ";")(I) & " (Index n° " & I + 1 & ")" & vbCrLf
        Next I

        'demande quel index correspondant dans la liste pour l'activation de la feuille
        Choix = InputBox("Il y a " & UBound(Split(Noms, ";")) + 1 & " feuilles qui possèdent le fruit '" & Fruit & "' !" & _
                         vbCrLf & _
                         Liste & _
                         vbCrLf & _
                         "Veuillez indiquer son index !", "Choix de feuille")

        'si aucun choix (champ vide ou annuler) ou un choix ou un choix hors bornes, fin...
        If Choix = "" Then Exit Sub
        If CInt(Choix) < 1 Or CInt(Choix) > UBound(Split(Noms, ";")) + 1 Then Exit Sub

        'activation de la feuille voulue
        Worksheets(Split(Noms, ";")(Choix - 1)).Activate

    Else

        'si une seule feuille
        Worksheets(Split(Noms, ";")(0)).Activate

    End If

End Sub

Je viens de tester, tout à l'air de fonctionner. Il ne me reste plus qu'à essayer de l'adapter.

Merci énormément.

Rechercher des sujets similaires à "gerer resultats multiples lors recherche"