[VBA] Cache d'objets lents

tantal_fr

Grand Maître
Bonjour,

Sur un module complémentaire que j'utilise tout les jours, j'ai des requêtes http à faire pour récupérer un fichier xml qui sera parsé plus loin dans le code.

Ces requêtes sont souvent longues surtout quand le serveur est dans les choux ou inaccessible :kaola: et c'est souvent le cas :lol:
Vu qu'il arrive souvent de faire plusieurs fois la même requête, j'ai pensé à l'idée de créer un cache qui n'a pas besoin d'être persistant.

J'avais dans l'idée d'utilisé une classe (j'aime bien les objets) initialisée au démarrage d'excel. Mais après j'ai pas trop d'idée.

Faut-il un objet pour chaque item du cache, créés dynamiquement ? Comment faire des recherches dans le cache de façon optimisé ?

J'ai quelques notions de programmation, mais c'est pas du tout mon métier. Si quelqu'un veux bien m'aider j'en serrais ravis.:love:
 

tantal_fr

Grand Maître
Je me répond à moi-même :

J'ai utilisé une Collection d'objet en variable globale (public) de ma macro complémentaire.

La collection est initialisé à l'ouverture du classeur (chargement de la macro complémentaire) :
Code:
Option Explicit

Public DTRs As Collection

Private Sub Workbook_Open()
    'Initialisation du cache
    Set Articles = New Collection
End Sub

Et ensuite, à chaque foi que j'appelle la macro je parcoure la collection à la recherche d'une correspondance et utilise l'objet du cache, sinon, je créé un nouvel objet et l'ajoute à la collection :

Code:
For Each cell In CaseRange
        match = False
        
        For Each cArticle In Articles
            If cArticle.Part = cell.Text Then
                    match = True
                    cArticle.Open_navigator
            End If
        Next cArticle
        If Not (match) Then
            Article.Part = cell.Text
            Article.Open_URL
            Articles.Add Item:=Article
        End If
    Next cell
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 070
Membres
1 586 394
Dernier membre
Manoushk
Partager cette page
Haut