OVH Cloud OVH Cloud

Mise à jour de Label

3 réponses
Avatar
Emcy
Salut,

j'ai un Userform avec 732 Label. Lorsque j'appuye sur un=20
bouton, =E7a lance cette macro :

Sub MAJCalendrierAnn=E9e(Optional a As Boolean)

Dim Bisextile As Boolean
Dim TableauJour() As Variant
Dim PremierJour As Byte
Dim i As Integer
Dim j As Integer
=20
Application.ScreenUpdating =3D False
=20
CalendrierAnn=E9e.LabelAnn=E9e.Caption =3D MoisSelection.Ann=E9e
=20
TableauJour =3D Array("L", "M", "M", "J", "V", "S", "D")
PremierJour =3D Weekday(DateSerial(MoisSelection.Ann=E9e, 1,=20
1), vbMonday)
=20
For j =3D 0 To 365
=20
i =3D j + 366
=20
=20
CalendrierAnn=E9e.Controls(i).Caption =3D TableauJour
(PremierJour - 1)
=20
PremierJour =3D PremierJour + 1
If PremierJour =3D 8 Then PremierJour =3D 1

Next j

Application.ScreenUpdating =3D True

End Sub

=3D> en gros cette macro remet les valeur de mes Labels =E0=20
jour.

Ce que je ne comprend pas, c'est que les labels=20
disparaissent puis r=E9apparaissent (pas tous en m=EAme=20
temps) pendant que la macro est lanc=E9e =3D> peut-on =E9citer=20
ce Ph=E9nom=E8ne ?

3 réponses

Avatar
Michel Pierron
Salut Emcy;
Que vient faire Application.ScreenUpdating = True dans cette sub ?
MP

"Emcy" a écrit dans le message de
news:0f9f01c3a22a$49912140$
Salut,

j'ai un Userform avec 732 Label. Lorsque j'appuye sur un
bouton, ça lance cette macro :

Sub MAJCalendrierAnnée(Optional a As Boolean)

Dim Bisextile As Boolean
Dim TableauJour() As Variant
Dim PremierJour As Byte
Dim i As Integer
Dim j As Integer

Application.ScreenUpdating = False

CalendrierAnnée.LabelAnnée.Caption = MoisSelection.Année

TableauJour = Array("L", "M", "M", "J", "V", "S", "D")
PremierJour = Weekday(DateSerial(MoisSelection.Année, 1,
1), vbMonday)

For j = 0 To 365

i = j + 366


CalendrierAnnée.Controls(i).Caption = TableauJour
(PremierJour - 1)

PremierJour = PremierJour + 1
If PremierJour = 8 Then PremierJour = 1

Next j

Application.ScreenUpdating = True

End Sub

=> en gros cette macro remet les valeur de mes Labels à
jour.

Ce que je ne comprend pas, c'est que les labels
disparaissent puis réapparaissent (pas tous en même
temps) pendant que la macro est lancée => peut-on éciter
ce Phénomène ?
Avatar
Hervé
Salut Emcy,
Essai avec ceci, pas testé car trop de labels et puis un peu fénéant :

Private Declare Function LockWindowUpdate Lib "user32" _
(ByVal HwndLock As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName _
As String) As Long

Sub MAJCalendrierAnnée(Optional a As Boolean)

Dim Bisextile As Boolean
Dim TableauJour() As Variant
Dim PremierJour As Byte
Dim i As Integer
Dim j As Integer
'fige la mise à jour (normalement ;o))
LockWindowUpdate FindWindow(vbNullString, Me.Caption)

CalendrierAnnée.LabelAnnée.Caption = MoisSelection.Année

TableauJour = Array("L", "M", "M", "J", "V", "S", "D")
PremierJour = Weekday(DateSerial(MoisSelection.Année, 1, _
1), vbMonday)

For j = 0 To 365

i = j + 366


CalendrierAnnée.Controls(i).Caption = TableauJour _
(PremierJour - 1)

PremierJour = PremierJour + 1
If PremierJour = 8 Then PremierJour = 1

Next j
're-dessine
LockWindowUpdate 0&
End Sub

Hervé.

"Emcy" a écrit dans le message news:
0f9f01c3a22a$49912140$
Salut,

j'ai un Userform avec 732 Label. Lorsque j'appuye sur un
bouton, ça lance cette macro :

Sub MAJCalendrierAnnée(Optional a As Boolean)

Dim Bisextile As Boolean
Dim TableauJour() As Variant
Dim PremierJour As Byte
Dim i As Integer
Dim j As Integer

Application.ScreenUpdating = False

CalendrierAnnée.LabelAnnée.Caption = MoisSelection.Année

TableauJour = Array("L", "M", "M", "J", "V", "S", "D")
PremierJour = Weekday(DateSerial(MoisSelection.Année, 1,
1), vbMonday)

For j = 0 To 365

i = j + 366


CalendrierAnnée.Controls(i).Caption = TableauJour
(PremierJour - 1)

PremierJour = PremierJour + 1
If PremierJour = 8 Then PremierJour = 1

Next j

Application.ScreenUpdating = True

End Sub

=> en gros cette macro remet les valeur de mes Labels à
jour.

Ce que je ne comprend pas, c'est que les labels
disparaissent puis réapparaissent (pas tous en même
temps) pendant que la macro est lancée => peut-on éciter
ce Phénomène ?
Avatar
Emcy
Il ne sert pas à grand chose, mais si je l'enlève ça ne
change rien

-----Message d'origine-----
Salut Emcy;
Que vient faire Application.ScreenUpdating = True dans
cette sub ?

MP

"Emcy" a écrit
dans le message de

news:0f9f01c3a22a$49912140$
Salut,

j'ai un Userform avec 732 Label. Lorsque j'appuye sur un
bouton, ça lance cette macro :

Sub MAJCalendrierAnnée(Optional a As Boolean)

Dim Bisextile As Boolean
Dim TableauJour() As Variant
Dim PremierJour As Byte
Dim i As Integer
Dim j As Integer

Application.ScreenUpdating = False

CalendrierAnnée.LabelAnnée.Caption = MoisSelection.Année

TableauJour = Array("L", "M", "M", "J", "V", "S", "D")
PremierJour = Weekday(DateSerial(MoisSelection.Année, 1,
1), vbMonday)

For j = 0 To 365

i = j + 366


CalendrierAnnée.Controls(i).Caption = TableauJour
(PremierJour - 1)

PremierJour = PremierJour + 1
If PremierJour = 8 Then PremierJour = 1

Next j

Application.ScreenUpdating = True

End Sub

=> en gros cette macro remet les valeur de mes Labels à
jour.

Ce que je ne comprend pas, c'est que les labels
disparaissent puis réapparaissent (pas tous en même
temps) pendant que la macro est lancée => peut-on éciter
ce Phénomène ?


.