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 :

VBA: barre de progression avant affichage d'un userform [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 57
    Par défaut VBA: barre de progression avant affichage d'un userform
    Bonjour,

    Je voudrais installer une barre de progression pendant qu'un code VBA met en place un UserForm nommé "PlotForm". Ma barre de progression fonctionne bien à part mais lorsque je l'insère dans le UserForm_Initialize, cela m'affiche une erreur à la ligne "PlotForm.Show"... Voici le code ci-dessous:

    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
    Private Sub UserForm_Initialize()
     
        Dim Feuille As Worksheet
        Dim Cell As Range
        Dim k As Integer
        Dim WS_Count As Integer
        Dim ProgressIndicator As ProgressForm
        Dim n As Long
     
        WS_Count = ActiveWorkbook.Worksheets.Count
     
    For k = 1 To WS_Count
     
        ActiveWorkbook.Worksheets(k).Activate
     
        Set ProgressIndicator = New ProgressForm
        ProgressIndicator.Show vbModeless
     
    'Updates progress bar
        If Sheets(k).ChartObjects.Count = 0 Then
     
        If TypeName(ActiveSheet) <> "Worksheet" Then
            Unload ProgressIndicator
            Exit Sub
        End If
     
                k = k + 1
                n = k / WS_Count
                Call UpdateProgress(n)
     
        'Creates List of choice for abscissa axis and ordinate axis
            For Each Cell In Range("A1:BZA100")
                         If Application.IsText(Cell) Then
                                 PlotForm.xChoice.AddItem Cell.Value
                                 PlotForm.yChoice.AddItem Cell.Value
                         End If
            Next Cell
     
        End If
    Next k
     
            Unload ProgressIndicator
            Set ProgressIndicator = Nothing
     
    End Sub
    Où UpdateProgress est la fonction suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub UpdateProgress(pct)
        With ProgressIndicator
            .FrameProgress.Caption = Format(pct, "0%")
            .LabelProgress.Width = pct * 200
        End With
        DoEvents
    End Sub
    Je ne sais pas si ce que je souhaite faire est possible, et où, le cas échéant, je suis censé mettre la partie du code de la Progress Bar...
    Merci d'avance pour votre aide...

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    dans Sub UpdateProgress(pct),
    je suis pas sur que ProgressIndicator soit connu

    tu l'as déclaré dans form mais pas transmit à la sub ... (byref objProgresBar as object)

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 57
    Par défaut
    Si si je l'ai écrit dans les declarations après Option Explicit... J'utilise Excel 2007 btw...

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Dim ProgressIndicator As ProgressForm
    Peux-tu nous dire quel est cet objet ProgressForm ? (d'où vient-il ?)

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 57
    Par défaut
    ProgressForm est un autre UserForm qui est mis à jour à chaque boucle. Il contient un Frame "FrameProgress" dont la Caption marque le pourcentage d'avancement de la tâche, et un Label "LabelProgress" dont la longueur change aussi avec l'avancement. Il a cette forme-ci:

    Nom : Capture.PNG
Affichages : 917
Taille : 3,6 Ko

    Est-ce un peu plus clair ?

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    essaie de mettre tes deux userform en mode non modal
    perso je l'aurait intégrer dans le userform N%1 ta progressbar
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 57
    Par défaut
    Ca ne marche pas non plus en ajoutant vbModeless après PlotForm.Show... Il me semble pourtant aussi logique de mettre le code de la ProgressBar dans le UserForm_Initialize de mon PlotForm...
    Cette erreur s'affiche:

    Nom : Error.PNG
Affichages : 1008
Taille : 13,2 Ko

    Le Debug me mène à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     PlotForm.Show vbModeless

  8. #8
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    dans Sub UpdateProgress(pct),
    je suis pas sur que ProgressIndicator soit connu

    tu l'as déclaré dans form mais pas transmit à la sub ... (byref objProgresBar as object)
    Si si je l'ai écrit dans les declarations après Option Explicit... J'utilise Excel 2007 btw...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub UserForm_Initialize()
     
        Dim ProgressIndicator As ProgressForm
    Set ProgressIndicator = New ProgressForm
        ProgressIndicator.Show vbModeless
    c'est pas le même...

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    ProgressForm est un autre UserForm
    Cela n'en fait toujours pas un type d'objet.
    Ma question demeure donc entière.

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 57
    Par défaut
    Ah l'idiot... Merci beaucoup (J'avais une ou deux autres petites erreurs mais c'est bon ca marche !)

  11. #11
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour Babar09,
    si tu repasse par là,...tu nous explique vite fait....
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

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

Discussions similaires

  1. [Toutes versions] VBA Barre de progression DoEvents or not DoEvents?
    Par Gdal dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/02/2016, 21h00
  2. Barre de progression : problème affichage
    Par link256 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 21/07/2009, 13h23
  3. Message d'attente et barre de progression avant prévisualisation
    Par Just-Soft dans le forum Composants VCL
    Réponses: 4
    Dernier message: 24/12/2008, 12h53
  4. Réponses: 8
    Dernier message: 20/11/2007, 10h37
  5. [C#]Affichage d'une barre de progression
    Par boleduch dans le forum ASP.NET
    Réponses: 9
    Dernier message: 27/08/2005, 18h12

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