VBA - Recherche Find avec retour multiple

lermite222 Messages postés 9042 Statut Contributeur -  
william76_9710 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://www.commentcamarche.net/faq/18696-vba-recherche-find-avec-retour-multiple

william76_9710 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
tous avons nos astuces pour Find. La fonction de recherche Find doit, pour éviter de voir toutes les occurrences d'une recherche apparaitre et allonger le temps de la fonction, je communique un complément à ajouter, si vous le désirez, sur les diverses fonction mises à disposition : Correction sur l'attribution de la variable et la Clé complétée (Cherche : Clé) Voici,
Pour des Valeurs numériques
Clé as string à bannir, la clé doit être complétée de (what:=Cle, LookAt:=xlWhole)

Si 64 bits Longlong permet de raccourcir sérieusement la recherche. (64bits = échanges d'informations plus importantes de fait, plus rapide en traitement)

"As Variant" dans la chaine de déclaration passe normalement le tout en Variant, juste pour répondre à ceux qui se poseraient la question : Qu'est-ce que c'est long le traitement... Variant est considéré comme l'obligation de traiter tous les déchets 1 par 1, par effets, le temps d'exécution est anormalement long même en 64bits) Ce n'est qu'un avis de novice utilisateur très assidu du Vba (Déplorable des bugs qu'il contient ce Vba, je ne suis pas conseil sur ce langage de développement, il plante très souvent)

Voici le correctif que j'utilise (Je laisse variant puisque mon traitement est sur quelques lignes et la recherche est peu sollicitée. La modif de Variant oblige aussi d'autres correctifs dans la chaine de déclaration ...)

Function RechFind(ByVal Cle As Integer, 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(what:=Cle, LookAt:=xlWhole)

A défaut de précision, le temps de recherche est long et toutes les occurrences de n'importe quelle type de recherche vont référencer la ligne ou elles se trouvent.
Correctif apporter à la gentille personne qui a mal orthographié sa fonction ou mal copier une partie de la fonction.