COMMENT CRÉER UNE BARRE DE PROGRESSION EN VBA A RÉUTILISER DANS TOUS VOS CLASSEURS EXCEL !

Guide « 108 astuces pour grands débutants sur Excel ! » Offert
Booster votre productivité en téléchargeant gratuitement votre ebook PDF des meilleures astuces pour les débutants et les pros d'Excel
Excel formation - 00 Astuces - 100
 

Une barre de progression permet de montrer à un utilisateur l’état d’avancé d’un processus de manière visuelle, en attendant l'execution d'un processus principal. Voyons comment créer une barre de progression en VBA à réutiliser dans tous vos projets. Pour les plus pressés, vous pourrez télécharger le fichier, je vous montre dans la vidéo comment l'insérer dans vos propres documents.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

Vous trouverez très régulièrement de nouvelles vidéos sur la chaîne, alors pensez à vous abonner pour ne manquer aucune astuce et devenir rapidement un pro d’Excel (cliquez-ici) !

 

1. Présentation

En règle générale, nous allons avoir besoin de mettre en place une barre de progression dans une macro commande VBA lorsque celle-ci va réaliser un nombre important d’opérations qui vont entraîner un certain temps de traitement.

Pour notre exemple, nous allons simplement actualiser la valeur contenue dans une cellule un très grand nombre de fois !

Excel formation - 038 Créer une barre de progression VBA - 01

Nous disposons donc ici d’une cellule contenant une valeur initiale (la valeur 10), et nous allons simplement modifier cette valeur pour y afficher un nombre aléatoire un très grand nombre de fois, disons 5000 fois !

Cette cellule porte le nom de _maCellule, ce qui nous permettra de pouvoir l’appeler en VBA de manière très simple.

Si vous ne maîtrisez pas encore le VBA, pas de panique, nous développerons chaque point dans le détail, mais pour apprendre à maîtriser ce langage qui vous permettra de démultiplier les possibilités offertes par Excel, vous pouvez suivre la formation offerte sur excelformation.fr.

Pour créer la macro, nous allons commencer par créer un bouton qui permettra de l’appeler (Insertion > Forme) :

Excel formation - 038 Créer une barre de progression VBA - 02

Puis nous dessinons simplement le rectangle qui représente le bouton :

Excel formation - 038 Créer une barre de progression VBA - 03

Ensuite, nous ajoutons un texte à ce bouton (Clic-droit > Modifier le texte) :

Excel formation - 038 Créer une barre de progression VBA - 04

Cela étant fait, nous pouvons maintenant ajouter une macro qui sera appelée lorsque nous cliquerons sur le bouton (clic-droit > Affecter une macro) :

Excel formation - 038 Créer une barre de progression VBA - 05

Dans la fenêtre qui s’affiche, nous saisissons le nom à donner à la macro dans la zone Nom de la macro, puis nous cliquons sur le bouton Nouvelle pour créer la macro :

Excel formation - 038 Créer une barre de progression VBA - 06

Cela a pour effet de lancer l’éditeur VBE au sein d’un tout nouveau module (module1), dans lequel la macro modifierValeurCellule a été ajoutée.

L’utilisation d’un bouton pour lancer une macro VBA est l’une des nombreuses possibilités offertes par Excel. Pour toutes les découvrir, je vous invite à consulter le chapitre dédié de la formation VBA d’excelformation.fr en cliquant ici.

Nous pouvons à présent insérer le code de la macro comme suit :

 

 Sub modifierValeurCellule()
    Dim i As Long
    Randomize
    
    For i = 1 To 5000
        [_maCellule] = Rnd
    Next
End Sub 

 

 

Excel formation - 038 Créer une barre de progression VBA - 07

 

Ce code très simple se contente de lancer 5000 une boucle dans laquelle la valeur de la cellule _maCellule va prendre une valeur aléatoire comprise entre 0 et 1.

Il s’agit évidemment d’une macro sans le moindre intérêt en dehors du fait de demander un certain temps d’exécution et donc de rendre l’usage d’une barre de progression plutôt utile.

Avant d’aller plus loin dans la lecture de ce tutoriel, vous pouvez lancer la macro une première fois, afin de tester si tout se passe normalement.

De cette manière, vous pouvez ajuster le nombre de répétitions de la boucle afin que la procédure ne prenne pas trop de temps, en fonction des capacités de votre ordinateur.

Sachez en effet, que la génération d’un nombre aléatoire demande en effet un certain temps de traitement (imperceptible lorsque celui-ci n’est exécuté qu’une seule fois, mais beaucoup plus significatif lorsque l’opération est répétée).

 

2. Création de la barre de progression

Deux options s’offrent à nous pour créer la barre de progression :

  • Créer un graphique et modifier la valeur d’une cellule,
  • Créer un userform et modifier dynamiquement la taille d’un élément

Evidemment, l’effet sera beaucoup plus intéressant dans le cadre de la deuxième option, et c’est bien évidemment ce que nous allons voir dans le cadre de ce tutoriel.

Pour créer le nouvel Userform, rendez-vous dans le menu Insertion > UserForm :

Excel formation - 038 Créer une barre de progression VBA - 08

Ensuite, nous pouvons construire la fenêtre dans laquelle se trouvera insérée la barre de progression :

  • Modifier le titre de cet UserForm (champs Caption de la fenêtre des propriétés) :

Excel formation - 038 Créer une barre de progression VBA - 09

  • Modifier la taille de l’UserForm :

Excel formation - 038 Créer une barre de progression VBA - 10

  • Insérer un champ Intitulé, qui pour le moment prend la valeur de « 0% » et pour lequel nous centrons le texte (Mettre la propriété TextAlign sur fmTextAlignCenter) :

