XL 2010 VBA - Barre de progression

delahaiel

XLDnaute Nouveau
Bonjour à Toutes et à Tous,
Je sais qu'il y a déjà beaucoup de discussion au sujet des barre de progression en VBA. Sauf que je n'ai jamais réussi à implémenter l'une d'entre elles dans mon propre fichier. Pour commencer, je tiens à souligner que je n'ai jamais pratiqué le VBA à ce jour et suis une complète néophite. Mon problème est : j'ai un fichier excel conçu par quelqu'un d'autre qui dans un onglet comporte un bouton (LoadButton / CommandButton) qui en cliquant dessus permet de charger certaines données situées sous l'onglet synthèse de mon fichier excel actif et de charger également des données provenant d'un onglet nommé également synthèse mais données provenant d'autres fichiers excel stockés sur mon PC dans le même dossier. On me demande aujourd'hui d'intégrer une barre de progression car le chargement des données est un peu long. Or je n'arrive pas à le faire. j'ai tenté de créer un UserForm et d'autres manipulations. D'appeler ce userform dans mon LoadButton... mais rien n'y fait, je n'y parviens pas. Si quelqu'un pouvait m'aider cela serait génial. Un grand merci d'avance.
 

Dudu2

XLDnaute Barbatruc
Bonjour,
On me demande aujourd'hui d'intégrer une barre de progression car le chargement des données est un peu long.
Perso on m'a demandé d'expliquer les equations de la relativité restreinte à des gens, et bien que ce soit mon rêve de pouvoir le faire, j'ai décliné l'invitation.

Quel est ce "On" (sans 'c' devant à priori) qui te demande un truc qui n'est pas dans tes compétences ?
Si c'est un Manager, c'est un idiot à qui tu dois préalablement demander une formation VBA.
 

Dudu2

XLDnaute Barbatruc
Le "on" est effectivement un manager
Je m'en doutais un peu !

Comme tu ne connais rien à VBA, tu n'as pas d'autre choix que de le faire faire par quelqu'un de ce forum d'entre-aide (ou d'un autre peu importe). Ou bien quelqu'un de ton entreprise qui a la compétence.

Si le fichier n'a rien de confidentiel (dans ses données et dans ses traitements) tu peux le poster ici et quelqu'un (voire même plusieurs "forumeux" enthousiastes) s'y collera(ont).

Si le fichier est confidentiel il faut que tu le rende anonyme en remplaçant les noms par des valeurs quelconques (Nom1, Nom2, etc...)

Si tu ne peux pas le faire, alors il faut que tu me donnes un email en message privé (cliquer sur le pseudo à gauche du message) et on se contactera pour résoudre ton problème. Car il faudra aussi pas mal d'autres explications de contexte pour produire cette barre de progression.
 

job75

XLDnaute Barbatruc
Un exemple de barre de progression dans le fichier joint avec cette macro dans le code de la feuille :
VB:
Sub Go()
Dim duree#, L#, deb#, t#
duree = 30 'secondes, à adapter
L = [L3].Left - [D3].Left
Label1.Left = [D3].Left + 0.5
deb = Timer
Do
    t = Timer - deb
    If t > duree Or t < 0 Then Exit Do
    Label1.Width = L * t / duree
    Label1 = Format(t / duree, " 0.0 %")
    DoEvents
Loop
Label1.Width = L - 0.5
Label1 = " 100 %"
End Sub
Sur le fichier réel il faudra estimer la variable duree en extrapolant le temps passé sur les 1ères boucles.

Salut Dudu2, patricktoulon.
 

Pièces jointes

  • Progression(1).xlsm
    20.3 KB · Affichages: 51

delahaiel

XLDnaute Nouveau
Merci beaucoup pour le code. Merci très sincèrement à vous tous pour votre aide.

Dans mon fichier j'ai un bouton commande et une listbox dans laquelle on fait une sélection puis on clique sur le bouton commande (nommé LoadButton). Est-ce que je dois mettre ce code dans le code du loadbutton. Concernant la boucle, c'est bine là où j'ai un gros soucis, car je n'arrive pas à comprendre où elle est et comme le nombre de fichiers appelés par cette commande est différent je n'arrive pas ) m'en sortir. Je m'explique le fichier sur lequel je dois travailler doit servir de modèle. Donc dans mon onglet où il y a la ListBox et le LoadButton j'appelle en cliquant sur ce bouton des données de mon onglet synthèse et des données de l'onglet synthèse d'autres fichiers dont le nombre peut changer suivant ce qui est étudié dans le fichier modèle... Ce fichier a été développé pour créer un module qui fait appel à d'autres modules. Il sert de synthèse.


Je copie colle le code du LoadButton :

Private Sub LoadButton1_Click()
MsgBox "Merci de patienter pendant le chargement des données"
Dim ColSheets As Collection
Dim SheetObj As Sheet
Set ColSheets = New Collection
Dim selectedIndex As New Collection
For x = 0 To ListBox1.ListCount - 1

Dim filePath As String

Set SheetObj = New Sheet
If ListBox1.Selected(x) = True Then
selectedIndex.Add ListBox1.Index
If ListBox1.Index = 1 Then
Dim Worksheet As Worksheet
Set Worksheet = Sheets("Adequation_totale")
ColSheets.Add FillSheet(Worksheet)
Else
filePath = "C:\Work\Clas Excel\" + ListBox1.List(x) + ".xlsx"
Set SheetObj = ProcessSheet(filePath)

If IsNull(SheetObj) = False Then
ColSheets.Add SheetObj
End If
End If
End If
Next x
InitCells
For i = 0 To ColSheets.Count - 1
ApplySheetCells ColSheets(i + 1)
Next i
For i = 1 To selectedIndex.Count
ListBox1.Selected(i - 1) = True
Next i

End Sub
 

Dudu2

XLDnaute Barbatruc
@delahaiel,

Question #1: dans l'état actuel, ce code a-t-il été utilisé ?

J'en doute car ce bout de code ne peut pas fonctionner. En plus je ne le comprends pas et on n'a pas les fonctions citées dans le code.

On ne peut ajouter une barre de progression fonctionnelle que dans un code qui fonctionne.

Edit: oui j'ai reçu un message.
 

Discussions similaires

Réponses
5
Affichages
557
Réponses
10
Affichages
377