[VBA] Accélerer procédure d'ouverture de documents

Bonsoir,

En optimisant au mieux mon outil, Excel est en mesure d'ouvrir des base de données de quelques dizaines de milliers de lignes en assez peu de temps (jusqu'à 1 ou 2 minutes si on veut tout charger en même temps, ce qui n'est normalement pas utile).

Alors, surtout par curiosité, je me demandais si vous auriez une solution pour rendre l'ouverture de ces documents plus rapide (en ouvrant pas le document par exemple).

J'ai fait un petit document Excel qui reprend en partie le fonctionnement de mon outil et qui charge 3 bases de données. Alors, bizarement, en ayant écrit la même chose, je constate une erreur sur mon code utilisé en exemple...

Je vais donc essayer de voir ce qui cloche (on dirait que l'ouverture d'un format .xlsx fonctionne lorsque le xlsx vient d'être ouvert, mais ne fonctionne pas une fois que celui-ci à déjà été ouvert par Excel )

Si ça pose toujours problème, je changerai le code (du fichier en exemple) par quelque chose d'autre.

6nouveau-dossier.zip (541.46 Ko)

Je vous remercie de votre attention !

Bonne soirée

Bonjour,

Il manque le chemin d'accès au fichier

Il faut ajouter la variable "Source" il aurait été mieux d'utiliser un nom de variable explicite "sPath" par exemple

    With oSource
        .Provider = "Microsoft.Jet.OLEDB.12.0"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=" & source & fich & ";Extended Properties=""Excel 12.0;HDR=no;IMEX=1"";"
        .Open
    End With

@+

Bonsoir,

En effet, l'erreur venait du fait que j'ai désactivé cette partie du code dans le cadre de mon exemple :

   '   Do While fich <> ""
   '     If FileDateTime(source& fich) > ddt Then
   '       lastfich = source& fich: ddt = FileDateTime(source& fich)
   '     End If
   '     fich = Dir
   '   Loop
   ' fich = lastfich

Et donc, la source n'était pas complète.

Cela résout le problème de mon exemple, que je n'ai pas dans mon outil et pour lequel j'aimerais bien savoir s'il y a moyen d'avoir quelque chose de plus rapide, en évitant d'ouvrir chaque fichier avant de les charger dans le fichier principal par exemple.

En tout cas merci de la réponse, vue que je ne trouvais pas j'envisageai de refaire un exemple, pas à pas, mais maintenant c'est bon (j'avais déjà eu ce problème par le passé, je serai plus attentif sur ce point).

Je réupload le dossier compressé, fonctionnel maintenant.

A plus tard :)

4nouveau-dossier.zip (541.68 Ko)

Salut

Tu peux utiliser Power Query pour charger les fichiers directement, mais ont-ils toujours le même nom

@+

Bonsoir,

PowerQuery je m'en sert pour la construction et la mise à jour des bases de données initiales (des centaines de milliers de lignes) pour extraire les BDD plus petites que je vais utiliser dans mon outil. Dans cette situation, tout fonctionne.

Les extraits de bases de données sont renommés à chaque nouvel enregistrement, lorsqu'ils sont mis à jour. Certains sont également alimentés par mon mon outil et changent de nom.

Le changement de nom consiste à conserver le nom (exemple BDD1) en modifiant la partie du nom qui contient la date d'enregistrement (ex : BDD1_2021_8_11_23_11).

En outre, les feuilles sont supprimées à la fermeture de l'outil. J'ai besoin qu'il soit nettoyé à la fermeture (selon les options choisies), et cette opération a pour conséquence de ne plus faire fonctionner PowerQuery.

Bonne fin de journée !

Rechercher des sujets similaires à "vba accelerer procedure ouverture documents"