Aide pour optimiser une macro import de données

EliotteAlderson

XLDnaute Nouveau
Bonjour,

Je jette une bouteille à la mer...

J'ai écrit une macro VBA-E (fonctionnelle).
Pour autant je me pose la question sur son optimisation.

La macro réalise l'import de data issues de différents classeurs Excel. (fermés les classeurs)

Le temps d'import pour 1 fichier oscille entre 33 secondes et 58 secondes (voir dans ses mauvais jours à 1min)
Si on multiplie ce temps par (x) fichiers, ah bah ça peut monter très vite et le temps paraît très longgggg pour l'utilisateur malgré tout le soin apporté :-( (Exemple : 15 fichiers = 22 minutes chez l'utilisateur)

Je ne parviens pas à trouver une solution adéquate (si ce n'est passer par des Array peut-être ou du xml)

Ci-dessous le code commenté, si une bonne âme veut bien venir à ma rescousse je ne la remercierai jamais de trop.


Code concerné : (283 lignes)
Ci-joint Macro Import + Macro ScanFolder (Fonction liée)

*Si besoin j'ai la vue logique de tout ça et les autres modules appelés
 

Pièces jointes

  • Enable_mdlImport.zip
    3.6 KB · Affichages: 38
  • Enable_mdlScanFolder.zip
    488 bytes · Affichages: 27
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

La coutume (enfin en tout cas celle qui était en cours au XXième siècle) c'est de signaler qu'on a posté sa question sur plusieurs forums (en mettant le cas échéant un URL)

Sinon qu'est-ce que ceci ? (jamais vu ailleurs)
Spinner.EchoErrors = True
150 If Spinner.Running Then Exit Sub
160 Spinner.FadeIn PixelBuddhaSpinner:=[Spinner__Number], Duration:=3000, Disable:=CTRLBreak, Position:=ApplicationCenter, WaitForDuration:=3000

C'est quoi ce Spinner?
 

EliotteAlderson

XLDnaute Nouveau
Staple 1600

C'est un preloader animé écrit en HTML et Js dans VBA :) Merci d'avoir lu un peu le code

J'ajoute un complément :
Le spinner number est une cellule nommée, depuis laquelle tu peux changer le spinner affiché
Ensuite en gros ça dit si le spinner est déjà affiché ou pas
Et le reste correspond au paramétrage du fondu quand il disparaît de l'écran utilisateur

Un peu à la sauce Web
 

Staple1600

XLDnaute Barbatruc
Re,

Peu enclin au niveau URL, on dirait, non?
Il viendrait pas d'ici ton Spinner, par hasard ?
http://www.kubiszyn.co.uk/index.html

NB: Tu peux joindre ton code en exportant le module et en zippant le *.bas obtenu
La coutume c'est de poster les messages dans le forum sur lequel on se trouve, pas ne nous obligerà aller sur l'autre forum pour y poster une réponse.
Le lien est là, juste pour nous prévenir que la question est traitée à plusieurs endroits et nous évite de perdre du temps à pondre un code VBA qui a peu être déjà été posté sur l'un ou l'autre des forums.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Ton spinner à part faire joli, il a une fonction précise?
Est-ce que sans, ton code s’exécute plus rapidement?

NB: Relis mon message#8, et tu comprendras qu'il n'y a pas de problème avec l'URL.
Ici, nous sommes sur le forum XLD, l'autre forum c'est developpez.com
Donc on répond ici à ta question (tout en ayant un oeil sur l'autre forum)
 

EliotteAlderson

XLDnaute Nouveau
Re

Ton spinner à part faire joli, il a une fonction précise?
Est-ce que sans, ton code s’exécute plus rapidement?

NB: Relis mon message#8, et tu comprendras qu'il n'y a pas de problème avec l'URL.
Ici, nous sommes sur le forum XLD, l'autre forum c'est developpez.com
Donc on répond ici à ta question (tout en ayant un oeil sur l'autre forum)

Oui oui j'ai bien intégré :) d'où mon edit...
 

Staple1600

XLDnaute Barbatruc
Re

Pour dire que quelque chose se passe la status bar peut suffire ;)

PS: Tu peux remettre ton code dans ton premier message, stp?
(Pour avoir à éviter à faire le va et vient entre ce fil et l'autre)
Tu peux utiliser la balise BBCODE [SPOILER][/SPOILER] pour que cela prenne moins de place
 

EliotteAlderson

XLDnaute Nouveau
Re

Pour dire que quelque chose se passe la status bar peut suffire ;)

PS: Tu peux remettre ton code dans ton premier message, stp?
(Pour avoir à éviter à faire le va et vient entre ce fil et l'autre)
Tu peux utiliser la balise BBCODE [SPOILER][/SPOILER] pour que cela prenne moins de place

La balise n'a pas suffit, je dépassais le maximum de caractères autorisés.
So, j'ai posté le fichier .bas comme suggéré
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 327
Membres
102 862
dernier inscrit
Emma35400