OVH Cloud OVH Cloud

liason entre macro et progress bar

1 réponse
Avatar
Hervé Frank-Dangel
J'ai ce code :





Sub Macro30()
'
' Macro30 Macro
' Macro enregistrée le 16/06/2004 par FRANK-DANGEL Hervé
'
'
' Columns("A:G").Select
' Selection.Copy
' Sheets("Feuil2").Select
' Range("A1").Select
'ActiveSheet.Paste
'Range("A1").Select
' Application.CutCopyMode = False
' Selection.AutoFilter
' Selection.AutoFilter Field:=1, Criteria1:="=", Operator:=xlAnd
' Rows("33405:33464").Select
'Selection.Delete Shift:=xlUp
' Selection.AutoFilter Field:=1
' Selection.AutoFilter
Dim i As Long, j As Long
j = 1
Application.Calculation = xlCalculationManual ' si applicable
Application.ScreenUpdating = False
With Worksheets("Feuil1")
For i = 1 To 33440 Step 10
.Rows(i).Copy Worksheets("Feuil2").Rows(j)
j = j + 1
Next
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic ' si applicable
End Sub



et je voudrai le lié à cette progress bar mais je sais pas comment m'y
prendre, est ca que vous pouriiez m'aider ?????

Dim i As Integer

Private Sub Form_Load()

i = 0
Prog.Value = 0
Timer.Enabled = True
Timer2.Enabled = False

End Sub

Private Sub Timer_Timer()

If i = 99 Then
LblCha.Caption = "Chargement terminé"
i = 0
Timer2.Enabled = True
Timer.Enabled = False
End If
Prog.Value = Prog.Value + 1
i = i + 1
LblAva.Caption = Prog.Value & "%"

End Sub

Private Sub Timer2_Timer()

If i = 2 Then
End
End If
i = i + 1

End Sub


petite précision: le premier code a été taper dans VBA de Excel, le code de
la progress bar a été récupéré sur VBfrance....

il y'a une référence a un timer, mais je ne le vois pas de disponible dans
les userform de Excel.....

si quelqu'un possede une progress bar qui fonctionne dans excel et qui peut
s'adapter a mon code, JE SUIS PRENEUR ;-) !!!!!!!!!!

Merci beaucoup d'avance, c'est un plaisir d'evoluer parmis vous !!!

1 réponse

Avatar
J-Dan
salut Hervé,

puisque les liens proposés par Clément ne t'ont pas
inspiré, je te propose ceci : (je pars du principe que tu
es sous Excel97 et que tu ne disposes pas
de contrôle progressbar)

1) tu crées un Userform que tu nommes progbar dans lequel
tu positionnes un label
2) tu lui donnes une forme allongée qui ressemble à une
barre de progression.
3) tu colories le label (propriété BackColor)
4) dans le module du UserForm,(pour y acceder, tu fais un
clic droit sur le Userform
et tu selectionnes Code), tu copies ceci :

Private Sub UserForm_Activate()
Macro30
End Sub

5) dans un module standard tu copies ceci :

Sub demarre()
progbar.Show
End Sub

6) tu modifies le code de ta macro comme suit :

Sub Macro30()

Dim i As Long, j As Long
ProgressLargeur = progbar.Label1.Width
Application.ScreenUpdating = False
progbar.Label1.Width = 0

j = 1
Application.Calculation = xlCalculationManual ' si
applicable

With Worksheets("Feuil1")
For i = 1 To 33440 Step 10
.Rows(i).Copy Worksheets("Feuil2").Rows(j)
j = j + 1
progbar.Label1.Width = (i / 33440) * ProgressLargeur
DoEvents
Next
Unload progbar

End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic ' si
applicable
End Sub

7) tu lances ton travail avec la macro "demarre".

bon courage
-----Message d'origine-----
J'ai ce code :





Sub Macro30()
'
' Macro30 Macro
' Macro enregistrée le 16/06/2004 par FRANK-DANGEL Hervé
'
'
' Columns("A:G").Select
' Selection.Copy
' Sheets("Feuil2").Select
' Range("A1").Select
'ActiveSheet.Paste
'Range("A1").Select
' Application.CutCopyMode = False
' Selection.AutoFilter
' Selection.AutoFilter Field:=1, Criteria1:="=",
Operator:=xlAnd

' Rows("33405:33464").Select
'Selection.Delete Shift:=xlUp
' Selection.AutoFilter Field:=1
' Selection.AutoFilter
Dim i As Long, j As Long
j = 1
Application.Calculation = xlCalculationManual ' si
applicable

Application.ScreenUpdating = False
With Worksheets("Feuil1")
For i = 1 To 33440 Step 10
.Rows(i).Copy Worksheets("Feuil2").Rows(j)
j = j + 1
Next
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic '
si applicable

End Sub



et je voudrai le lié à cette progress bar mais je sais
pas comment m'y

prendre, est ca que vous pouriiez m'aider ?????

Dim i As Integer

Private Sub Form_Load()

i = 0
Prog.Value = 0
Timer.Enabled = True
Timer2.Enabled = False

End Sub

Private Sub Timer_Timer()

If i = 99 Then
LblCha.Caption = "Chargement terminé"
i = 0
Timer2.Enabled = True
Timer.Enabled = False
End If
Prog.Value = Prog.Value + 1
i = i + 1
LblAva.Caption = Prog.Value & "%"

End Sub

Private Sub Timer2_Timer()

If i = 2 Then
End
End If
i = i + 1

End Sub


petite précision: le premier code a été taper dans VBA
de Excel, le code de

la progress bar a été récupéré sur VBfrance....

il y'a une référence a un timer, mais je ne le vois pas
de disponible dans

les userform de Excel.....

si quelqu'un possede une progress bar qui fonctionne
dans excel et qui peut

s'adapter a mon code, JE SUIS PRENEUR ;-) !!!!!!!!!!

Merci beaucoup d'avance, c'est un plaisir d'evoluer
parmis vous !!!



.