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 :

barre de progression


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Par défaut barre de progression
    Bonjour

    Je suis débutante en vba et j'ai pour "ambition" la création d'un petit programme de saisie . Malheureusement je bug
    Je souhaiterai faire progresser une barre en fonction des cases cochées, attention il faut que la barre diminue si la case est décochée (erreur de saisie, ou modification de donnnées).
    Hors c'est cette dernière partie qui me bloque, j'ai donc installé un bouton pour vider les cases mais j'aimerai que cette solution soit provisoire!!!.

    J'ai donc :
    1 Progressbar1
    16 checkbox à cocher
    Un label qui apparait lorsque toutes les check box sont cocher
    Et le CommandButton8 pour vider mes check box en attendant de trouver mieux !

    Si vous pouviez m'aider. d'avance merci


    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    Private Sub TheProgressor()
        With Me.ProgressBar1
            Prog = .Value
            Prog = Prog + 6.25 
                If Prog <= 100 Then
                    .Value = Prog
                End If
                If Prog = 100 Then Me.Label23.Visible = True
            End With
    End Sub
     
    Private Sub CommandButton8_Click()
    Dim i As Byte
        For i = 1 To 16
            Me.Controls("CheckBox_" & i).Value = False
        Next
    Me.ProgressBar1.Value = 0
    CheckBox_1 = False
    CheckBox_2 = False
    CheckBox_3 = False
    CheckBox_4 = False
    CheckBox_5 = False
    CheckBox_6 = False
    CheckBox_7 = False
    CheckBox_8 = False
    CheckBox_9 = False
    CheckBox_10 = False
    CheckBox_11 = False
    CheckBox_12 = False
    CheckBox_13 = False
    CheckBox_14 = False
    CheckBox_15 = False
    CheckBox_16 = False
     
    Me.ProgressBar1.Value = 0
    Label23.Visible = False
    End Sub
     
    Private Sub UserForm_Initialize()
    With Me.ProgressBar1
    .Min = 0
    .Max = 100
    End With
    With Me
    .Label23.Visible = False
    End With
    End Sub
    Private Sub label23_Click()
    Dim i As Byte
        For i = 1 To 16
        Next
    Me.ProgressBar1.Value = 0
    End Sub
     
     
    Private Sub CheckBox_1_Click()
    TheProgressor
    End Sub
    Private Sub CheckBox_2_Click()
    TheProgressor
    End Sub
    Private Sub CheckBox_3_Click()
    TheProgressor
    End Sub
    Private Sub CheckBox_4_Enter()
    TheProgressor
    End Sub
    Private Sub CheckBox_5_Enter()
    TheProgressor
    End Sub
    Private Sub CheckBox_6_Enter()
    TheProgressor
    End Sub
    Private Sub CheckBox_7_Enter()
    TheProgressor
    End Sub
    Private Sub CheckBox_8_Enter()
    TheProgressor
    End Sub
    Private Sub CheckBox_9_Enter()
    TheProgressor
    End Sub
    Private Sub CheckBox_10_Enter()
    TheProgressor
    End Sub
    Private Sub CheckBox_11_Enter()
    TheProgressor
    End Sub
    Private Sub CheckBox_12_Enter()
    TheProgressor
    End Sub
    Private Sub CheckBox_13_Enter()
    TheProgressor
    End Sub
    Private Sub CheckBox_14_Enter()
    TheProgressor
    End Sub
    Private Sub CheckBox_15_Enter()
    TheProgressor
    End Sub
    Private Sub CheckBox_16_Enter()
    TheProgressor
    End Sub

  2. #2
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Et si on se trompe et que l'on décoche ?
    la barre de progression augmente afin d'atteindre 106,25%

    Non car il y a le test (<100) mais il n'y a en aucun cas correspondance entre le nombre de coche et le pourcentage dans le cas où l'on décoche.

    Il faut parfois retirer la valeur. D'où le bouton ?(j'ai compris)

    Le plus simplement, il faire une boucle sur les cases à cocher ayant un certain nom pour tester toutes les valeurs (que 16, ça va), on compte le nombre de coche et on multiplie par 6,25.

    De ma part, vérifie que 16 x 6.25 = 100 et non pas un 99,999999 !

    Pour faire une décroissance, qui n'est nécessaire que pour la barre de progression un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ProgressBar1.value = 100 - NbCoche*6.25



    Je me rends compte en écrivant la dernière ligne de la solution :
    pourquoi ne pas affecter au démarrage ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me.ProgressBar1.Min = 0
    Me.ProgressBar1.max = 16
    Me.ProgressBar1.value = 0
    Et de mettre directement le nombre de coche à la propriété value :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ProgressBar1.value = 16 - NbCoché


    Le bouton pour tout effacer donc reprendre à zéro est utile.

    ESVBA

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Par défaut
    Bonjour,

    Tout comme toi je réalise qu'il est inutile d'utiliser 6.25 mais les valeurs 16=100% et 1 me suffiront et éviteront les erreurs.

    Pour se qui est de ta formule, ben cela ne me donne rien !! Une autre idée

  4. #4
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut La bétise est ENORME
    A ne pas réfléchir.

    Deux négations s'annulent :
    Citation Envoyé par T'Choupi
    barre diminue si la case est décochée
    donc la barre augmente si les cases sont cochées

    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ProgressBar1.value = NbCoché

    ESVBA

  5. #5
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour T'choupi ESVBA. peut être avec un module de classe!!! a adapter

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Par défaut
    Bonjour,

    Après quelques jours, je reviens sur mon programme.
    J'adapte actuellement la solution de laetitia qui convient parfaitement à mon projet.
    Malheureusement, si mes checks boxs s'activent, si la case "Vider" fonctionne.
    La barre de progression, elle ne bouge pas.

    j'ai remarqué qu'il n'y avait aucunes instructions sur le "Label1" et que les seules instructions que je lis portes sur l'User Form et le module classe2 est ce juste ou ai-je zappé quelque part ?

    Enfin, une dernière question de débutante. Est-ce qu'un module de classe peut servir pour plusieurs User Form ?

    Merci d'avance

  7. #7
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re, bonsoir T'choupi le forum il faudrait voir ton code comment tu as adapter l'exemple
    oui la seule ligne qui fait reference au label1 se trouve dans le module de classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub cbx_Click()
    c = 0
    For x = 1 To 16
    If User.Controls("CheckBox" & x).Value = True Then c = c + 1
    Next x
    If c = 16 Then User.Label2.Visible = True Else User.Label2.Visible = False
    User.Label1.Width = User.Width / 16 * c
    End Sub
    que dit cette ligne !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    User.Label1.Width = User.Width / 16 * c
    tu as 16 CheckBoxs je comptabilise ceux qui sont vrais
    donc je dis que la largeur du label1=largeur user /16*c
    prenons 8 CheckBoxs=vrai
    user.width=400 dans l'exemple
    400/16*8=200 donc 50%
    avantage de prendre user.width si tu agrandis ou reduit user la largeur du label1 reste proportionnelle a l'user tu peus aussi utiliser la propriete du label1.caption en mettant une autre couleur pour avoir le pourcentage de progression a l'interieur du label

    pour l'autre question je dirais oui oui & non non!!!
    en regle un module de classe evite de repeter x nb fois le meme code dans ton cas 48 lignes de code de plus forcement une action sur les contrôles de l'user il est plus facile de s'orienter sur plusieurs module de classe

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Par défaut
    Et oui je suis lente, mais les projets sont nombreux.........
    donc je m'y remets valide dès que mon pb est résolu. Merci et bonne année

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

Discussions similaires

  1. Indy FTP (idFTP) faire une barre de progress de transfert
    Par Harry dans le forum Web & réseau
    Réponses: 4
    Dernier message: 09/07/2004, 13h15
  2. [VB.NET] Pb avec le bouton Annuler d'1 barre de progression
    Par dada1982 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/06/2004, 09h56
  3. Réponses: 12
    Dernier message: 27/05/2004, 00h13
  4. [DEBUTANT] Barre de progression
    Par pupupu dans le forum MFC
    Réponses: 4
    Dernier message: 18/01/2004, 16h47
  5. [web] Barre de Progression ASCII
    Par Red Bull dans le forum Web
    Réponses: 13
    Dernier message: 05/06/2003, 12h56

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