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 :

Dim sb As clsProgressBar [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2011
    Messages : 41
    Par défaut Dim sb As clsProgressBar
    xl-2003 & xl-2010
    Bonjour,

    en recherchant une technique pour montrer visuellement l'évolution de l'exécution de mon programme j'ai trouvé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ProgressBarSimpleDemo()
    Dim sb As clsProgressBar, i As Long
    Set sb = New clsProgressBar            ' create a new progress bar
    sb.Show "Please wait", vbNullString, 0 ' display the progress bar
    For i = 0 To 100 Step 20
         sb.PercentComplete = i ' update the progress bar
    WaitSeconds 1
    Next i
    Set sb = Nothing                           ' remove the progress bar
    End Sub
    Seulement quand je lance l'execution je reçois le message "Type non défini".
    Très fréquemment il s'agit d'une référence que je n'ai pas sélectionnée.
    Quelqu'un connaîtrait il la référence qui me manque ?
    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    A voir le préfixe de la variable "clsProgressBar" (cls) je pense qu'il te manque le module de classe. Retourne où tu as récupéré le code voir si il n'y a pas aussi celui du module de classe.

    Hervé.

  3. #3
    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, à mon avis clsProgressBar est là pour un module dit de classe qui est absent de ton classeur, voir http://excel.developpez.com/faq/?page=ModuleClasse pour ce qui en retourne des modules de classe

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Re,

    Maintenant, tu n'es pas obligé de passer par un module de classe. Un petit exemple, sur ta Form tu pose un Label nommé LblFond et un autre Label que tu nomme LblProgress et tu colle le code ci-dessous dans le module de la Form, tu ouvre le formulaire et tu clique dessus pour voir le résultat :
    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
     
    Private Sub UserForm_Initialize()
     
        With LblFond
            .Top = 10
            .Left = 0
            .Width = Me.Width
            .Height = 15
            .BorderStyle = fmBorderStyleSingle
        End With
     
        With LblProgress
            .Top = 10
            .Left = 0
            .Width = 0
            .Height = 15
            .BackColor = &H8000&
            .ForeColor = &HFFFFFF
        End With
     
    End Sub
     
    Private Sub UserForm_Click()
     
        Dim i As Long
     
        For i = 1 To 100000
            Progression i, 100000
            DoEvents
        Next i
     
    End Sub
     
    Sub Progression(ByVal Valeur As Double, _
                    ByVal Maxi As Double)
     
        Dim R As Double
     
        R = LblFond.Width / Maxi
     
        LblProgress.Width = Valeur * R
        LblProgress.Caption = Valeur
     
        If Valeur = Maxi Then LblProgress.Width = 0
     
    End Sub
    Hervé.

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2011
    Messages : 41
    Par défaut Merci
    Merci à tous pour votre réponse

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/06/2023, 15h51
  2. Plusieurs variables dans Dim et Case??
    Par samlepiratepaddy dans le forum Access
    Réponses: 2
    Dernier message: 02/10/2005, 18h04
  3. Réponses: 1
    Dernier message: 22/09/2005, 00h30
  4. tableau à 2 dim
    Par nicerico dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/06/2005, 08h48
  5. [VBA-E] Dim dynamique sur un tableau
    Par Vince69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/12/2002, 13h32

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