Optimisation [Résolu]

Signaler
Messages postés
17
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
14 novembre 2007
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Hello
Quelqu’un aurait une idée pour optimiser ce code ?

Private Sub Form_Load()
    Me.MenuList.Move 0, 375, 2355, 4335
    Me.Push(0).Move 0, 0, 2355, 375
    Me.Push(1).Move 0, Me.MenuList.Height + 375, 2355, 375
    Me.Push(2).Move 0, Me.MenuList.Height + 750, 2355, 375
    Me.Push(3).Move 0, Me.MenuList.Height + 1125, 2355, 375
    Me.Push(4).Move 0, Me.MenuList.Height + 1125, 2355, 375
    Push_Click 0
   
End Sub


Private Sub Push_Click(Index As Integer)
    Select Case Index
        Case 0
            Me.MenuList.Top = 375
            Me.Push(1).Top = Me.MenuList.Height
            Me.Push(2).Top = Me.MenuList.Height + 375
            Me.Push(3).Top = Me.MenuList.Height + 750
            Me.Push(4).Top = Me.MenuList.Height + 1125
            Me.Frame(0).ZOrder 0
           
        Case 1
            Me.Push(1).Top = 375
            Me.MenuList.Top = 375
            Me.Push(2).Top = Me.MenuList.Height + 375
            Me.Push(3).Top = Me.MenuList.Height + 750
            Me.Push(4).Top = Me.MenuList.Height + 1125
            Me.Frame1(0).ZOrder 0
           
        Case 2
            Me.Push(1).Top = 375
            Me.Push(2).Top = 750
            Me.MenuList.Top = 750
            Me.Push(3).Top = Me.MenuList.Height + 750
            Me.Push(4).Top = Me.MenuList.Height + 1125
            Me.Frame2(0).ZOrder 0
           
        Case 3
            Me.Push(1).Top = 375
            Me.Push(2).Top = 750
            Me.Push(3).Top = 1125
            Me.MenuList.Top = 1500
            Me.Push(4).Top = Me.MenuList.Height + 1125
            Me.Frame3(0).ZOrder 0
           
        Case 4
            Me.Push(1).Top = 375
            Me.Push(2).Top = 750
            Me.Push(3).Top = 1125
            Me.Push(4).Top = 1450
            Me.MenuList.Top = 1500
            Me.Frame4(0).ZOrder 0
           
    End Select
   
    Me.Push(0).FontBold = False
    Me.Push(1).FontBold = False
    Me.Push(2).FontBold = False
    Me.Push(3).FontBold = False
    Me.Push(4).FontBold = False
    Me.Push(Index).FontBold = True
End Sub


Private Sub Push_Mousedown(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)
    Me.Push(0).FontBold = False
    Me.Push(1).FontBold = False
    Me.Push(2).FontBold = False
    Me.Push(3).FontBold = False
    Me.Push(4).FontBold = False
    Me.Push(Index).FontBold = True
End Sub

Merci
Hanns

4 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Salut,
Regarde si ceci est équivalent (je n'ai pas regarder la source)

Option Explicit

Private Sub Form_Load()
   Me.MenuList.Move 0, 375, 2355, 4335
   Me.Push(0).Move 0, 0, 2355, 375
   Me.Push(1).Move 0, Me.MenuList.Height + 375, 2355, 375
   Me.Push(2).Move 0, Me.MenuList.Height + 750, 2355, 375
   Me.Push(3).Move 0, Me.MenuList.Height + 1125, 2355, 375
   Me.Push(4).Move 0, Me.MenuList.Height + 1125, 2355, 375
   Push_Click 0
 
End Sub<hr />
Private Sub PlacePush(idx As String, MnuListTop As Integer, P1 As Integer, P2 As Integer, P3 As Integer, P4 As Integer)
   MenuList.Top = MnuListTop
   Push(1).Top = P1
   Push(2).Top = P2
   Push(3).Top = P3
   Push(4).Top = P4
   Call Me.Controls("Frame" & idx).ZOrder(0)
End Sub<hr />

Private Sub Push_Click(Index As Integer)
Dim i As Integer
   With MenuList
       Select Case Index
           Case 0: Call PlacePush(vbNullString, 375, .Height, .Height + 375, .Height + 750, .Height + 1125)
           Case 1: Call PlacePush(CStr(Index), 375, 375, .Height + 375, .Height + 750, .Height + 1125)
           Case 2: Call PlacePush(CStr(Index), 750, 375, 750, .Height + 750, .Height + 1125)
           Case 3: Call PlacePush(CStr(Index), 750, 375, 750, 1125, .Height + 1125)
           Case 4: Call PlacePush(CStr(Index), 1500, 375, 750, 1125, 1450)
       End Select
   End With
   
   For i = 0 To 4       Push(i).FontBold (Index i)
   Next
   
End Sub , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
17
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
14 novembre 2007

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour,

Je me suis arrêté au début, juste pour te donner des idées (et à toi de les utiliser...)

Ton évènement load :

Private Sub Form_Load()
    Me.MenuList.Move 0, 375, 2355, 4335
    Me.Push(0).Move 0, 0, 2355, 375
    Me.Push(1).Move 0, Me.MenuList.Height + 375, 2355, 375
    Me.Push(2).Move 0, Me.MenuList.Height + 750, 2355, 375
    Me.Push(3).Move 0, Me.MenuList.Height + 1125, 2355, 375
    Me.Push(4).Move 0, Me.MenuList.Height + 1125, 2355, 375

Mis à part le fait que tu sembles avoir fait une erreur avec Push(4) ... sinon Push(4) couvrirait Pussh(3) ... Push(4) devrait être 1400 , non ?

Tu sembles avoir un groupe de Push indexés de 0 à 4 et n'en modifier que la propriété Left, en l'incrémentant de 375.
Ce qui pourrait donc s'écrire en utilisant une boucle For I ... to...  et la variable I
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
utilises un SSTab, c'est plus simple :p