Microsoft 365 Barre de progression dans une macro sans boucle

Egruat

XLDnaute Occasionnel
Bonjour,
J'ai une macro ne comportant pas de boucle, qui prend environ une minute à s'exécuter. Elle consiste à ouvrir successivement 3 fichiers de données et à prendre dans chaque fichier la donnée pour les copier dans le fichier principale (dans lequel cette macro se trouve).

Comment faire pour inscrire une barre de progression alors que la macro n'a pas de boucle ? Je recherche une solution simple.

Merci de votre aide !
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Egruat,
La bonne question est pourquoi cela met une minute pour ouvrir trois fichiers et y picorer quelques datas ?
Sinon peut être pouvez vous utiliser le Statusbar, en faisant entre chaque fichier :
VB:
Application.StatusBar ="Traitement du fichier x"
.
Ce n'est pas un progressbar mais vous permet de voir où vous en êtes.
 

Egruat

XLDnaute Occasionnel
Merci de votre réponse. Car il y a beaucoup de données.

La macro efface la base de donnée globale, puis additionne les données de 3 fichiers différents, puis ajoute des colonnes de calcul.

Je cherche à avoir une barre de progression qui puisse tenir compte de l'avancée des différentes actions de la macro. Mais les exemples de Barre de progression sont axés sur une macro ayant une boucle, ce qui n'est pas mon cas.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
J'ai un UFmProg qui affiche une barre d'avancement par exécution d'une procédure Tâche où on indique le nombre d'opérations élémentaires à effectuer. Une procédure OùÇaEnEst doit ensuite être invoquée autant de fois que ce nombre, mais je n'ai jamais dit que ces invocations devaient obligatoirement être dans une boucle, bien que ce soit le plus souvent le cas.
 

Pièces jointes

  • Progression.xlsm
    210.7 KB · Affichages: 79

Egruat

XLDnaute Occasionnel
Bonjour.
J'ai un UFmProg qui affiche une barre d'avancement par exécution d'une procédure Tâche où on indique le nombre d'opérations élémentaires à effectuer. Une procédure OùÇaEnEst doit ensuite être invoquée autant de fois que ce nombre, mais je n'ai jamais dit que ces invocations devaient obligatoirement être dans une boucle, bien que ce soit le plus souvent le cas.
Merci pour votre fichier. Mais cela semble très complexe avec de nombreuses macros. Je recherche quelque chose de plus simple. Pourriez-vous m'aider ?
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Glissez/déplacez l'UFmProg vers le projet VBA de votre classeur, et il sera opérationnel.
Ah, pas tout à fait: il a aussi besoin des modules de classe Planification et Rythmeur, lesquels utilisent les modules standard MPlanificateur et MRythmeur. Glissez déplacez aussi ces quatres noms dans l'explorateur de projets. L'essentiel c'est que ce soit très simple à utiliser dans le module utilisateur, non ?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Le l'ai fait dans un nouveau classeur et lancé cette procédure :
VB:
Sub Test()
   UFmProg.Tâche "Essai", 3
   Application.Wait Now + TimeSerial(0, 0, 1)
   UFmProg.OùÇaEnEst
   Application.Wait Now + TimeSerial(0, 0, 1)
   UFmProg.OùÇaEnEst
   Application.Wait Now + TimeSerial(0, 0, 1)
   UFmProg.OùÇaEnEst
   End Sub
 

Discussions similaires

Réponses
5
Affichages
559

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG