Case à cocher et pourcentage d'avancement

Résolu/Fermé
Signaler
Messages postés
48
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
28 juin 2011
-
Messages postés
48
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
28 juin 2011
-
Bonjour,

J'aimerais pouvoir faire correspondre un nombre de case cochée avec un taux d'avancement (en %), le fait de cocher une case augmenterait celui-ci... quelqu'un aurait-il un conseil ou un code pour cela?

Merci d'avance!

Tom


5 réponses

Bonjour,

En quel langage tu veux faire ça?

:)
Messages postés
48
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
28 juin 2011

Bonjour!

En quel langage? et bien c'est pour un tableau excel donc j'imagine que c'est du VBA qu'il faut, non ? Mais je ne m'y connais vraiment pas!
Merci !

tom
Bonjour,

Effectivement, pour excel c'est du VBA.
Pour visualiser un taux d'avancement ou de progression, on utilise un controle nommé ProgressBar, qui va se remplir en fonction d'une valeur donnée par rapport à un mini et un maxi. Pour une valeur exprimée en %, l'intervalle va de 0 à 100.
Voici un petit exemple que j'ai réalisé.
Sur une UserForm j'ai placé 4 CheckBox et une ProgressBar.
Si la ProgressBar n'est pas dans la boite à outils, faire un clic droit dans la boite à outil pour acceder aux controles supplémentaires, puis cocher Microsoft ProgressBar Control 6.0.
Vérifie bien les propriétés Mini =0 et Maxi =100 de la progressbar.
A l'exécution, tu devrais voir 4 checkbox et une progressbar vide. Chaque fois que tu coches une checkbox, la progressbar se rempli de 25%.
Voici le code à coller dans la partie code de la userforn (faire un double clic sur la userform pour y accéder directement).

Dim Progress As Integer

Private Sub UserForm_Activate()
ProgressBar1.Value = 0
Progress = 0
End Sub

Private Sub CheckBox1_Click()
If CheckBox1 Then Progress = Progress + 25 Else Progress = Progress - 25
'MsgBox Progress
ProgressBar1.Value = Progress
End Sub

Private Sub CheckBox2_Click()
If CheckBox2 Then Progress = Progress + 25 Else Progress = Progress - 25
ProgressBar1.Value = Progress
End Sub

Private Sub CheckBox3_Click()
If CheckBox3 Then Progress = Progress + 25 Else Progress = Progress - 25
ProgressBar1.Value = Progress
End Sub

Private Sub CheckBox4_Click()
If CheckBox4 Then Progress = Progress + 25 Else Progress = Progress - 25
ProgressBar1.Value = Progress
End Sub


Salut ;)
Messages postés
48
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
28 juin 2011

wouaw ! merci c'est super, j'essaie tout ça et je vois si j'y arrive !! :)
Messages postés
48
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
28 juin 2011

C'est bon, ça a marché. Mais malheureusement ce n'est pas tout à fait ce que voulais obtenir. En l'occurence le Userform est une fenêtre à part de mon tableau excel, or je voudrais l'intégrer directement au doc. Je t'envoie le lien du doc que j'utilise pour te donner une idée....http://www.cijoint.fr/cjlink.php?file=cj201103/cij57bAGwl.xls j'ai mis des commentaires sur certaines cellules (qui font aussi références à d'autres questions que je me pose...si tu as du temps et l'envie de te pencher dessus ! =) )
Encore merci !
Bonsoir,

En effet, ayant ton tableau sous les yeux, je m'apperçois que j'étais à coté de la plaque. Maintenant je vois.
Je ne sais pas où tu as été chercher tes cases à cocher, mes elles ne fonctionnent pas tout à fait comme les checkbox du VBA, dans le sens où je n'arrive pas à connaitre leur état (coché/non coché), il y a surement un moyen mais je ne le connais pas.
Je les ai remplacé par trois checkbox classiques, celles qui se trouvent dans la boite à outil Visual Basic.
En mode création (le bouton avec l'équerre enfoncé), double clic sur la checkbox et tu arrives dans l'éditeur VBA.
Voici le code à placer dans le code de la feuille.

Private Sub CheckBox1_Click()
If CheckBox1 Then
   Range("k13").Value = Range("k13").Value + (1 / 3)
Else
   Range("k13").Value = Range("k13").Value - (1 / 3)
End If
End Sub

Private Sub CheckBox2_Click()
If CheckBox2 Then
   Range("k13").Value = Range("k13").Value + (1 / 3)
Else
   Range("k13").Value = Range("k13").Value - (1 / 3)
End If
End Sub

Private Sub CheckBox3_Click()
If CheckBox3 Then
   Range("k13").Value = Range("k13").Value + (1 / 3)
Else
   Range("k13").Value = Range("k13").Value - (1 / 3)
End If
End Sub


Repasses en mode execution (le bouton avec l'équerre relevé), et si tout se passe bien, le pourcentage devrait changer en fonction du nombre de cases cochées.

Salut :)
Messages postés
48
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
28 juin 2011

Merci pour le code c'est vraiment sympa, par contre je n'ai pas trop saisi comment tu remplaçais les cases cochées que j'ai mise (avec la palette "Formulaires" du tableau). Je dois me placer dans la fenêtre de VBA c'est ça? Mais ensuite, comment "créer" des checkbox sans utiliser de Userform? Au final tout doit se passer sur le tableau Excel du planning...
désolé d'insister !! =)
Bonjour,

Oui, j'ai trouvé la palette Formulaire. Je n'utilise pas celle-ci
Dans le menu Affichage -> Barre d'Outils, choisis Visual Basic.
Il y a sensiblement les mêmes contrôles, mais visiblement il y a quelques différences.
Je te retourne ton tableau avec mes modifs, si tu n'y arrives toujours pas.
http://www.cijoint.fr/cjlink.php?file=cj201104/cijGHwI0Cm.xls

Par contre, la cellule K13 doit etre vide au depart, sinon le pourcentage sera faux.
De même, il ne faut pas modifier cette cellule alors qu'une case est cochée ou tout simplement changer sa valeur, sinon ce sera faux. En conclusion, proteger celle cellule pour eviter toute modification manuelle.

:)
Messages postés
48
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
28 juin 2011

Merci pour ton aide numero 6, le résultat rend bien mais malheureusement mon document est gros et j'ai plein de check list de taille différente à mettre en place. Du coup cette solution n'est pas assez maniable. Je suis en train de me demander s'il n'y a pas une fonction ou une macro qui permettrait d'écrire un x dans une cellule lorsqu'on clique dessus et de l'enlever lorsqu'on reclique dessus...(il n'y aurait plus le problème du calcul du pourcentage car une simple formule permettrait de le calculer en comptabilisant le nombre de case où il y a un x su une plage donnée.)
Merci encore pour ton aide et désolé de t'embêter avec ça! =)

tom
Messages postés
48
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
28 juin 2011

C'est bon !! j'ai trouvé dans une des conversations parallèles que je mène la macro qui convenait (je l'avais essayé sans voir les résultats puisque les plages n'étaient pas adaptées, mais je l'ai retester en entrant les plages qui faut et ça marche.
Une dernière fois merci!
Bonne journée à toi et bonne continuation !

Tom