Comment créer une barre de progression en VBA

Dranreb

XLDnaute Barbatruc
Re : Comment créer une barre de progression en VBA

Il y a une erreur signalée ?
Il n'y a aucune complexité à invoquer une procédure "Tâche" avant une boucle et une autre OùÇaEnEst juste avant le Next.
 

sdevers

XLDnaute Nouveau
Re : Comment créer une barre de progression en VBA

Non, invoquer les 2 procédures, ça va.

C'est le code pour Tâche et pour OùÇaEnEst qui me posent plus de soucis. Je vais devoir les personnaliser et ils font appels à certaines fonctions que je ne maîtrise pas du tout (VBA.Timer par exemple). J'ai bêtement essayer de voir comment fonctionnait la barre en elle-même, j'ai pas réussi. Ce sont des images que tu bouges?

Vais me concentrer sur l'autre exemple, j'y suis presque dans celui-là... ;)
 

sdevers

XLDnaute Nouveau
Re : Comment créer une barre de progression en VBA

Ne vous vexez pas mais je ne peux pas laisser le même code couleur pour mon entreprise... et je devrai aussi adapter les textes en anglais (notament).
 

Dranreb

XLDnaute Barbatruc
Re : Comment créer une barre de progression en VBA

C'est le fond Cyan qui est trop pétant ?
C'est une image, mais je peux éventuellement vous la refaire avec une autre couleur…
Le seule partie à traduire c'est la phrase "Fin prévue à …"
 

Dranreb

XLDnaute Barbatruc
Re : Comment créer une barre de progression en VBA

Pour info VBA.Timer donne simplement le nombre de millisecondes écoulées depuis minuit.
C'est utilisé dans OùÇaEnEst pour ne pas recalculer l'aspect de l'UFmBarProg plus de 4 fois par seconde, à la fois pour donner le temps de lire au moins une info mais surtout pour ne pas pénaliser un traitement qui l'appellerait des dizaines de milliers de fois par seconde, comme c'est le cas pour des calculs de pixels d'une image.
 
Dernière édition:
O

olive178

Guest
Re : Comment créer une barre de progression en VBA

Bonjour Danreb, J'ai essayé votre barre de progression, et je l'ai mise dans ma procédure. Elle marche bien, elle affiche la progression du cycle, mais elle bouffe du temps :
Temps de process sans la barre de progression : 28 secondes
Temps de process avec la barre de progression : 2 minutes 50 secondes

Il y a un parametrage particulier a faire je pense ?

Merci pour votre fichier.
 

Dranreb

XLDnaute Barbatruc
Faites voir votre classeur. Peut être ne l'avez vous pas correctement mise en service.
Je l'utilise couramment pour écrire des valeurs de tableaux en tant que pixel dans des fichiers .bmp
J'appelle la OùÇaEnEst pour chaque pixel. Ça ne bouffe absolument pas de temps, en tout cas rien de mesurable car elle sort immédiatement le plus souvent.
Lorsqu'elle affiche "20000 pixels/sec", 5000 ont été traités sans que son aspect n'ait été remis à jour.
 
Dernière édition:
O

olive178

Guest
Voici l'initialisation de procedure
Depuis le fichier excel, je met les donnees a rechercher dans un tableau tabRechercheLicence, chaque ligne est en k, qui envoi la recherche sur la bdd, avec un affichage retour sur le classeur.

Sub RechercheLicence()

tabRechercheLicence = Range(col_Nom & iFirstRow + 1 & ":" & col_Nationalite & iLastRow).Value 'Mise en tableau
Tâche Texte:="Démo", NbrPrévus:=UBound(tabRechercheLicence) + 1, Unités:="Opé." ' Lancement.
For k = LBound(tabRechercheLicence, 1) To UBound(tabRechercheLicence, 1)
Application.Wait Now + TimeSerial(0, 0, 1)

'... Recherche de licences dans bdd.Access...
'Affichage du resultat
Call OùÇaEnEst: Next k

End Sub

J'ai rajouté que : tache Texte, Application.wait et Call OuCaEnEst.

Merci
 

Dranreb

XLDnaute Barbatruc
Je serais fondé à supposer que c'est seulement le Application.Wait Now + TimeSerial(0, 0, 1) qui bouffe une seconde à chaque passage dans la boucle…
J'ai pu mettre un tel ralentisseur dans le classeur de démo, pour simuler le temps mis par le traitement pénalisant dont on veut surveiller l'avancement, afin que dans la démo on ait le temps de voir quelque chose. Ce n'est pas à reproduire.
 
Dernière édition:
O

olive178

Guest
Oui, c'est ca. Ca fonctionne maintenant super bien.
J'ai juste vire le +1 (qui empechait le compteur d'arriver a 100) de UBound(tabRechercheLicence) + 1, Unités:="Opé." ' Lancement.

Ca marche bien. Merci !!
 

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 261
Membres
102 844
dernier inscrit
atori2