IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Optimiser un code [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut Optimiser un code
    Bonjour a toutes et tous, Forum

    Je souhaiterai svp optimiser un code voir ci-dessous car je rencontre des lenteurs de chargement du programme de ma gestion vidéo.

    Je ne vois pas comment faire autrement que de répèter 27 fois le code Label 100 à 126

    Merci a vous pour votre temps et merci d'avoir lu ma demande, bonne journée

    PS: le programme fonctionne très bien juste un peu long a se charger.
    PS: mis juste procédures pour exemple sinon ça fait 567 lignes de code

    Cordialement Ray

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    '* LES 27 PROCEDURES SUIVANTES PERMETTENT DE DETECTER QUAND LA SOURIS SURVOLE LE LABEL
    '* EN CAS DE SURVOL, LA CASE DEVIENT ROUGE ET LA CASE EN-DESSOUS DEVIENT JAUNE
    Private Sub Label100_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
      For i = 100 To 126
        With Me
          If .Controls("Label" & i).Name = "Label100" Then
            .Controls("Label" & i).BackColor = RGB(255, 0, 0)    'Rouge
            .Controls("Label" & i + 27).BackColor = &HFFFF80     'Turquoise
            If .Controls("Label" & i + 27).Caption <> "" Then
              Gestion_du_listing.TextBox3.Value = .Controls("Label" & i).Caption & " : " & .Controls("Label" & i + 27).Caption
            Else
              Gestion_du_listing.TextBox3.Value = ""
            End If
          Else
            If .Controls("Label" & i).BackColor <> &H800080 And _
               .Controls("Label" & i + 27).BackColor <> &HC0C0FF Then
              .Controls("Label" & i).BackColor = &H800080          'Violet
              .Controls("Label" & i + 27).BackColor = &HC0C0FF     'Rose
            End If
          End If
        End With
      Next i
    End Sub
     
    Private Sub Label101_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
      For i = 100 To 126
        With Me
          If .Controls("Label" & i).Name = "Label101" Then
            .Controls("Label" & i).BackColor = RGB(255, 0, 0)
            .Controls("Label" & i + 27).BackColor = &HFFFF80
            If .Controls("Label" & i + 27).Caption <> "" Then
              Gestion_du_listing.TextBox3.Value = .Controls("Label" & i).Caption & " : " & .Controls("Label" & i + 27).Caption
            Else
              Gestion_du_listing.TextBox3.Value = ""
            End If
          Else
            If .Controls("Label" & i).BackColor <> &H800080 And _
               .Controls("Label" & i + 27).BackColor <> &HC0C0FF Then
              .Controls("Label" & i).BackColor = &H800080
              .Controls("Label" & i + 27).BackColor = &HC0C0FF
            End If
          End If
        End With
      Next i
    End Sub
     
    Private Sub Label102_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
      For i = 100 To 126
        With Me
          If .Controls("Label" & i).Name = "Label102" Then
            .Controls("Label" & i).BackColor = RGB(255, 0, 0)
            .Controls("Label" & i + 27).BackColor = &HFFFF80
            If .Controls("Label" & i + 27).Caption <> "" Then
              Gestion_du_listing.TextBox3.Value = .Controls("Label" & i).Caption & " : " & .Controls("Label" & i + 27).Caption
            Else
              Gestion_du_listing.TextBox3.Value = ""
            End If
          Else
            If .Controls("Label" & i).BackColor <> &H800080 And _
               .Controls("Label" & i + 27).BackColor <> &HC0C0FF Then
              .Controls("Label" & i).BackColor = &H800080
              .Controls("Label" & i + 27).BackColor = &HC0C0FF
            End If
          End If
        End With
      Next i
    End Sub
     
    Private Sub Label103_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
      For i = 100 To 126
        With Me
          If .Controls("Label" & i).Name = "Label103" Then
            .Controls("Label" & i).BackColor = RGB(255, 0, 0)
            .Controls("Label" & i + 27).BackColor = &HFFFF80
            If .Controls("Label" & i + 27).Caption <> "" Then
              Gestion_du_listing.TextBox3.Value = .Controls("Label" & i).Caption & " : " & .Controls("Label" & i + 27).Caption
            Else
              Gestion_du_listing.TextBox3.Value = ""
            End If
          Else
            If .Controls("Label" & i).BackColor <> &H800080 And _
               .Controls("Label" & i + 27).BackColor <> &HC0C0FF Then
              .Controls("Label" & i).BackColor = &H800080
              .Controls("Label" & i + 27).BackColor = &HC0C0FF
            End If
          End If
        End With
      Next i
    End Sub

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    fais des recherches sur les modules de classe dans les tutos ou fils DVP

    genre :http://www.developpez.net/forums/d96...urs-controles/

    cordialement,

    Didier

  3. #3
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Salut Ormonth, forum

    Merci de réponse, j'ai effectivement penser aux modules de classe

    mais après avoir lu et essayer déja plusieurs fois, c'est trop compliqué pour moi

    pas suffisament bon en VBA pour mettre en application.

    Merci tout de mème d'avoir pris le temps de me lire, mais je ne saurai pas faire

    qui de plus une bonne partie du code n'ai pas de moi

    juste planter le décor et eu l'idée de faire cette gestion

    Encore merci, c'est pas grave perdu défi

    Bye Bye et bonne journée a toi

    Cordialement Raymond

  4. #4
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Bonjour a toutes te tous, forum

    Malgré maintes essais hier je ne suis pas parvenu a faire comme conseillé
    en réponse a ma demande

    bon bath tant pis, avoir essayer au moins.

    bonne journée

    Cdlt

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, un exemple basique

    Dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Explicit
     
    Sub Bouton1_QuandClic()
        UserForm1.Show
    End Sub
    Dans un module de classe baptisé clsUsfLabels
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
     
    Public WithEvents LabelX As msforms.Label
     
    Private Sub LabelX_Click()
        MsgBox LabelX.Name & " cliqué : Tag : " & LabelX.Tag
    End Sub
     
    Private Sub LabelX_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        ' Code
    End Sub
    Dans module UserForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Option Explicit
     
    Dim mesLabels() As clsUsfLabels
     
    Private Sub UserForm_Initialize()
    Dim Ctrl As Object, i As Long
        ReDim mesLabels(1 To Me.Controls.Count)
        For Each Ctrl In Me.Controls
            If TypeName(Ctrl) = "Label" Then
                i = i + 1
                Set mesLabels(i) = New clsUsfLabels
                Set mesLabels(i).LabelX = Ctrl
                Ctrl.Tag = i
            End If
        Next Ctrl
        ReDim Preserve mesLabels(1 To i)
    End Sub

  6. #6
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Salut kiki29, forum

    Merci beaucoup de ta réponse, j'imprime et je mets en application dès que possible pour l'instant boulot, je dirai si j'ai réussi

    Encore merci bon W-end a toi et a tous d'ailleurs hiihi

    Cordialement Raymond

  7. #7
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Salut kiki29, forum

    Voila j'ai suivi tes conseils a la lettre,

    Tes explications très claires ont fait que j'ai réussi a faire fonctionner de nouveau mon programme avec a la clé gain de temps diviser par deux.

    Très bien le module de classe

    Que te dire merci beaucoup de ton aide

    je te souhaite un exellent W-end ainsi qu'une bonne soirée et

    Bye bye Bien cordialement Raymond

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo