Barre de progression sous Excel
Mistral_13200
Messages postés
649
Statut
Membre
-
Mistral_13200 Messages postés 649 Statut Membre -
Mistral_13200 Messages postés 649 Statut Membre -
Bonjour à tous,
Je fonctionne sous Windows XP SP3 et Excel 2003. J'ai créé un classeur dans lequel, par macro, je sauvegarde, à un instant donné, une des feuilles dans un nouveau classeur. Selon l'importance de cette feuille cela prends +/- de tps. Je souhaiterais afficher une barre de progression pendant le déroulement de cette macro. J'ai cherché ici même et j'ai trouvé l'exemple ci-dessous :
Je l'ai testé et cela me convient parfaitement. Cette macro fonctionne sur une boucle avec une progression de la barre à chaque itération. Moi ce que j'ai souhaiterais c'est quelle démarre au début de ma macro et qu'elle s'arrête à la fin et je n'arrive pas à l'intégrer à ma macro.
Pouvez-vous m'aider.
D'avance merci
Mistral
Je fonctionne sous Windows XP SP3 et Excel 2003. J'ai créé un classeur dans lequel, par macro, je sauvegarde, à un instant donné, une des feuilles dans un nouveau classeur. Selon l'importance de cette feuille cela prends +/- de tps. Je souhaiterais afficher une barre de progression pendant le déroulement de cette macro. J'ai cherché ici même et j'ai trouvé l'exemple ci-dessous :
Sub demo()
Dim i As Double
barreProgression action:="CREER"
For i = 0 To 100 Step 0.5
DoEvents
barreProgression action:="METTRE_A_JOUR", pourcentage:=i
Next
barreProgression action:="SUPPRIMER"
End Sub
Sub barreProgression(ByVal action As String, Optional pourcentage As Double)
Dim s As Shape
Dim pc As Double
Dim couleur As Long
Static large As Integer
' Paramètres
Const HAUTEUR_BARRE = 10 ' hauteur de la barre de progression en points
Const LARGEUR_INFO = 30 ' largeur de la barre de progression en points
Const MARGE = 20 ' largeur de la marge latérale en points
Const MARGE_INFERIEURE = 40 ' hauteur de la marge inférieure en points
Const TAILLE_CARACTERE = 8 ' taille de la police de caractères
couleur = RGB(128, 128, 128) ' couleur de la zone variable de la barre de progression
Select Case action
Case "CREER"
Dim bas As Integer
large = ActiveWindow.UsableWidth - 2 * MARGE - LARGEUR_INFO
bas = ActiveWindow.UsableHeight - MARGE_INFERIEURE
For Each s In ActiveSheet.Shapes
If Left(s.Name, 6) = "progb_" Then s.Delete
Next
ActiveSheet.Shapes.AddShape(msoShapeRectangle, MARGE, bas, large, HAUTEUR_BARRE).Select
Selection.Name = "progb_cadre"
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, large + MARGE - LARGEUR_INFO, bas, _
LARGEUR_INFO, HAUTEUR_BARRE).Select
Selection.Name = "progb_info"
Selection.Characters.Font.Size = TAILLE_CARACTERE
Selection.HorizontalAlignment = xlCenter
ActiveSheet.Shapes.AddShape(msoShapeRectangle, MARGE, bas, 0, HAUTEUR_BARRE).Select
With Selection
.ShapeRange.Fill.ForeColor.RGB = couleur
.ShapeRange.Line.Visible = msoFalse
.Name = "progb_curseur"
End With
Case "SUPPRIMER"
For Each s In ActiveSheet.Shapes
If Left(s.Name, 6) = "progb_" Then s.Delete
Next
Case "METTRE_A_JOUR"
pc = IIf(Abs(pourcentage) > 100, 100, Abs(pourcentage))
ActiveSheet.Shapes("progb_curseur").Width = (large - LARGEUR_INFO) * pourcentage / 100
ActiveSheet.Shapes("progb_info").TextFrame.Characters.Text = Fix(pc) & "%"
Case Else
MsgBox "Le parametre action est invalide"
End Select
End Sub
Je l'ai testé et cela me convient parfaitement. Cette macro fonctionne sur une boucle avec une progression de la barre à chaque itération. Moi ce que j'ai souhaiterais c'est quelle démarre au début de ma macro et qu'elle s'arrête à la fin et je n'arrive pas à l'intégrer à ma macro.
Pouvez-vous m'aider.
D'avance merci
Mistral
A voir également:
- Barre de progression sous Excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Windows 11 barre des taches a gauche - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
2 réponses
Bonjour,
La réponse est dans le Sub Demo !!!
Principe : tu appelles le sub barreprogression en passant une variable (i dans l'exmple) dont la valeur augmente.
Ou alors, dsl, je ne comprends pas ta question !
A+
La réponse est dans le Sub Demo !!!
Principe : tu appelles le sub barreprogression en passant une variable (i dans l'exmple) dont la valeur augmente.
Ou alors, dsl, je ne comprends pas ta question !
A+
Tout d'abord merci de t'interesser à mon problème et toute mes excuse si je me suis mal exprimé.
J'ai bien compris, pour l'avoir déroulé en pas à pas, le fonctionement de cette macro. On crée la barre de progression et on lance une boucle, à chaque itération on mets la barre à jour puis la barre est éffacée quand la boucle et finie.
Mois ce que je souhaiterais c'est appeller cette "barreProgression" quand je lance une de mes macros et qu'elle s'arrête quand ma macro est finie et là je n'ai pas de boucle pour incrementer la MAJ de la barre.
Cordialement
Mistral
J'ai bien compris, pour l'avoir déroulé en pas à pas, le fonctionement de cette macro. On crée la barre de progression et on lance une boucle, à chaque itération on mets la barre à jour puis la barre est éffacée quand la boucle et finie.
Mois ce que je souhaiterais c'est appeller cette "barreProgression" quand je lance une de mes macros et qu'elle s'arrête quand ma macro est finie et là je n'ai pas de boucle pour incrementer la MAJ de la barre.
Cordialement
Mistral