Macro pour changer l'intitulé d'un bouton
rasoir 74
-
rasoir 74 -
rasoir 74 -
Bonjour,
voilà, je poste de nouveau mon sujet :
est-il possible de changer l'intitulé d'un bouton de sorte que au début il soit 0.........je clique dessus, il devient 1.............je reclique dessus, il devient 2, etc...?
j'attends vos propositions
merci
voilà, je poste de nouveau mon sujet :
est-il possible de changer l'intitulé d'un bouton de sorte que au début il soit 0.........je clique dessus, il devient 1.............je reclique dessus, il devient 2, etc...?
j'attends vos propositions
merci
14 réponses
-
Salut,
C'est mieux d'avoir ouvert une discussion séparée.
en supposant que ton bouton ou plus exactement un CommandButton et qu'il soit le premier CommandButton1
deux propositions simples
la première, on se sert d'une cellule pour créer un compteur exemple A1 que l'on peut masquer en mettant le bouton dessus
Private Sub CommandButton1_Click()
[A1] = [A1] + 1
CommandButton1.Caption = [A1]
End Sub
ou ce code, on place la variable compteur au dessus du code
Private compteur As Long
Private Sub CommandButton1_Click()
compteur = compteur + 1
CommandButton1.Caption = compteur
End Sub
-
Mike-31, tu es génial !
c'est exactement ce que je cherchais
ça correspond tout à fait à mes attentes
je suppose que pour que le bouton revienne à 0, il faut que je crée un autre bouton avec une macro d'effacement ou y-a-t-il une autre solution ?
merci encore -
Re,
Tout dépend du code que tu as retenu, pour le premier, compteur dans une cellule exemple en A1, il suffit de saisir simplement -1 dans la cellule et clic sur le bouton pour le mettre à zéro.
Si la cellule est caché sous le bouton Atteindre saisir la référence cellule A1 et saisir -1 et clic sur le bouton pour le mettre à zéro
ou on crée un deuxième bouton
Private Sub CommandButton2_Click()
CommandButton1.Caption = 0
[A1] = 0
End Sub
Si tu retiens le code compteur il faut créer un deuxième bouton
Private Sub CommandButton2_Click()
CommandButton1.Caption = 0
compteur = 0
End Sub
-
Bonjour,
Une autre solution ?Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Static Num As Integer If Button = 1 Then If Shift = 0 Then Num = Num + 1 ElseIf Num > 0 Then Num = Num - 1 End If Else Num = 0 End If CommandButton1.Caption = Num End Sub
Clic gauche incrémente la variable.
Clic droit remet à zéro.
Clic gauche + Ctrl ou Maju décrémente la variable
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius) -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Re,
Pour éviter un effacement accidentel avec un seul bouton et une boite de dialogue. un clic le compteur est croissant, double clic une boite de dialogue propose l'effacement
Private compteur As Long
Private Sub CommandButton1_Click()
compteur = compteur + 1
CommandButton1.Caption = compteur
End Sub
Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
MyValue = MsgBox("Souhaitez vous continuer", _
vbYesNo + vbCritical + vbDefaultButton1, "Le compteur va être remis à zéro ?")
If MyValue = vbYes Then
CommandButton1.Caption = 0
compteur = 0
End If
End Sub
la msgbox peut également être ajouté à l'excellent code de Lermite que je salue -
OH la que de propositions !!!!
je regarde tout ça et je vous tiens au courant.
petite question : si je veux avoir un bouton de couleur différente que le gris, je suppose qu'il faut un activex et non un bouton de commande ?
je ne crois pas que l'on puisse changer la couleur d'un bouton de commande? ou alors je me trompe?
merci -
Re,
Il est tout à fait possible de changer la couleur du bouton, lorsque tu es en mode création, double clic sur le bouton ou clic droit et visualiser le code
cherches Backcolor et choisis une couleur sur la palette.
il est également possible de changer la couleur du bouton, dans ton cas en fonction de sa valeur en ajoutant une ligne de code par conditionnelle
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir. -
AH ! intéressant !
changer la couleur du bouton en fonction de sa valeur ?
je prends ! je peux avoir le code STP
merci encore -
re,
tu n'es pas devin............dommage par les temps qui courts; ça pourrait servir :)
non sérieusement, peu importe les couleurs que tu emploies, j'adapterais.
ai-je compris ta question ?
en fonction des boutons j'adapterais.
merci-
-
lermitte222
petite question : j'ai plusieurs boutons programmés comme tu me l'a conseillé.
maintenant, comment puis je faire pour que tous reviennent à 0, en appuyant sur 1 seul par exemple.
je ne sais pas encore si :
* il faudrait appuyer sur 1 pour remettre à 0 tous
* ou si un bouton me permettrait cela
qu'en penses-tu ?
-
-
Re,
ci dessous trois codes, deux pour deux bouton compteur avec changement de couleur et un pour remise à zéro des deux autres
Private compteur As Long
'la variable compteur est placé hors code
Private Sub CommandButton1_Click()
compteur = compteur + 1
CommandButton1.Caption = compteur
'Conditionnelle couleur bouton
If CommandButton1.Caption >= 0 Then CommandButton1.BackColor = &H8000000F
If CommandButton1.Caption >= 3 Then CommandButton1.BackColor = &HFFFF&
If CommandButton1.Caption >= 6 Then CommandButton1.BackColor = &HFF&
End Sub
Private Sub CommandButton2_Click()
compteur = compteur + 1
CommandButton2.Caption = compteur
If CommandButton2.Caption >= 0 Then CommandButton2.BackColor = &H8000000F
If CommandButton2.Caption >= 3 Then CommandButton2.BackColor = &HFFFF&
If CommandButton2.Caption >= 6 Then CommandButton2.BackColor = &HFF&
End Sub
Private Sub CommandButton3_Click()
'Macro remet compteurs à zéro
CommandButton1.Caption = 0
compteur = 0
CommandButton1.BackColor = &H8000000F
CommandButton2.Caption = 0
compteur = 0
CommandButton2.BackColor = &H8000000F
End Sub -
Re,
Mike : Un petit bug dans ton dernier exemple.
Pour que ton exemple fonctionne il faut autant de variable que de bouton :-)
rasoir :
Pour éviter d'ajouter un bouton de remise à zéro
Dans le haut du module coller ..Dim Coul As Long Sub RAZ() Dim Obj As OLEObject Dim Cel As Range, Plage As Range 'boucle sur les objets de la Feuil1 For Each Obj In Sheets("Feuil1").OLEObjects 'verifie s'il s'agit d'un bouton If TypeOf Obj.Object Is MSForms.CommandButton Then Obj.Object.Caption = "0" Obj.Object.BackColor = &H8000000F End If Next Obj Set Plage = Range("A1:B1") 'Adapter la plage aux boutons For Each Cel In Plage Cel = 0 Next Cel End Sub Private Function BT(ByVal Button As Integer, ByVal Shift As Integer, Num As Integer) As Integer If Button = 1 Then If Shift = 0 Then Num = Num + 1 ElseIf Num > 0 Then Num = Num - 1 End If Else Num = 0 If Shift <> 0 Then RAZ End If BT = Num Select Case Num Case Is >= 6: Coul = &HFF& Case Is >= 3: Coul = &HFFFF& Case Is >= 0: Coul = &H8000000F End Select End Function
Dans chaque code des boutons..(exemple pour 2 boutons mais tu peu en ajouter autant que tu veux)
Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) CommandButton1.Caption = BT(Button, Shift, Val(CommandButton1.Caption)) CommandButton1.BackColor = Coul [A1] = CommandButton1.Caption End Sub Private Sub CommandButton2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) CommandButton2.Caption = BT(Button, Shift, Val(CommandButton2.Caption)) CommandButton2.BackColor = Coul [B1] = CommandButton2.Caption End Sub
Clic gauche incrémente le bouton.
Clic droit remet le bouton à zéro.
Clic gauche + Ctrl ou Maju décrémente le bouton
Clic droit + Ctrl ou Maju remet TOUT les boutons à zéro.
Tu dis,
Edit : au cas ou c'est pas clair, un exemple avec 4 boutons
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius) -
ok, merci à tous les deux
je vérifie ça !
petite question : y a- t -il un moyen pour paramétrer la taille des boutons ?
quand on en a beaucoup à faire et que l'on veut qu'ils soient tous pareils en terme de taille, peut-on paramétrer cela ?
merci d'avance -
-