Excel formation - 038 Créer une barre de progression VBA - 11

  • Ainsi qu’un champ image, qui va avoir exactement la même largeur que le champ de texte que nous avons inséré juste avant (nous verrons plus bas que cela est très important) :

Excel formation - 038 Créer une barre de progression VBA - 12

  • Que nous pouvons simplement personnaliser en modifiant les valeurs des couleurs de fond et de bordure depuis la fenêtre des propriétés :

Excel formation - 038 Créer une barre de progression VBA - 12

Juste avant de pouvoir coder l’évolution de la barre de progression, nous allons attribuer des noms clairs aux deux éléments que nous venons d’insérer pour pouvoir les modifier simplement en VBA :

  • barreProgression : désigne la barre de progression,
  • textePourcentage : désigne le texte du pourcentage de progression
  • maBarre : le nom de l’UserForm

Excel formation - 038 Créer une barre de progression VBA - 14

Enfin, effectuons un clic-droit sur le nom de l’UserForm dans la fenêtre de navigation du projet afin de sélectionner Code :

Excel formation - 038 Créer une barre de progression VBA - 15

Dans cette feuille de code, nous allons insérer deux procédures.

Tout d’abord la procédure qui permet d’afficher la barre de progression :

 

Sub afficher()
    Me.Show 0
End Sub 

 

L’instruction Me.Show permet de lancer l’UserForm, et l’argument « 0 » permet de définir que celui-ci n’est pas modal, c’est-à-dire que les macros vont continuer de fonctionner en tâche de fond en parallèle.

Ensuite nous insérons une seconde procédure qui va se charger d’actualiser la progression de la barre :

 

Sub actualiser(taux As Integer)
    
    barreProgression.Width = (taux * textePourcentage.Width) / 100
    textePourcentage = taux & "%"
    If taux = 100 Then
        Unload Me
    End If
    DoEvents
End Sub 

 

Ici, la procédure actualiser attend un argument de type Integer qui porte le nom de taux.

Il s’agit d’un nombre allant de 0 à 100 qui va représenter l’évolution de la barre.

Ensuite, pour modifier la largeur de la barre de progression, nous intervenons sur la propriété Width de l’objet barreProgression, et nous lui affectons pour valeur la largeur de textePourcentage (comme nous avons vu plus haut, les deux objets textePourcentage et barreProgression ont exactement la même largeur) multiplié par la valeur de taux, le tout divisé par 100.

Cela étant fait, nous pouvons modifier le texte du champs textePourcentage pour y afficher le taux de progression en toute lettres.

Enfin, lorsque la valeur de taux est égale à 100, alors cela signifie que le traitement est terminé, nous pouvons alors masquer la barre de progression (Unload Me).

Pour finir, nous ajoutons simplement l’instruction DoEvents qui permet d’actualiser l’affichage de la barre de progressions.

Et voilà, notre barre de progression est maintenant pleinement fonctionnelle, il ne nous reste plus qu’à insérer celle-ci directement dans la procédure

Pour cela, nous commençons par l’afficher en lançant la procédure :

 

 maBarre.afficher 

 

À placer bien évidemment juste avant la boucle for.

Et pour terminer, à l’intérieur de celle-ci, nous actualisons simplement l’affichage de la barre de progression, grâce à l’instruction maBarre.actualiser (c’est-à-dire la procédure « actualiser » qui se trouve être un élément de l’objet UserForm « maBarre ») avec pour argument le nombre entier correspondant à l’état d’avancement de i pour arriver jusqu’à 5000.

 

Sub modifierValeurCellule()
    Dim i As Long
    Randomize
    
    maBarre.afficher
    
    For i = 1 To 5000
        [_maCellule] = Rnd
        maBarre.actualiser CInt(100 * i / 5000)
    Next
End Sub 

 

Noter l’utilisation de la fonction CInt() qui permet de convertir un nombre en entier (le résultat est donc ici tronqué).

Excel formation - 038 Créer une barre de progression VBA - 16

Comme vous pouvez le constater, dans le cadre de ce tutoriel, nous avons totalement séparé le fonctionnement de la barre de progression et la construction de la macro.

Cela permet de pouvoir réutiliser à volonté cette barre de progression, il suffit en effet d’exporter l’UserForm dans un autre fichier, puis d’avoir recours aux procédures de la manière que ce que nous venons de voir !

Je vous montre dans la vidéo disponible au tout début du tutoriel comment procéder pour réutiliser la barre de progression dans tous vos projets !

 



Articles qui pourraient vous intéresser

Comment remplir automatiquement des cellules d'un tableau Excel avec la complétion automatique
Comment regrouper (ou pas !) les dates d’un tableau croisé dynamique (TCD) sur Excel ?
Comment connecter Excel sur Internet, sans VBA ?
Comment traduire automatiquement des fonctions Excel dans leur version originale ?
Comment analyser les résultats d’un sondage ou questionnaire avec Excel ?
Comment utiliser la fonction SOMME.SI pour effectuer des recherches sur des textes sur Excel ?
Comment calculer et étudier des écarts budgétaires avec Excel ?
Comment verrouiller et protéger un objet (graphique, image, zone de texte…) sur Excel ?
Comment formater des dates correctement dans Excel ?
Comment protéger le formatage des cellules tout en autorisant la saisie de données dans Excel ?
Comment transformer une photo en tableau Excel ?
Comment créer un publipostage automatique avec Excel ? (sans Word !)

Contact - Plan du site - À propos - Contact

© Excelformation.fr 2018-2024 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.