Vba Button

cs_Mathieu76 Messages postés 11 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 9 décembre 2006 - 8 déc. 2006 à 21:25
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 9 déc. 2006 à 14:11
Salut
Bon voila j'ai un soucis, Je voudrais créé une fonction qui serait commune a plusieur bouton je m'explique:
Chaque fois que l'on clic sur un bouton La valeur du bouton (namebutton.caption) est augmenter de 1, mais vu que je vais faire plusieur bouton qui feront la même chose je voudrais créé une fonction qui me permette d'augmenter de 1 la valeur du bouton.
Exemple:
Le button sur lequel je clic s'appel Button1
Donc
j'appel ma fonction qui s'appel Plus1 (Call Plus1)
Mais je me demande que dois-je mettre dans La fonction plus1 pour que la valeur du bouton (caption) sur lequel j'ai cliquer sois augmenter de 1 sans mettre Button1.Caption=Button1.Caption + 1 Puisque je veux que cette fonction serve pour plusieur bouton.
Merci de votre aide en espérant avoir était clair

@+ Mathieu

7 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
8 déc. 2006 à 22:28
Salut,

il faut absolument que tes CommandButtons aient une valeur numérique en Caption.
Place leurs, à ceux que tu veux affecter, le mot mCaption à leur propriété Tag.

Ensuite colle ce code dans celui du UserForm :

Option Explicit

' Attibue le bon nombre à la place de 5
Dim Boutons(1 To 5) As New clsCommand

Private Sub Attribuer_Controls()
    Dim ctl As Control
    
    ' initialise le compteur de controle
    Dim CommandCount As Integer
    CommandCount =  0
    
    'le fait de mettre
"mCaption" a la propriete Tag des controles voulus,
    'ca permet de trier avec les autres
    For Each ctl In Me.Controls
        If ctl.Tag = "mCaption" Then
            CommandCount = CommandCount + 1
            Set Boutons(CommandCount).MyCommand = ctl
        End If
    Next ctl

End Sub

Private Sub UserForm_Initialize()
    Call Attribuer_Controls
End Sub


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

Ensuite insère un module de classe, que tu nommes clsCommand, puis insère ce code :

Option Explicit

Public WithEvents MyCommand As MSForms.CommandButton

Sub MyCommand_Click()
    MyCommand.Caption  = CStr(CLng(MyCommand.Caption) + 1)
End Sub


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

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
9 déc. 2006 à 10:42
- "C'est pas faux !"

Jcbé[^]
0
cs_Mathieu76 Messages postés 11 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 9 décembre 2006
9 déc. 2006 à 12:58
Sa marche en VBA sa, car je l'ai commencer sous exel mon  truc :s

@+ Mathieu
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 déc. 2006 à 13:05
Salut,

oui, ça fonctionne. Insère la première partie dans le module du code de ton UserForm, la seconde partie doit être dans un Module de Classe (tout est mis en commentaire).

L'avantage de passer par un module de classe, que tu aies 1 ou 100 contrôles CommandButtons, le code reste le même, pas besoins de plus de lignes de code.

@++

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

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

Posez votre question
cs_Mathieu76 Messages postés 11 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 9 décembre 2006
9 déc. 2006 à 13:07
Sa te dérange pas de me rentrer sur msn, car enfaite c'est un peu plus complex.
Sinon tanpis je me débrouillerai
Merci déja pour ce que tu as fait
@+ Mathieu
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 déc. 2006 à 13:19
Désolé, je travaille donc pas MSN, mais t'inquiète, y'a rien de complexe, t'as juste des copier coller à faire.

Les seules choses à remplacer sont :

Dim Boutons(1 To 5) As New clsCommand
Si t'as 10 boutons qui doit faire ton truc, mais 10 au lieu de 5

Ces boutons là doivent avoir le mot mCaption dans Tag de chaque bouton

Le nom du Module de Classe (menu, insertion...) doit être clsCommand

C'est tout  ;)

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 déc. 2006 à 14:11
J'ai bien vu ton image mais j'avoue que je ne sais pas contrôler les évènements d'un contrôle, positionnés sur une feuille (c'est différent des contrôles sur un UserForm)

@++

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