Je n’ai pas très bien compris comment utiliser cela dans mon exemple, peut être que je n’ai pas bien exprimé ce que je recherche .
J’ai une feuille de 8 colonnes et 250 000 lignes (1 cas = 5000 lignes je peux avoir jusqu’à 100 cas)
La première colonne correspond au Tag que je veux rechercher, la deuxième à sa description, les 5 colonnes suivantes sont des valeurs et la dernière de nouveau un texte.
Cela est multiplié par 15 feuilles (le nombre de ligne y est variable)
J’ai créé 15 fonctions très simples qui permettent à un utilisateur de récupérer ce qui l’intéresse, à savoir la description ou la valeur de la colonne 3 ou de la 5 …
Les différents utilisateurs ont fait des fichiers qui peuvent contenir entre 8000 et 15000 formules.
En changeant une cellule correspondant au cas que l’on veut étudier toutes les formules se mettent à jour. (Actuellement cela met 3 secondes pour 5 cas et 3 minutes pour 80 cas testé hier sur un serveur 24 cores)
Si je mets la boucle pour alimenter le dico dans la fonction je perds tout l’intérêt du truc (le temps explose c’est ce que j’ai eu hier plus de 10 minutes).
Ce que j’aurai voulu c’est charger la feuille dans le dico, que le dico reste « actif » et « rempli » tant que je ne sors pas de la feuille puis que je refasse mes fonctions de façon à récupérer ce que je recherche
Ci-dessous une des fonctions actuelle
Public Function MBuy(Model, Product, Cas, Optional Min_Max_DJ_D_Price) As Variant
Dim rr As Range
Dim BuyVal As String
' par défaut si la dernière option n'est pas renseignée on récupère l'activité (2èm position)
If IsMissing(Min_Max_DJ_D_Price) Then Min_Max_DJ_D_Price = 2
'la valeur à rechercher
BuyVal = Cas & "-" & Model & "-" & Product
Set rr = Worksheets("RW_PurchasesW").Range("a:a").Find(What:=BuyVal, LookAt:=xlPart, MatchCase:=True)
If rr Is Nothing Then
Else
' si la valeur existe on renvoie l'argument choisit dans la fonction
MBuy = rr.Offset(0, Min_Max_DJ_D_Price).Value
End If
End Function
J'ai oublié de dire également que le fichier est dynamique, c'est à dire que les utilisateurs peuvent ajouter, retrancher des feuilles, ajouter des formules etc ......
Et lorsqu'ils l'utilisent en changeant juste le numéro du cas tout se met à jour
Il est possible que ce que je recherche ne soit pas possible, mais si quelqu’un a une idée je suis preneur, merci d'avance