jhonnybegood
Messages postés11Date d'inscriptionsamedi 6 janvier 2007StatutMembreDernière intervention11 mars 2007
-
10 mars 2007 à 18:58
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 2014
-
10 mars 2007 à 21:18
Bonsoir à tous,
Je vous contacte afin d'obtenir une aide sur le code pour créer un compteur de clics qui se situera sur un userform (il comptera les clics effectués sur 32 picture Box qui sont en fait 32 cartes), j'ai inséré à l'intérieur de celui-ci un label "vous avez cliqué :" et une textBox devant contenir le nombre de clics effectués. Je fais ce petit travail sur vba pour excel mais le problème est que je ne sais pas quelle fonction utiliser....
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 10 mars 2007 à 19:07
Salut,
Soit tes PictureBox sont indexés, alors une simple variable Static suffit dans l'évènement Click, soit tu as des PictureBox non indexés, alors il faut déclarer une variable dans les déclarations, et dans chaque évènement Click, il faut faire un TaVar = TaVar + 1
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
jhonnybegood
Messages postés11Date d'inscriptionsamedi 6 janvier 2007StatutMembreDernière intervention11 mars 2007 10 mars 2007 à 19:20
C'est sympa d'avoir répondu aussi rapidement. Par contre, qu'entends-tu par indexés pour vba? Et comment utilise-t-on Static (Tavar)?
PS :Je suis un débutant en vba qui galère pas mal.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 10 mars 2007 à 19:33
En VBA, je sais que les contrôles ne sont pas indexés, mais comme tu as un picture box, je ne sais pas si ça le fait ou non (je ne pense pas,.... bah non je viens de regarder), donc tout en haut de tes codes, place Dim Compteur As Byte
Et dans chaque évènement click de TOUT tes PictureBox, tape Compteur = Compteur + 1
Autre possibilité, passer par un module de classe + module, mais tu dois mettre PB à la propriété Tag de Tous tes PictureBox :
' *** Dans un Module
Option Explicit
Public MyPictureBoxes(1 To 13) As New clsPB
Public Compteur As Byte
Sub Attribuer_Controls()
Dim ctl As Control
Dim PBCount As Integer
PBCount = 0
For Each ctl In frmSaisie.Controls
If ctl.Tag = "PB" Then
PBCount = PBCount + 1
Set MyPictureBoxes(PBCount).PB =
ctl
End If
Next ctl
TON_USERFORM.Show
End Sub
' *** Dans un module
de classe nommé clsPB
Option Explicit
Public WithEvents PB As PictureBox
Private Sub PB_Click()
Compteur = Compteur + 1
End Sub
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 10 mars 2007 à 19:36
Si c'est pas le picturebox, mais le controle image, mon code tiens toujours, pense juste à remplacer Public WithEvents PB As PictureBox par Public WithEvents PB As MSForms.Image
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 10 mars 2007 à 20:41
Si tu as des contrôles Image sur ta feuille, tu peux essayer ce code
Option Explicit
Dim Compteur As Integer
Private Sub Image1_Click()
Compteur = Compteur + 1
MsgBox "Vous avez cliqué " & Compteur & " fois"
End Sub
Private Sub Image2_Click()
Compteur = Compteur + 1
MsgBox "Vous avez cliqué " & Compteur & " fois"
End Sub
Private Sub Image3_Click()
Compteur = Compteur + 1
MsgBox "Vous avez cliqué " & Compteur & " fois"
End Sub
Si tu veux incrémenter les clicks seulement une fois par Image pour ne jamais avoir plus de clicks que d'Images, tu pourrais utiliser un tableau qui contiendra un nombre équivalent d'éléments que le nombre d'images que tu utilises.
Disons que tu as 32 images, il te faudra déclarer un tableau(32) As Integer
(C'est un élément de plus qu'il t'en faut, mais ce sera plus simple à gérer...)
Chaque élément sera à 0 lors de l'initialistion
Si tu cliques sur Image1, tu mets Tableau(1) = 1
Tu cliques sur Image9, tu mets Tableau(9) = 1
Pour savoir combien d'éléments ont été cliqués au moins une fois, tu n'auras qu'à compter combien d'éléments du tableau sont à 1
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 mars 2007 à 21:05
Un compteur non initialisé l'est... à ZERO ! (surtout s'il est de type integer...)
Il y a certainement des questions qui, bien en amont de ce qu'elles sont, permettent de s'interroger très sérieusement sur certains aspects fondamentaux...
Te viendrait-il à l'idée, par exemple, de mettre en 1ère instruction du'un click :
Msgbox compteur
, juste pour voir quelle est sa valeur au départ ?
Je ne sais pas, moi, mais, si j'avais eu un doute, j'aurais essayé avant de poser cette question.... (malgré mon âge ...) ...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 mars 2007 à 21:18
Et je vois qu'en plus tu avais ceci, pour chaqye click
MsgBox "Vous avez cliqué " & Compteur & " fois"
qui te permettait de "suivre à l'aise !
T'as même pas essayé, alors ?
Bravo !