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 -
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
https://www.commentcamarche.net/faq/18696-vba-recherche-find-avec-retour-multiple
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.