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

VBA Discussion :

Créer une barre de progression sous Vba ?? [Trucs & Astuces]


Sujet :

VBA

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut Créer une barre de progression sous Vba ??
    Salut,

    tout est dans la question j'aurai voulu savoir d'une part si c'était possible et d'autre part comment s'y prendre.

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Di tu es dans un userform (?) tu peux faire ça avec un double rectangle
    Le premier fait la longueur total, l'autre, le curseur, d'une autre couleur, est un pourcentage de la première calculé selon le nombre d'opérations que tu vas faire.
    Ex : Tu veux insérer 25 fichiers, la barre principale fait 1000px, 1 fichier = 1000/25 = 40px
    Donc pour chaque fichier inséré, tu ajoutes 40px à la longeur de ton "curseur" et tu règles sa largeur (width)
    Ça, c'est l'idée. Maintenant, si tu veux du code, tu dis, je rechercherai.

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut Créer une barre de progression sous Vba ??
    []Bonjour,
    Tu places un contrôle Frame sur ton UserForm et l'intérieur du Frame tu mets un contrôle Label, ensuite tu mets ce code.[/]

    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
     
    Private Sub UserForm_Activate()
    Call Main
    UserForm_Initialize
    End Sub
     
    Private Sub UserForm_Initialize()
    Me.Height = 76.5
    Me.Width = 205
    Me.Caption = "Entrées de nombres aléatoires"
    Frame1.Caption = "0%"
    Frame1.Top = 19.5
    Frame1.Height = 28
    Frame1.Width = 195
    Frame1.Left = 3
    Label1.Caption = ""
    Label1.BackColor = &HFF&
    Label1.Height = 13
    Label1.Width = 20
    Label1.Top = 5
    End Sub
     
    'Ensuite dans un Module.
     
    Sub Main()
    '   Insère des nombres aléatoires dans la feuille de calcul active
        Dim Counter As Integer
        Dim RowMax As Integer, ColMax As Integer
        Dim r As Integer, c As Integer
        Dim PctDone As Single
     
        If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
        Cells.Clear
        Counter = 1
        RowMax = 200
        ColMax = 10
        For r = 1 To RowMax
            For c = 1 To ColMax
                Cells(r, c) = Int(Rnd * 1000)
                Counter = Counter + 1
            Next c
            PctDone = Counter / (RowMax * ColMax)
            Call UpdateProgress(PctDone)
        Next r
        Unload UserForm1
    End Sub
     
    Sub UpdateProgress(Pct)
        With UserForm1
            .Frame1.Caption = Format(Pct, "0%")
            .Label1.Width = Pct * (.Frame1.Width - 10)
            .Repaint
        End With
    End Sub
     
    Sub Test()
    UserForm1.Show
    End Sub
    jpleroisse

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Moi aussi, j'ai ça... Où Règle est un label qui tient la longueur de ta barre de progression, Curseur est un label (qui grandit) superposé au précédent, Aperçu un 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
    Sub ActionRépétitive()  'ta boucle où tu fais ce que tu veux...
    Dim Nbredefois, UnitéDeLongueur, i 'etc
         Nbredefois = NombreDeFoisOùTuFaisCeQueTuVeux
         UnitéDeLongueur = int (Règle.width / Nbredefois)
         For i = 1 to Nbredefois
               insertion(UnitéDeLongueur)
         Next i
    end sub
     
    Sub insertion(UnitéDeLongueur)
        Curseur.Visible = False
        LongueurCurseur = Aperçus.Curseur.Width + UnitéDeLongueur
        Aperçus.Curseur.Width = LongueurCurseur
        r = DoEvents
        Curseur.Visible = True
    End Sub
    C'est simpliste ? C'est tout ce que j'aime...

    A+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    Merci à vous deux j'essaye et je vous tiens au courant

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je dois mettre un PS : Si tu as un trop grand nombre de passages dans ta boucle (Nbredefois) tu devras modifier le int(...) et conserver un ou deux chiffres après la virgule

    Au lieu de "UnitéDeLongueur = int (Règle.width / Nbredefois)", pour deux chiffres après la virgule, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UnitéDeLongueur = CDbl(Format((Règle.width / Nbredefois ),"###0.00"))
    Déclare UnitéDeLongueur as double

    A+

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Merci à vous deux j'essaye et je vous tiens au courant
    J'attends !

  8. #8
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Je dois d'abord dire que j'ai chez moi Office 97 (donc VBA 5) et VB6 d'installé sur mon ordi. Ce que j'ai donc trouvé ne fonctionnera peut-être pas chez toi. Sauf si tu as des versions plus récentes...

    Tu dois d'abord ajouter un composant ProgressBar. Clique du bouton droit sur la palette d'outils dans l'éditeur VBA et choisis l'item Contrôles supplémentaires (à moins que ça soit Composants) dans le menu contextuel. Cherche Microsoft ProgressBar Control (version 5 ou 6...) et sélectionne le. Confirme ton choix en cliquant sur OK".

    Après avoir placé un ProgressBar dans ton UserForm...

    J'ai fait ce petit test (avec un petit Sleep, pour avoir le temps d'y voir quelque chose):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Private Sub CommandButton1_Click()
    Dim i As Integer
    For i = ProgressBar1.Min To ProgressBar1.Max
    Sleep (50)  'pour voir quelque chose
    ProgressBar1.Value = i
    Next i
    End Sub

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/01/2010, 10h26
  2. Créer une barre de progression
    Par Downhill6 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 25/03/2009, 17h35
  3. EXCEL VBA - Créer une barre de progression
    Par babacool dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/08/2008, 18h16
  4. comment coder une Barre de progression sous AS
    Par loukili81 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 21/07/2008, 11h24
  5. Créer une barre de progression avec "stop/pause"
    Par davos56 dans le forum Delphi
    Réponses: 7
    Dernier message: 22/05/2007, 17h59

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