Icône de la ressource

VBA - Barre de progression sur la base d'un UserForm V3

Une Barre de Progression permet de faire patienter l'utilisateur lors de traitements longs et lui donne une information sur la progression de ces traitements.

Mise en œuvre très simple:
  1. A partir du fichier joint, il suffit d'importer le UserForm BarreProgression dans le projet VBA.
  2. Appeler la fonction BarreProgression.Display() avec les arguments décrits dans le code.
    VB:
    '---------------------------------------------------
    'Affichage de la barre de progression
    '
    'Appel:
    '-----
    'Call BarreProgression.Display(<arguments>)
    '
    'Arguments:
    '---------
    ' Titre         : Titre de la barre
    ' NbItems       : Nombre total d'items à traiter
    ' NoItem        : Numéro d'item en cours de traitement
    ' BarreWidth    : Largeur de la barre
    ' BarreHeight   : Hauteur de la barre
    '
    ' Return        : Valeur de progression de 0 à 100
    '               : -1 si touche ENTER utilisée
    '---------------------------------------------------
    Public Function Display(ByVal Titre As String, _
                            ByVal NbItems As Long, _
                            ByVal NoItem As Long, _
                            Optional ByVal BarreWidth As Double = 260, _
                            Optional ByVal BarreHeight As Double = 16) As Integer

    Le Module_Test de ce même fichier donne un exemple d'utilisation.
Originalité:
  • Avec la V2, la progression peut être, au choix du développeur, interrompue avec la touche <Entrée>.
    La touche <Escape> est plus naturelle pour cela mais pose problème si elle est déclenchée lorsque qu'un code s'exécute non protégé par un Application.EnableCancelKey = False.
    L'interruption captée au niveau de la Barre de Progression permet, si on le souhaite, de recevoir dans le traitement qui l'utilise l'indication d'une demande utilisateur d'interruption d'un traitement qui dure trop longtemps.
    En cas d'interruption acceptée, la fonction BarreProgression.Cancel() permet d'effacer le Barre de Progression.

  • Avec la V3, il devient possible d'augmenter ou de diminuer la taille de la Barre de Progression
Versions:
  • V1 - Version initiale
  • V2 - Ajout de l'interruption de la progression
  • V3 - Ajout des paramètres optionnels BarreWidth et BarreHeight pour éventuelleùent redimensionner la Barre de Progression

Barre.gif
  • Démo.gif
    Démo.gif
    79.3 KB · Affichages: 1 614