/ / Indicateur de progression dans Excel VBA

Indicateur de progression dans Excel VBA

Ci-dessous, nous examinerons un programme en Excel VBA qui crée un indicateur de progression. Nous avons gardé l'indicateur de progression aussi simple que possible, tout en ayant un aspect professionnel. Êtes-vous prêt?

Le formulaire utilisateur que nous allons créer se présente comme suit:

Indicateur de progression dans Excel VBA

Pour créer ce Userform, exécutez les étapes suivantes.

1. Ouvrez Visual Basic Editor. Si l'explorateur de projet n'est pas visible, cliquez sur Affichage, Explorateur de projets.

2. Cliquez sur Insérer, Userform. Si la boîte à outils n'apparaît pas automatiquement, cliquez sur Affichage, Boîte à outils. Votre écran devrait être configuré comme ci-dessous.

Configuration de l'écran du formulaire utilisateur dans Excel VBA

Ce Userform consiste uniquement en trois contrôles. Un contrôle de cadre et deux contrôles d’étiquette.

3. Ajoutez le contrôle de cadre. Vous pouvez le faire en cliquant sur Cadre dans la boîte à outils. Ensuite, vous pouvez faire glisser un contrôle de cadre sur le Userform. Vous devez modifier certaines propriétés de ce contrôle de cadre. Cliquez avec le bouton droit de la souris sur le contrôle du cadre, puis cliquez sur Propriétés. Videz le champ Légende, réglez la hauteur sur 24 et la largeur sur 204.

4 Ajoutez le premier contrôle d'étiquette et placez-le dans le contrôle Frame. Cliquez avec le bouton droit de la souris sur le contrôle d'étiquette, puis cliquez sur Propriétés. Modifiez le nom en barres, BackColor en surbrillance, videz le champ Légende, réglez la hauteur sur 20 et la largeur sur 10.

5 Ajoutez le deuxième contrôle d'étiquette et placez-le au-dessus du contrôle Frame. Cliquez avec le bouton droit de la souris sur le contrôle d'étiquette, puis cliquez sur Propriétés. Changez le nom en texte et changez la légende en "0% terminé".

6. Modifiez la légende de Userform en indicateur de progression.

Une fois que cela est terminé, le résultat doit être cohérent avec l'image du Userform présentée précédemment.

7. Placez un bouton de commande sur votre feuille de calcul et ajoutez la ligne de code suivante pour afficher le formulaire utilisateur:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Si vous avez traversé l'autre UserformSur les exemples de ce site, vous savez que le moment est venu de créer le sous-formulaire UserForm_Initialize. Ce sous-programme s'exécute automatiquement chaque fois que le Userform est chargé. Ainsi, lorsque vous utilisez la méthode Show pour le Userform, le code sera automatiquement exécuté. Au lieu du Sub UserForm_Initialize, nous créons le Sub UserForm_Activate. En utilisant ce sous-fichier, Excel VBA peut mettre à jour le formulaire Userform pour afficher la progression de la macro.

8. Ouvrez Visual Basic Editor.

9. Dans l'Explorateur de projet, cliquez avec le bouton droit sur UserForm1, puis cliquez sur Afficher le code.

10. Choisissez Userform dans la liste déroulante de gauche. Choisissez Activer dans la liste déroulante de droite.

11. Ajoutez la ligne de code suivante:

Private Sub UserForm_Activate()

code

End Sub

Explication: ce sous appelle un autre code sous-nommé que nous allons créer dans une minute. Confus? Vous pouvez consulter notre chapitre Fonction et Sous-chapitre pour en savoir plus sur les sous-programmes. Si vous êtes pressé, suivez les étapes suivantes et tout ira bien.

12 Placez le code sous-nommé dans un module (dans Visual Basic Editor, cliquez sur Insérer, Module). C'est juste un exemple. C'est l'endroit idéal pour ajouter votre propre code lorsque vous souhaitez utiliser cet indicateur de progression pour votre propre macro. Le code ressemble à ce qui suit.

Sub code()

Dim i As Integer, j As Integer, pctCompl As Single

Sheet1.Cells.Clear

For i = 1 To 100
    For j = 1 To 1000
        Cells(i, 1).Value = j
    Next j
    pctCompl = i
    progress pctCompl
Next i

End Sub

Explication: d'abord, on initialise certaines variables. Ensuite, nous effaçons la feuille1. Nous utilisons une double boucle pour afficher les valeurs de 1 à 1000 dans les 100 premières lignes de la feuille de calcul. Cela gardera Excel VBA occupé pendant un moment et nous donnera l’occasion de voir la progression de la macro. La variable pctCompl (abréviation de pourcentageCompleted) mesure la progression de la macro. Enfin, nous appelons un autre sous-progrès nommé et passons la valeur de la variable pctCompl pour mettre à jour le Userform. De cette façon, nous pouvons voir les progrès de la macro!

13. Ajoutez un autre sous progress nommé. Le code se présente comme suit:

Sub progress(pctCompl As Single)

UserForm1.Text.Caption = pctCompl & "% Completed"
UserForm1.Bar.Width = pctCompl * 2

DoEvents

End Sub

Explication: la première ligne de code modifie la légende du premier contrôle d'étiquette. La deuxième ligne de code modifie la largeur du deuxième contrôle d'étiquette. Ajoutez DoEvents pour mettre à jour le Userform.

14. Quittez Visual Basic Editor et cliquez sur le bouton de commande de la feuille:

Résultat:

Résultat de l'indicateur de progression

Remarque: pour cette macro, nous avons utilisé la variable i pour mesurer les progrès. Par exemple, à la ligne 11, 10% est terminé. Cela peut être différent pour votre macro. La technique consistant à transmettre la valeur de la variable pctCompl au sous-processus de mise à jour de Userform reste la même.

Lisez aussi: