[VBA Excel 2k] Barre de Progression

Fermé
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 - 21 juil. 2009 à 08:54
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 - 21 juil. 2009 à 09:57
Bonjour,
J'ai un petit soucis qui se décompose en deux questions.
Mon objectif : Je compte réaliser une barre de chargement sous Excel pour indiquer à l'utilisateur une sorte de décompte. Le Décompte se ferait en seconde ou par modification de la longueur d'une barre, avec une mise à jour de l'affichage de la fenêtre, toutes les secondes. La progress barre n'est pas obliger de tenir compte de la macro,je connais le temps qu'elle met pour se réaliser donc je pourrais arrondir après.

Donc première question, est-il possible de créer une macro qui dis "Patienter encore " & valeurseconde & " secondes" dans une genre de messagebox, avec une mise à jour toutes les secondes, alors que pendant le décompte, ma macro principale se déroule et s'achève.

Deuxième question : Je sais qu'il existe des "ProgressBar", est-ce un module intégéré à VBA( que je ne possède pas apparement), où peut-on en créer une personelle ?

Merci d'avance =)

8 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
21 juil. 2009 à 09:05
Salut,

Sur la boîte à outiles ou dans le menu Outils / Contrôles supplementaires de VBA Editor tu as le côntrole Microsoft ProgressBar Control.
Mais tu peux programmer par toi même la barre de progression si tu veux.

Pour la 1ère question, tant qu'on peut créer une barre de progression, c'est bien possible.

Tu trouveras dans cette discussion des exemple
https://www.developpez.net/forums/d56817/logiciels/microsoft-office/general-vba/creer-barre-progression-sous-vba/

Sinon tu peux regarde ça pour t'inspirer
3
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 359
21 juil. 2009 à 09:14
Leur barre de progression fonctionne toujours en boucle, quelque soit le site où je vais...

===> toujours le même code d'ailleurs
If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
Cells.Clear
Counter = 1
RowMax = 200
ColMax = 10
For r = 1 To RowMax
For c = 1 To ColMax
Cells(r, c) = Int(Rnd * 1000)
Counter = Counter + 1
Next c
PctDone = Counter / (RowMax * ColMax)
Call UpdateProgress(PctDone)
Next r
Unload UserForm1
End Sub

Mais ce n'est pas ce que je recherches, je cherche juste à réaliser ceci :
1 - Cliquer Bouton.
2 - Affiche la barre de progression 10 secondes
3 - Commence la macro.
4 - La macro met à jour la valeur de la barre de progression à 5 secondes.
5 - Continue et Termine la macro.
6 - Affiche la barre de progression avec 0 secondes, "Opération terminée"

Tu vois le schéma ?

Sinon pour le "Controles complémentaires", je n'y es pas accès, c'est étrange bizarre, c'est le seul paramètre grisé....
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
21 juil. 2009 à 09:25
Salut,

quelque soit le site où je vais...
T'es sûr que tu as regardé partout?! ;-))
Voici un exemple qui pourra t'interesser
http://sn1.chez-alice.fr/presentation/progression.htm
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 359
21 juil. 2009 à 09:27
C'est le premire site que j'avais trouvé =D
La barre est pas mal mais ne fonctionne pas avec ma macro :x
J'relis tout ça et j'te dis ça dans 2 min.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 359
21 juil. 2009 à 09:36
C'est encore une système de boucle :x

" Pour une boucle de 10000 cyles le temps de calcul est de 7 secondes "
For ii = 1 To n
Call u_progress(ii / n, "patientez,", départ, pctj, 0.1)
Call progression("patientez", ii / n, départ, pcti, 1, 16)
Cells(ii).Value = "trois"

<= tout fonctionne la dessus

J'comprends pas trop où tu veux en venir ? =)
explicite
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 359
21 juil. 2009 à 09:46
J'ai réassayé avec son code, mais le soucis vient du fait que comme ce sont des boucles, lorsque je l'inclus ma macro dans le code, il execute ma macro et la termine pour ensuite finir par les mises à jour de ma barre de progression.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
21 juil. 2009 à 09:51
Re,

Voici un exemple qui s'approche de ta situation, mais il utilise le contrôle
https://codes-sources.commentcamarche.net/
Il utilise l'objet Timer
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 359
21 juil. 2009 à 09:57
Je n'ai pas accès à cete fonction, le controle complémentaire est grisé :s
0