Compteur de clics

jhonnybegood Messages postés 11 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 mars 2007 - 10 mars 2007 à 18:58
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 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....
                                                                                 
                                                                                        Merci d'avance

10 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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"
<!--
0
jhonnybegood Messages postés 11 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 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.
                  
                                                                            Merci
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 mars 2007 à 19:31
Bonsoir, jhonnybegood

Tu as raison, VBA ne gère pas les groupes de contrôles indexés....

Lais voilà (et ce qui a fait douter Mortalino sur le fait que tu étais sous VBA ou sous VB6) : VBA n'a pas de contrôles PictureBox, non plus !!!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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


~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

Ca t'évitera d'a voir 32 fois l'utilisation de l'évènement Click

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
10 mars 2007 à 19:33
Et il ne peut pas l'importer ?

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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"
<!--
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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

MPi
0
jhonnybegood Messages postés 11 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 mars 2007
10 mars 2007 à 20:50
Merci pour ces conseils mais ne faut-il pas au début initialiser le compteur?
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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 ...) ...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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 !
0
Rejoignez-nous