[VBA] Recherche Find avec retour multiple

Dernière mise à jour le 22 septembre 2009 à 10:33 par irongege
Publié par lermite222


Une simple recherche Find vous retourne la première coordonnée trouvée.
Dans certaines circonstances il est nécessaire de connaître toutes les coordonnées des occurrences trouvées.
C'est ce que fait cette petite fonction.



Dans un module public


'Retourne toutes les adresses trouvées dans la recherche
'WkbN = nom du classeur, avec cette donnée la fonction peut être mise dans un xla
'WksN = nom de la feuille
'Plage = les coordonnées de la plage à parcourir.
'Retour dans le tableau donner en argument.
Function RechFind(ByVal Cle As String, ByVal WkbN As String, ByVal WksN As String, ByVal Plage As String, ByRef TBadress() As Variant) As Long
Dim Cherche, Ix As Long, PrAddress
    With Workbooks(WkbN).Sheets(WksN).Range(Plage)
        Set Cherche = .Find(Cle)
        If Not Cherche Is Nothing Then
            PrAddress = Cherche.Address
            Do
                ReDim Preserve TBadress(Ix)
                TBadress(Ix) = Cherche.Address
                Set Cherche = .FindNext(Cherche)
                Ix = Ix + 1
            Loop While Not Cherche Is Nothing And Cherche.Address <> PrAddress
        End If
    End With
    'nombre d'occurence(s) trouvée(s), Retour 0 si aucune occurence
    RechFind = Ix
    Set Cherche = Nothing 'Libére la mémoire occupée par l'objet.
End Function

Le corps de la fonction est séparé pour éventuellement être mis dans un classeur Xla.

Exemple d'appel par macro


Peu être mis dans un module du classeur "appelant"
Sub RechMulti()
Dim R As Long, TB()
Dim i As Integer
    R = RechFind("12*", ThisWorkbook.Name, "Feuil1", "B1:B500", TB())
    If R > 0 Then
        For i = 0 To R - 1 ' ou ubound(TB)
            'exemple
            Sheets("Feuil1").Cells(i + 4, 5) = Range(TB(i)).Row
        Next i
    End If
End Sub

Exemple d'appel par bouton


Private Sub CommandButton1_Click()
Dim R As Long, TB()
Dim i As Integer
    Range("E4:E20").ClearContents
    R = RechFind(Range("E2"), ThisWorkbook.Name, ActiveSheet.Name, Range("B1:B500").Address, TB())
    If R > 0 Then
        For i = 0 To R - 1 ' ou ubound(TB)
            'exemple
            Sheets("Feuil1").Cells(i + 4, 5) = Range(TB(i)).Row
        Next i
    End If
End Sub

Télécharger


Si vous souhaitez un exemple concret Vous pouvez télécharger le classeur exemple
Meilleures réponses pour « Recherche Find avec retour multiple » dans :
Supprimer l'historique des recherches VoirLorsque vous utilisez un formulaire de saisie, par exemple dans la barre de recherche de Google, le navigateur affiche la liste des dernières recherches. Pour des raisons de confidentialité ou d'optimisation, vous souhaitez supprimer une ou...
Référencer son site : les moteurs de recherche VoirVoici quelques autres "trucs" à savoir pour référencer un site. Les moteurs de recherche où il faut à tout prix présenter son site : 1) DMOZ ( www.dmoz.org). Ce site est très important car Google, Yahoo, Lycos, Voila... vont tous rechercher des...
Recherche de fichiers avec Windows Vista VoirRecherche de fichiers avec Windows Vista L'outil de recherche de Windows Vista Rechercher dans le menu Démarrer Personnaliser la recherche dans le menu Démarrer Recherche depuis l'interface La recherche contextuelle Annuler un filtre de...
Télécharger 2 Find MP3 VoirLa recherche de fichiers MP3 sur Internet est devenue monnaie courante pour bon nombre d'internautes et de mélomanes en tout genre. 2 Find MP3 est comme son nom le laisse suggérer, une application permettant de retrouver rapidement des fichiers MP3...
Rechercher sur Internet VoirRechercher sur Internet Etant donné le nom de pages web présentes pour le Web, il est nécessaire d'utiliser un outil pour rechercher une page spécifique correspondant à des critères de recherche: le moteur de recherche. Pour utiliser un moteur de...
PHP - Créer un moteur de recherche VoirIdée générale Le moteur de recherche ci-dessous ne correspond qu'à une idée possible de moteur de recherche simple, ne gérant qu'un seul mot clé. Le concept du fonctionnement de ce moteur est de créer une base de donnée contenant les mots clés de...
Web - Moteur de recherche VoirIl existe une énorme quantité d'informations sur Internet (plusieurs millions ou milliards de documents), et ces informations sont pour la plupart renouvelées quotidiennement. Le moteur de recherche est un élément indispensable pour s'y...