Bonjour,
J'ai créé une fonction personnalisée (mais je ne m'y connais pas) pour rechercher des noms de produits dans des tables de nom non standardisé.
Elle fonctionne bien mais nécessite un très grand temps de calcul alors que les tables de recherche ne font que grandir.
je me demande si je pouvais réduire le calcum par la création d'une table unique non recalculée à toutes les cellules de recherche, mais je ne sais pas comment.
Voici la fonction :
Function Croisade_2(ValeurRecherchee As String, TableDeRecherche As Range, NumColonne As Integer, Separator As String)
Application.Volatile
Dim NbLignes As Double
Dim CompteurValeursTrouvées As Integer
Dim CroisadeMktg As String
Dim i
Dim y
NbLignes = TableDeRecherche.Rows.Count
CompteurValeursTrouvées = 0
CroisadeMktg = ""
For i = 1 To NbLignes
If InStr(1, TableDeRecherche(i, 1).Value, ValeurRecherchee) Then
CompteurValeursTrouvées = CompteurValeursTrouvées + 1
y = TableDeRecherche(i, NumColonne).Value
If CompteurValeursTrouvées > 1 Then
MsgBox (CroisadeMktg)
MsgBox (y)
MsgBox (InStr(1, CroisadeMktg, y))
If InStr(1, CroisadeMktg, y) >= 1 Then
CroisadeMktg = CroisadeMktg
Else
CroisadeMktg = CroisadeMktg & Separator & TableDeRecherche(i, NumColonne).Value
End If
Else
CroisadeMktg = CroisadeMktg & TableDeRecherche(i, NumColonne).Value
End If
End If
Next i
Croisade_2 = CroisadeMktg
End Function
J'avoue ne pas savoir comment l’améliorer et espère par vos lumières réussir à l'optimiser et l'accélérer.
Je vous remercie donc d'avance de votre potentielle aide et de votre indulgence sur la qualité de la dite fonction.
Bien à vous.