XL 2013 Barre de progression.

babastioun

XLDnaute Nouveau
Bonjour à toutes et tous. Habituellement j'arrive à trouver mon bonheur au travers des différentes discussions que je trouve sur ce forum.
Mais cette fois ci je n'y arrive pas, ou disons que je ne sais pas trop comment adapter ce que j'ai trouvé à ma situation.
Donc je me permet de créer cette discussion, afin de voir si qq'un peut m'aider dans ma recherche.
Le sujet est le suivant: A partir du fichier (voir fichier joint) que j'ai adapté à ma situation, celui ci crée des fichiers excel en fonction de ma base de donnée d'une feuille.
Au total, il y aura 24 fichiers (classeurs) à créer, avec chacun 2 feuilles remplies suivant 2 feuilles de données.
Bref ceci pour donner un peu le contexte, mais sur cette partie j'arrive à ce que cela fonctionne.
Ma question est que quand je click sur le bouton Test, cela lance la création de fichiers (23 dans mon exemple) et cela prends un peu de temps, mais surtout on ne voit pas ou cela en est ! Donc est ce possible de créer un barre de progression, ou d'afficher dans le statubar d'excel, l'état d'avancement de la création de ces nouveaux fichiers ?
Je vous mets en pièce jointe mon fichier qui m'a servi de base.
Je vous remercie pour vos réponses.
Bonne journée.
 

Pièces jointes

  • création-fichier-excel-original.xlsm
    53.3 KB · Affichages: 7

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour babastioun, Fanfan,
Des progressbar, vous en trouverez une multitude alors difficile de choisir.
Un essai en PJ avec le status bar et un progressbar pour l'exemple.
Statusbar :
VB:
Application.StatusBar = "Progression : " & Format(i / lastRow, "0%")
Progressbar
Code:
USFPBP.PB lastRow, i
et voir userform USFPBP pour le code.
 

Pièces jointes

  • création-fichier-excel-original.xlsm
    57.4 KB · Affichages: 11

babastioun

XLDnaute Nouveau
Bonjour Fanfan38, quelle rapidité. C'est tout à fait ce que je cherchais !:)
Après qq copier/coller, ça fonctionne super bien dans mon fichier final.
Je te remercie énormément pour cette aide.
Quand on voit le résultat du code que tu m'as fait, cela semble simple, mais je n'aurai pas su m'en sortir ainsi. Tous ce que j'ai pu trouvé, ressemblaient à une usine à gaz !!!
Si toutefois tu as un peu de temps, pour mes connaissances personnel, est ce que tu pourrais me faire une petite traduction du code associé au userform, que j'essaye de comprendre la logique ?
Et aussi quelles sont les propriétés des éléments du userform qu'il faut avoir paramétrés ?
Parce que à la lecture du code, pour le moment je saisie pas le truc ! :(
Je te remercie.
Bonne journée à toi.
 

babastioun

XLDnaute Nouveau
bonjour
pour le fun avec un userform et 3 labels

cela dit tu n'a pas vraiment besoins de tout ça , un simple msgbox à la fin et tu sais tout de suite quand c'est fini
Bonjour Patricktoulon,

Alors effectivement,un simple msgbox aurait pu suffire, mais j'y ai pas pensé !
Toutefois, comme la solution fanfan38, la tienne est forte intéressante aussi, avec l'affichage au fur et a mesure de ce qui s'enregistre.
Je vais voir ça, en tout cas un grand merci à vous tous, je vais pouvoir clore cette discussion comme résolue, mais je sais pas comment faire ?
Merci.
 

babastioun

XLDnaute Nouveau
Bonjour babastioun, Fanfan,
Des progressbar, vous en trouverez une multitude alors difficile de choisir.
Un essai en PJ avec le status bar et un progressbar pour l'exemple.
Statusbar :
VB:
Application.StatusBar = "Progression : " & Format(i / lastRow, "0%")
Progressbar
Code:
USFPBP.PB lastRow, i
et voir userform USFPBP pour le code.
Bonjour merci à toi aussi Sylvanu, avec toutes vos réponse j'ai de quoi solutionner ma demande.
Encore merci et bonne journée.
 

fanfan38

XLDnaute Barbatruc
Les seul truc à parametrer c'est
VB:
    barre_progresse.Show 0    'affichage de l'userform
    For i = 2 To lastRow
      barre_progresse.actualiser CInt(100 * i / lastRow) 'mise à jour de la bar de progression

La seul macro de l'userform
Code:
Sub actualiser(taux As Integer)
    Barre.Width = (taux * Barretexte.Width) / 100 'c'est une image qui s'appelle barre, with étant sa taille
    
    Barretexte = taux & "%" 'c'est le label qui est au dessus
    If taux = 100 Then Unload Me ' si maxi fermeture de l'userform
    DoEvents 'suspend la macro pour traiter la barre de progression
    End Sub

A+ François
 

Discussions similaires

Réponses
5
Affichages
617

Statistiques des forums

Discussions
312 211
Messages
2 086 289
Membres
103 170
dernier inscrit
HASSEN@45