Alternative à la function vba ou vb replace (jusqu'à 10 fois plus vite, sans api)

5/5 (13 avis)

Vue 6 927 fois - Téléchargée 639 fois

Description

J'ai trouvé cette fonction dans le forum Bigsource. Comme je n'ai pas trouvé d'équivalent si rapide sur VBFrance, j'ai du alors fabriquer cette feuille pour le test que s'assevère positif.

Source / Exemple :


C'est mieux faire le test aussi

Codes Sources

A voir également

Ajouter un commentaire Commentaires
jjDai Messages postés 291 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 13 mars 2015
9 févr. 2010 à 20:46
Si effectivement dans certains contextes cette fonction s'avère plus rapide dans d'autres elle l'est moins, et au finale je ne suis pas convaincu car la plus part du temps il suffit de revoir algorithmie principale notamment la construction des boucles.

Un test avec
c = Replace(c, "co", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", 1, , 1)
c = Replace(c, "mm", "ttttttttttttttttttttttttttttttttttttttttttttt", 1, , 1)
c = Replace(c, "tt", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", 1, , 1)
c = Replace(c, "bb", "zzzzzzZZZzzzzzzzzzzzzzzzzzzZZZZZZzzzz", 1, , 1)
c = Replace(c, "zz", "oooooooooooooooooooooooooooo", 1, , 1)
c = Replace(c, "zzzzz", "visual basic", 1, , 1)

S'avère presque équivalent sur mon poste.

Cependant très bonne source pour les version antérieures de VB et VBA qui n'implémente pas cette fonction.
JJDAI
vicosta Messages postés 178 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 30 novembre 2011
9 févr. 2010 à 21:34
Sur mon poste et avec l'exemple de code que tu décris, ça va plus de 10 fois plus vite.
Bien sûr que, si le project ne comporte pas beaucoup de remplacements à éffectuer, cette function sera superflue.
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
10 févr. 2010 à 15:15
Il y a un certain nombre de code sur REPLACE sur VBF... (et j'en parle pas sur internet). As-tu fait le test du plus rapide au moins ? Simple curiosité...

Amicalement,
Us.
vicosta Messages postés 178 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 30 novembre 2011
11 févr. 2010 à 02:43
Pas besoin de tester les autres codes sur vbfrance, j'ai consulté une bonne dizainne parmi le plus récents et aucun, tel que VB, ne reserve de la mémoire addctionnel pour travailler confortablement sans trop embarasser le système d'exploitation.
cs_Norpac Messages postés 12 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 21 janvier 2013
21 févr. 2010 à 11:34
L'instruction :
ReDim Preserve alHits(0 To lSize) As Long
prend environ 40 % du temps d'exécution. Pourquoi ne pas calculer la taille de ce tableau au préalable et n'effectuer le dimensionnement qu'une seule fois. Cela oblige à dupliquer quelques instructions mais s'avère payant. J'arrive à un rapport de 300 ms pour 16000 ms sur le même exemple.
Toujours impressionné par le travail de passionnés anonymes.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.