Indicateur de progression dans Excel VBA
nous examinerons ci-dessous à un programme dans Excel VBA qui crée un indicateur de progression. Nous avons gardé l’indicateur de progression aussi simple que possible, mais il est plus professionnel. Es-tu prêt? Le Userform nous allons créer se présente comme suit:
Pour créer cette Userform, exécutez les étapes suivantes.
-
Ouvrez le Visual Basic Editor. Si l’Explorateur de projets n’est pas visible, cliquez sur Afficher, Project Explorer.
-
Cliquez sur Insérer, Userform. Si la boîte à outils n’apparaît pas automatiquement, cliquez sur Affichage, Boîte à outils. Votre écran doit être configuré comme ci-dessous.
Cette Userform ne se compose que de trois contrôles. Un contrôle de trame et deux contrôles d’étiquette.
-
Ajoutez le contrôle du cadre. Vous pouvez le faire en cliquant sur l’image de 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 trame. clic droit sur le contrôle du cadre, puis cliquez sur Propriétés. Vide le champ Légende, régler la hauteur et la largeur de 24 à 204.
-
Ajouter le premier contrôle de l’étiquette et placez-le dans le contrôle Frame. clic droit sur le contrôle de l’étiquette, puis cliquez sur Propriétés. Changer le nom de Bar, BackColor pour mettre en évidence, vider le champ Légende, définissez la hauteur à 20 et à 10. Largeur
-
Ajouter la deuxième commande de l’étiquette et placez-le au-dessus du contrôle Frame.
clic droit sur le contrôle de l’étiquette, puis cliquez sur Propriétés.
Modifier le nom du texte et modifier la légende à « 0% terminé ».
-
Modifier la légende du Userform indicateur d’avancement.
Une fois cet exercice terminé, le résultat devrait être compatible avec l’image du Userform indiqué précédemment.
-
Placez un bouton de commande sur votre feuille de calcul et ajoutez la ligne de code ci-dessous pour afficher la Userform:
Private Sub CommandButton1_Click() UserForm1.Show End Sub
Si vous avez passé par les autres exemples de formUtilisateur sur ce site, vous savez que cela est le temps de créer la sous UserForm_Initialize. Ce sous exécute automatiquement chaque fois que le Userform est chargé. Ainsi, lorsque vous utilisez la méthode Show pour le Userform, le code sera exécuté automatiquement. Au lieu de la Sous UserForm_Initialize, nous créons la Sous UserForm_Activate. En utilisant ce sous, Excel VBA peut mettre à jour le Userform pour montrer les progrès de la macro.
-
Ouvrez le Visual Basic Editor.
-
Dans l’Explorateur de projets, cliquez droit sur UserForm1 puis cliquez sur Afficher le code.
-
Choisissez Userform dans la liste déroulante de gauche. Choisissez Activer de la droite liste déroulante.
-
Ajouter la ligne de code suivant:
Private Sub UserForm_Activate() code End Sub
Explication: ce sous appelle un autre sous le nom de code que nous allons créer dans une minute. Confus? Vous pouvez passer par notre fonction et sous chapitre pour en savoir plus sur les sous-marins. Si vous êtes pressé, il suffit d’exécuter les étapes suivantes et vous serez très bien.
-
Placez le sous le nom de code dans un module (Dans l’éditeur Visual Basic, cliquez sur Insérer, Module). C’est juste un exemple. C’est l’endroit pour ajouter votre propre code lorsque vous souhaitez utiliser cet indicateur de progression pour votre propre macro. Le code se présente comme 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, nous initialize certaines variables. Ensuite, nous avons clairement sheet1.
Nous utilisons une double boucle pour montrer les valeurs de 1 à 1000 dans les 100 premières lignes de la feuille de calcul. Cela permet de garder Excel VBA occupé pendant un certain temps et nous donne l’occasion de voir les progrès de la macro. La variable pctCompl (abréviation de percentageCompleted) mesure les progrès de la macro. Enfin, nous appelons un autre sous le nom de progrès et passer la valeur de la variable pctCompl mettre à jour le Userform. De cette façon, nous pouvons voir les progrès de la macro! 13. Ajouter un autre progrès sous le nom. 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 change la légende du premier contrôle de l’étiquette. La deuxième ligne de code modifie la largeur de la seconde commande d’étiquette. Ajouter DoEvents mettre à jour le Userform.
-
Quittez l’éditeur Visual Basic, puis cliquez sur le bouton de commande sur la feuille:
Résultat:
Remarque: pour cette macro, nous avons utilisé la variable i pour mesurer les progrès.
Par exemple, à la ligne 11, 10% est terminée. Cela peut être différent pour votre macro. La technique de passer la valeur de la variable pctCompl au sous progrès de mettre à jour le Userform reste le même.