XL 2010 Faire Fonctionner le contrôle "ProgressBar"

cathodique

XLDnaute Barbatruc
Bonjour,

Cela fait une semaine que je rame. Je n'ai pas de solution.
J'ai fait un fichier par rapport à mon original ne laissant que le strict nécessaire pour illustrer mon problème.
Le processus est le suivant:
  • au clic sur le bouton, demande de saisie d'une année pour créer un dossier
  • vérification de l'existence de ce dossier (création ou non)
  • mise en page de certaines feuilles
  • création du dossier et sous-dossier
  • copie du fichier sous un autre nom
  • enregistrement et ferme Excel.
Le processus est long, c'est pour cela que je voudrais ajouter une progressBar que je n'arrive pas à faire fonctionner.
En vous remerciant par avance.

Bonne journée.
 

Pièces jointes

  • ProgressBar.xlsm
    79.8 KB · Affichages: 9

Dranreb

XLDnaute Barbatruc
À priori seuls les modules de classe Rythmeur et Planification et leurs modules standard effectoires XRythmeur et XPlanificateur sont nécessaires en plus de l'UFmProg. Donc, glisser/déposer ces 5 noms de composants VBA dans votre projet.
 

patricktoulon

XLDnaute Barbatruc
re
je ne critique pas le travail de @Dranreb de sa superbe progressbar
mais selon moi pour une macro qui est déjà (peut être à repenser)
ajouter 5 modules pour un carambar qui change de taille synchrone avec les macros ou etape d'une macro est un peu too much à mon goût à un moment donné il faut savoir s’arrêter

faudrait déjà que tu adopte et comprenne le principe que tu vachoisir et employer
tout ces artifices ralentissent considérablement vba dans son exécution
pour moi une simple progressbar dont le .value est modifié a chaque étape de ta macro est amplement suffisant et même superflu
faudrait déjà que tu maitrise cela
car ce n'est pas tout de glisser un module ou deux ,il faut être en mesure de savoir et pouvoir le débuguer soi même
tu développe une app
met ton projet à plat
que me e faut il
quelle méthode
quel outils
form ou feuille
les possibilité de modif sans avoir besoins de refondre le code
le style
les plus ..
éventuellement un fichier d'aide pour les utilisateurs ou des commentaires dans le code
etc.etc...

une app ça se pense d'abords on regarde tout les aspects selon les possibilités
pendant le développement on fait des rushs voir des versions différente et on observe ce qui est le plus probant
en terme d'ergonomie ,de puissance(consommation)
en terme de méthode (pérennité)et ouverture sur modifs eventuelles
en terme d''utilité du style et sa mesure d'importance
et tout ces termes sont interdépendants
edit:
tiens elle est là

 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Mon UFmProg ne ralentit guère l'exécution même si on invoque des milliers de fois par seconde sa méthode Avance. Sauf à peu près tous les quarts de seconde elle rend la main aussitôt au programme appelant (instruction If CycM < CycRaf Then If NbFaits < NbPrévus Then Exit Sub).
 

patricktoulon

XLDnaute Barbatruc
re
@Dranreb oui je sais je l'ai testé ta progress bar il y a un moment déjà elle ralenti quand même bien crois moi et c'est normal d'ailleurs ça n'a rien a voir avec la méthode d'ailleurs le fait que tu soit sur un settimer en addressof me semble t il a mon souvenir permet de reprendre un peu plus la main sur vba

mais est-ce bien utile de lui compliquer la vie pour une petite macro à repenser qui est juste un peu longue

qui d'ailleurs selon moi toujours devrait être découpé en plusieurs toute petites fonctions afin de pouvoir modifier , déboguer sans devoir tout repenser

je dis ça moi je dis rien

ps je serais bien tenté d'en refaire une dans un userform complétement autonome façon mon calendar
juste pour l'exercice de style j'avais fait il y a quelques années me semble t il une progressbar façon vista, W7 plus vrai que nature et codée bien maladroitement ( le temps de l'insouciance 🤣 )qui doit être encore dispo d'ailleurs dans les ressources

mais ça reste du superflu

perso je regle les soucis de puissance , vélocité , de méthode dans mes fonctions avant de faire du style

edit:
tiens la voilà

 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Un timer n'est utilisé dans mon UFmProg que pour générer des avancement forfaitaires supplémentaires pour des tâches longues lors desquelles le programme n'a plus la main pour les demander.
Donc seulement si on veut exploiter plus en profondeur ses possibilités.
Sinon on a seulement à connaître ses méthodes Tâche et Avance.
 

patricktoulon

XLDnaute Barbatruc
tiens je disais tout à l'heure d'userform autonome

c'est on ne peut plus simplissime
on reprend mon code en page 1 de cette discussion et on déplace un peu les codes

dans un userform tu met un progresbar deux label dont qui se nomme percent

dans le userform
VB:
Public segment#
Public Function Go(nbaction)
    With progression
        If .Visible = False Then .Show 0
        With .ProgressBar1
            If .Parent.segment = 0 Then segment = .Max / nbaction
            .Value = .Value + segment
            percent = "Progression " & .Max * .Value / 100 & " %"
            .Parent.Repaint
            If .Value >= .Max Then MsgBox "fini": Unload Me
        End With
    End With
    DoEvents
End Function
terminé tu la ta fenêtre de progression
dans les fonctions dans un module ou userform tu change juste la valeur
et c'est terminé
VB:
Function Pose(LapsedTime)
    ExecuteExcel4Macro "CALL(""kernel32"",""Sleep"",""JJ""," & (LapsedTime) & ")"
End Function



Sub action1()
     progression.Go 10
     Pose 500
    action2
DoEvents
End Sub

Sub action2()
    Pose 500
    progression.Go 10
    action3
End Sub

Sub action3()
    Pose 500
     progression.Go 10
    action4
End Sub

Sub action4()
    Pose 500
    progression.Go 10
     action5
End Sub

Sub action5()
    Pose 500
    progression.Go 10
     action6
End Sub

Sub action6()
    Pose 500
    progression.Go 10
    action7
End Sub

Sub action7()
    Pose 500
    progression.Go 10
    action8
End Sub

Sub action8()
    Pose 500
     progression.Go 10
   action9
End Sub

Sub action9()
    Pose 500
    progression.Go 10
    action10
End Sub

Sub action10()
     progression.Go 10
  End Sub
le userform se show tout seul et se ferme tout seul
chaque sub monte d'un cran
un cran est égal au max de la progressbar / par le nombre de sub ou fonction à faire

tout se joue avec ceci
progression.Go 10


demo.gif
 

cathodique

XLDnaute Barbatruc
Messieurs bonjour,

@Dranreb : Merci beaucoup. Je vais tester ta proposition.

@patricktoulon :
tu développe une app
met ton projet à plat
Je te remercie pour tous tes conseils. Mon app tourne depuis plus de 2 ans sans bug.

Ce n'est qu'un petit ajout que je voulais faire. Maintenant je suis sûr que tu n'as pas consulté mon code.
Stp, qu'est sensé faire ce bout de code:
VB:
With ThisWorkbook
     .Save
      If Workbooks.Count = 1 Then Application.Quit Else .Close
End With
Comme tu peux le constater, le fichier se ferme à la fin du processus. Donc, pour le ralentissement aucune importance.
Jusqu'à présent, je faisais apparaitre un texte dans un label.
Au lieu de me proposer une solution adapter à mon fichier, tu me proposes un code qui ouvre un userform.
Alors que sur mon fichier, l'userform est déjà ouvert. Tout le processus démarre au clic sur le bouton "Nouvel Exercice".
-----> apparition de la progressbar et la suite du déroulement du code.

En tout cas, merci beaucoup pour l’intérêt et le temps consacré.

Bonne journée.
 

patricktoulon

XLDnaute Barbatruc
Ce n'est qu'un petit ajout que je voulais faire. Maintenant je suis sûr que tu n'as pas consulté mon code.
Stp, qu'est sensé faire ce bout de code:

ben si justement je l'ai ouvert
et je l'ai refermé
d'ailleurs je te l'ai dis que tes lignes qui mettent a jour la progressbar à la seconde (heu..qui sont sensé le faire) etaient pas bonnes
comment aurais je pu savoir ça si je n'avais pas ouvert ton fichier
je t'ai donné quelque chose d'hyper simple a faire voir même à adapter a ton userform

après si tu veux pas écouter tant pis pour toi ,je laisse la main a mon camarade @Dranreb
Bonne journée également ;)
 

cathodique

XLDnaute Barbatruc
Re, @patricktoulon

je te l'ai dis que tes lignes qui mettent a jour la progressbar à la seconde (heu..qui sont sensé le faire) etaient pas bonnes
Je savais bien que ma façon de faire était fausse plus que a ne fonctionnait pas. D'où l'ouverture d'une discussion pour corriger mes conneries.

si tu veux pas écouter tant pis pour toi
il y a une grande différence entre "écouter" et "comprendre". Et, têtu comme je suis, tant que je ne comprends pas un truc, je ne l'utilise pas.

J'espère que tu n'as pas le sentiment d'avoir perdu ton temps avec moi.

Avec toute ma gratitude.

Excellente journée à vous.
 

patricktoulon

XLDnaute Barbatruc
re
qu y a t-il a comprendre?
tu viens avec une question de progressbar qui t'afficherais l'avancement de ta macro qui peut durer un moment
purée rien de plus simple
met une progressbar dans ton userform je vais l'appeller maprogressbar
tu a des étapes dans ta macro
tu compte combien d’étape tu a par exemple on va dire 5
et a chaque étape (a la fin de l'étape)

si les fonctions sont dans l'userform lui même
VB:
with magrogressbar
.value=.value+(.max/5)
end with

si les fonctions ne sont pas dans l'userform
VB:
with nomuserform.magrogressbar
.value=.value+(.max/5)
end with

non de dieu c'est quoi qui est compliqué
c'est de niveau débutant
et c'est pas peine de te l'avoir montré plusieurs fois dans cette discussion
c'est simple a chaque étape sur 5 la barre avance d'un 5eme
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Cathodique, Patrick, Dranreb,
Un autre exemple de ProgressBar simplissime.
1- Le code est dans l'Userform, ne requiert aucun module supplémentaire.
2- L'Userform s'ouvre automatiquement s'il n'est pas affiché lors du rafraichissement.
3- Il se ferme automatiquement si le curseur arrive en butée.
4- Il est non modal.
5- La mise à jour du curseur est simplissime:
VB:
USFPBP.MAJ Nmax, i
avec
Nmax valeur max du curseur
i Valeur courante
par ex USFPBP.MAJ 100,20 donnera un curseur à 20%

NB: C'est un vieux code que j'utilise souvent, et le code commence par :
D'après une idée originale de Donald ... non, de Patricktoulon - Appel : USFPB.MAJ Nmax,N
Par contre, je serais incapable de dire exactement où j'ai piqué l'inspiration du maître. :)
 

Pièces jointes

  • _ProgressBar perso.xlsm
    24.4 KB · Affichages: 7

patricktoulon

XLDnaute Barbatruc
🤣
Bonjour @sylvanu
oui elle est vielle celle la
deux controls un pour le cadre l'autre pour le curseur
je reconnais mes idées d'entant
regarde celle là (bon elle a plus de 3 ans mais bon c'est joli 🤣

LOL
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa