Résolu [Résolu] Probleme sur une macro de recherche

Sepr145

Nouveau membre
Bonjour,

je cherche a créer une macro de recherche qui remplacerai la fonction ctrl+F. Après quelques recherches, j'ai pu écrire cette dernière:

Code:
Sub recherche()

    Application.ScreenUpdating = False

    Dim recherche As String
    Dim cellules As Range
    Dim plage As Range


    Set plage = Range("J4:R6")


    recherche = InputBox("Quel type de risque cherchez-vous?" & Chr(10) & Chr(10) & "(recherche par mot-clé ou élément-clé )", "Aide à la recherche")


    If recherche = "" Then
        MsgBox ("recherche annulée")
        Exit Sub

    Else

        For Each cellules In plage
                 cellules.EntireRow.Hidden = True
                If InStr(cellules.Text, recherche) Then
                   cellules.EntireRow.Hidden = False
                End If

        Next

        Application.ScreenUpdating = True

    End If

End Sub

Malgré tout, un probleme subsiste, la macro ne tient absolument pas compte du texte entré dans l'inputbox. Pour moi le probléme viendra de l'utilisation du InStr.

Merci d'avance pour votre aide
 

oozenot

Expert
salut Sepr145,

PLusieurs choses a ajouter a ton code :
1 .crée une variable pour chaque feuille parce que là ton code cherche sur un Range, oui, mais lequel (sur quelle feuille ?)
définie mieux ta plage

2. As tu chercher a voir ce que la fonction Instr() te renvoyait dans l'état actuel des choses ?
si non, affiche son contenu a l'aide d'une "message box", ça pourrai t'aiguiller..

3. tu ne prend pas en compte l'option "ta recherche n'a rien donné". Si tu as effectivement entrer un mot, une recherche mais qu'il ne trouve rien ? et si c'est un chiffre ? Never Trust User Input

++
 

Sepr145

Nouveau membre
Bonjour oozenot,

1 .crée une variable pour chaque feuille parce que là ton code cherche sur un Range, oui, mais lequel (sur quelle feuille ?)
définie mieux ta plage

Pour moi, il n'est pas nécessaire de définir la feuille vu qu'une seule existe.

2. As tu chercher a voir ce que la fonction Instr() te renvoyait dans l'état actuel des choses ?
si non, affiche son contenu a l'aide d'une "message box", ça pourrai t'aiguiller..

afficher le contenu à l'aide d'une "message box" m'a permis de voir que le probléme ne venait pas de la fonction InStr() mais que sa pourrait venir du fait que les colonnes du tableau soit des cellules fusionnées. :??:

3. tu ne prend pas en compte l'option "ta recherche n'a rien donné". Si tu as effectivement entrer un mot, une recherche mais qu'il ne trouve rien ? et si c'est un chiffre
Lors de mes essais, je n'utilisez que des mots que je savais être présent dans le tableau.
 

Sepr145

Nouveau membre
Meilleure réponse
Donc j'ai réussi à compléter la macro, je vous affiche le code utilisé

Code:
Sub recherche()

    Application.ScreenUpdating = False

    Dim recherche As String
    Dim i As Long
    Dim j As Long
    Dim plage As Range

    Set plage = Range("F4:H105")

    recherche = InputBox("Quel type de risque cherchez-vous?" & Chr(10) & Chr(10) & "(recherche par mot-clé)" & Chr(10) & Chr(10) & "(écrire en minuscule)", "Aide à la recherche")

    If recherche = "" Then
        MsgBox ("recherche annulée")
        Exit Sub

    Else

        For i = plage.Cells.Count To 1 Step -1
            j = 1
            plage.Cells(i, j).EntireRow.Hidden = True
                
            If InStr(plage.Cells(i, j).Text, recherche) > 0 Then
               plage.Cells(i, j).EntireRow.Hidden = False
            Else
            j = j + 1
                If InStr(plage.Cells(i, j).Text, recherche) > 0 Then
                    plage.Cells(i, j).EntireRow.Hidden = False
                
                Else
                j = j + 1
                    If InStr(plage.Cells(i, j).Text, recherche) > 0 Then
                        plage.Cells(i, j).EntireRow.Hidden = False
                    End If

                End If

            End If

        Next

        Application.ScreenUpdating = True

    End If

End Sub
 

oozenot

Expert
Salut Sepr145,

belle macro. ravis que tu ais réussi a la terminer.

(met ton sujet en résolu).

++

 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 132
Messages
6 717 999
Membres
1 586 387
Dernier membre
ouistititouille
Partager cette page
Haut