Je me nomme Denis (Québec, Canada) et suis nouveau sur ce forum.
J'ai un fichier Excel monté en VBA avec tableaux croisés dynamiques et autres.
J'ai créé des boutons (sauvegarde, fermer et Mise à jour du document.)
La mise à jour est particulièrement longue. J'aimerais y attacher une barre de progression (%) afin de suivre l'évolution de la mise à jour.
Après des heures de recherches le plus près que j'ai pu réaliser est d'avoir l'apparition de la boîte de dialogue, mais pas de défilement ou encore avoir un défilement et par la suite la mise à jour. Mais rien qui puisse se faire simultanément.
On peut insérer un ProgressBar dans le StatusBar pour éviter l'utilisation d'un useform. C'est une autre méthode simple de voir la progression d'un événement. Le code est très simple à copier dans votre code , et idem pour l'appel de la fonction...
On peut insérer un ProgressBar dans le StatusBar pour éviter l'utilisation d'un useform. C'est une autre méthode simple de voir la progression d'un événement. Le code est très simple à copier dans votre code , et idem pour l'appel de la fonction...
Merci d'avoir répondu à mon appel à l'aide. Concernant les barres de progression, je suis débutant. Ta solution me semble correspondre à mes besoins. J'aurais quelques questions à te pauser, si cela t e convient.
Petit rappel. Je cherche une solution progress bar pouvant s'effectuer avec un bouton refreshall (actualiser tout à l'aide d'un Userform.
Option ExplicitPourquoi retrouve-t-on cette écriture au haut de chaque page du développeur?
#If VBA7 Then Première fois que je vois ce type d'écriture. Que signifie #? Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Pourquoi ce texte en rouge?
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
Sub a() En quoi ce Sub (bouton test, je crois) a un rappoert avec la macro Refreshall que je veut traiter?
Dim i As Integer
For i = 1 To 100
BarreProgression 100, i Que signifie cette ligne?
Sleep 100 Que signifie cette ligne (sleep)?
Next i
End Sub
Petit rappel, je suis sur Office 365 professionnel Ecxel 2016.
Bonsoir Denissmile,
Désolé de vous avoir perturbé, les questions que vous posez ne concerne pas le progressbar mais simplement pour le test de ce progressbar.
Sleep est une librairie de windows permettant de faire un timer. Sleep 100 permet d'attendre 100ms. il est utilisé dans le test pour simuler une progression.
Pour le progressbar seul, utilisez la macro suivante :
VB:
' Affiche un ProgressBar dans le StatusBar
Sub ProgressbarStatusBar(Titre, Valeur, Total)
If Titre = "" Then ' Si Titre vide, supprimer progressbar
Application.StatusBar = ""
Else ' Sinon
Pourcent = Int(100 * Valeur / Total) ' Calcul du % d'avancement
Plein = Int(50 * Valeur / Total) ' Calcul du nombre de pavés pleins
Vide = 50 - Plein ' Déduction du nombre de pavés vides ( pour faire 50 au total )
Application.StatusBar = Titre & " - Progression : " & Pourcent & "% " & _
WorksheetFunction.Rept(ChrW(9608), Plein) & _
WorksheetFunction.Rept(ChrW(9618), Vide)
End If
End Sub
et pour l'appeler dans votre macro, vous faites :
Code:
ProgressbarStatusBar Titre, Valeur, Total
avec Titre le titre que vous voulez donner.
Valeur la valeur calculer pour le %
Total la valeur max.
Par ex :
Bonsoir Denissmile,
Désolé de vous avoir perturbé, les questions que vous posez ne concerne pas le progressbar mais simplement pour le test de ce progressbar.
Sleep est une librairie de windows permettant de faire un timer. Sleep 100 permet d'attendre 100ms. il est utilisé dans le test pour simuler une progression.
Pour le progressbar seul, utilisez la macro suivante :
VB:
' Affiche un ProgressBar dans le StatusBar
Sub ProgressbarStatusBar(Titre, Valeur, Total)
If Titre = "" Then ' Si Titre vide, supprimer progressbar
Application.StatusBar = ""
Else ' Sinon
Pourcent = Int(100 * Valeur / Total) ' Calcul du % d'avancement
Plein = Int(50 * Valeur / Total) ' Calcul du nombre de pavés pleins
Vide = 50 - Plein ' Déduction du nombre de pavés vides ( pour faire 50 au total )
Application.StatusBar = Titre & " - Progression : " & Pourcent & "% " & _
WorksheetFunction.Rept(ChrW(9608), Plein) & _
WorksheetFunction.Rept(ChrW(9618), Vide)
End If
End Sub
et pour l'appeler dans votre macro, vous faites :
Code:
ProgressbarStatusBar Titre, Valeur, Total
avec Titre le titre que vous voulez donner.
Valeur la valeur calculer pour le %
Total la valeur max.
Par ex :
Merci d'avoir répondu à mon appel à l'aide. Concernant les barres de progression, je suis débutant. Ta solution me semble correspondre à mes besoins. J'aurais quelques questions à te pauser, si cela t e convient.
Petit rappel. Je cherche une solution progress bar pouvant s'effectuer avec un bouton refreshall (actualiser tout à l'aide d'un Userform.
Option Explicit Pourquoi retrouve-t-on cette écriture au haut de chaque page du développeur?
#If VBA7 Then Première fois que je vois ce type d'écriture. Que signifie #?
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Pourquoi ce texte en rouge?
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
Sub a() En quoi ce Sub (bouton test, je crois) a un rappoert avec la macro Refreshall que je veut traiter?
Dim i As Integer
For i = 1 To 100
BarreProgression 100, i Que signifie cette ligne?
Sleep 100 Que signifie cette ligne (sleep)?
Next i
End Sub
Petit rappel, je suis sur Office 365 professionnel Ecxel 2016.
Merci d'avoir répondu à mon appel à l'aide. Concernant les barres de progression, je suis débutant. Ta solution me semble correspondre à mes besoins. J'aurais quelques questions à te pauser, si cela t e convient.
Petit rappel. Je cherche une solution progress bar pouvant s'effectuer avec un bouton refreshall (actualiser tout à l'aide d'un Userform.
Option Explicit Pourquoi retrouve-t-on cette écriture au haut de chaque page du développeur?
#If VBA7 Then Première fois que je vois ce type d'écriture. Que signifie #?
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Pourquoi ce texte en rouge?
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
Sub a() En quoi ce Sub (bouton test, je crois) a un rapport avec la macro Refreshall que je veut traiter?
Dim i As Integer
For i = 1 To 100
BarreProgression 100, i Que signifie cette ligne?
Sleep 100 Que signifie cette ligne (sleep)?
Next i
End Sub
Petit rappel, je suis sur Office 365 professionnel Ecxel 2016.
Avez vous lu le post #5 ??? je vous l'explique et vous dit que vous n'en n'avez nul besoin.
Quant à "Option explicit" il vous oblige à déclarer toutes vos variables par un Dim.
On peut le supprimer, on peut ne pas déclarer les variables mais cela présente des risques d'erreurs d'orthographe sur les noms de variables et à conduire à des bugs difficiles à identifier.
Avez vous lu le post #5 ??? je vous l'explique et vous dit que vous n'en n'avez nul besoin.
Quant à "Option explicit" il vous oblige à déclarer toutes vos variables par un Dim.
On peut le supprimer, on peut ne pas déclarer les variables mais cela présente des risques d'erreurs d'orthographe sur les noms de variables et à conduire à des bugs difficiles à identifier.
Oui mais vous m'avez mentionné que c'étais Dudu2 qui était le propriétaire du fichier Excel et c'est lui que je tente de joindre. Je suis aussi nouveau sur ce forum.
Merci d'avoir répondu à mon appel à l'aide. Concernant les barres de progression, je suis débutant. Ta solution me semble correspondre à mes besoins. J'aurais quelques questions à te pauser, si cela t e convient.
Petit rappel. Je cherche une solution progress bar pouvant s'effectuer avec un bouton refreshall (actualiser tout à l'aide d'un Userform.
Le bouton test avctive qu'elle macro?
La macro refreshall serais considérer de quelle façon dans le bouton test?
Option Explicit Pourquoi retrouve-t-on cette écriture au haut de chaque page du développeur?
#If VBA7 Then Première fois que je vois ce type d'écriture. Que signifie #?
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Pourquoi ce texte en rouge?
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
Sub a() En quoi ce Sub (bouton test, je crois) a un rappoert avec la macro Refreshall que je veut traiter?
Dim i As Integer
For i = 1 To 100
BarreProgression 100, i Que signifie cette ligne?
Sleep 100 Que signifie cette ligne (sleep)?
Next i
End Sub
Petit rappel, je suis sur Office 365 professionnel Ecxel 2016.