Recherche
Posez votre question Signaler

[VBA] fonction click sur commandbutton

Kino76 85Messages postés mardi 26 juillet 2011Date d'inscription 15 décembre 2011Dernière intervention - Dernière réponse le 29 juil. 2011 à 14:51
Bonjour je voudrais savoir pourquoi la fonction permettant le clique sur un commandbutton ne reste pas sauvegarder et disparait a chaque fois que j'enregistre et ferme le classeur...?
J'ai essayer de la mettre dans un module ou dans un module de class rien n'y fait
Lire la suite 
Réponse
+0
moins plus
Bonjour,
Pourrais tu placer ici même le code de ta fonction?
Ajouter un commentaire
Réponse
+0
moins plus
oui

Code de la creation du bouton
--------------------------------------------------------------------------------------
Public Function CreateButton()
Dim o As OLEObject
Worksheets("Principal").Select
Set o = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=100, Top:=150, Width:=80, Height:=30)
o.Select
Selection.Name = "ButtonInitFeuille"
o.Object.Caption = "Initialisation"
End Function

----------------------------------------------------------------------------------
la fonction principal qui l'appelle
----------------------------------------------------------------------------------
Sub InitFeuille()
Call CreateButton
End Sub
-----------------------------------------------------------------------------------

et la fonction du bouton que j'ai essayer de mettre soit dans le module en lui meme soit dans un module de class
-----------------------------------------------------------------------------------

Option Explicit
Public WithEvents ButtonInitFeuille As CommandButton
Private Sub ButtonInitFeuille_Click()
Call InitFeuilleTab
End Sub
--------------------------------------------------------------------------
avec ou sans les deux premiere lignes
pijaku 10805Messages postés jeudi 15 mai 2008Date d'inscription ContributeurStatut 1 avril 2015Dernière intervention - 28 juil. 2011 à 15:21
et mon fichier exemple???????
Répondre
Kino76 85Messages postés mardi 26 juillet 2011Date d'inscription 15 décembre 2011Dernière intervention - 28 juil. 2011 à 15:40
non plus...
Répondre
pijaku 10805Messages postés jeudi 15 mai 2008Date d'inscription ContributeurStatut 1 avril 2015Dernière intervention - 28 juil. 2011 à 15:49
rusons alors...
remplace :
If TypeOf oleObj.Object Is MSForms.CommandButton Then
par :
If Left(oleObj.Name, 17) = "ButtonInitFeuille" Then


Tant qu'on y est, la procédure de création de bouton gagne à être améliorer par :
Sub CreateButton() 
Dim o As OLEObject 
Worksheets("Principal").Select 
Set o = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=100, Top:=150, Width:=80, Height:=30) 
o.Select 
Selection.Name = "ButtonInitFeuille" & ActiveSheet.OLEObjects.Count 
o.Object.Caption = "Initialisation" & ActiveSheet.OLEObjects.Count 
End Sub

Ca rajoute un numéro au nom et caption de chaque bouton...
Répondre
Kino76 85Messages postés mardi 26 juillet 2011Date d'inscription 15 décembre 2011Dernière intervention - 28 juil. 2011 à 15:53
cela change l'erreur de place maintenant c'est au niveau de set Bouton(cpt).ButtonInitFeuille = oleObj.Object ...

toujours la meme erreur
Répondre
pijaku 10805Messages postés jeudi 15 mai 2008Date d'inscription ContributeurStatut 1 avril 2015Dernière intervention - 28 juil. 2011 à 15:56
Peux tu me remettre ici, en réponse, pas en commentaire, tous les codes présents dans ton classeur. Soit :
- CreateButton
- initButton
- Public WithEvents ButtonInitFeuille As CommandButton
- Private Sub ButtonInitFeuille_Click
- Private Sub Workbook_Open()
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Module 1
-----------------------------------------------------------------------------
Dim Bouton() As New Classe1

Sub InitBoutons()
Dim cpt As Integer
Dim oleObj As OLEObject

For Each oleObj In ActiveSheet.OLEObjects
If Left(oleObj.Name, 17) = "ButtonInitFeuille" Then
cpt = cpt + 1
ReDim Preserve Bouton(1 To cpt)
Set Bouton(cpt).ButtonInitFeuille = oleObj.Object
End If
Next
End Sub

Sub CreateButton()
Dim o As OLEObject
Worksheets("Feuil1").Select
Set o = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=100, Top:=150, Width:=80, Height:=30)
o.Select
Selection.Name = "ButtonInitFeuille" & ActiveSheet.OLEObjects.Count
o.Object.Caption = "Initialisation" & ActiveSheet.OLEObjects.Count
End Sub

Public Function InitFeuillTab()
MsgBox "Sa fonction"
End Function
-------------------------------------------------------------------------
Class 1
---------------------------------------------------------------------------

Option Explicit

Public WithEvents ButtonInitFeuille As CommandButton


Private Sub ButtonInitFeuille_Click()
Call InitFeuilleTab
End Sub
----------------------------------------------------------------------------
thisworkbook
---------------------------------------------------------------------------
Private Sub Workbook_Open()
Call InitBoutons
End Sub
---------------------------------------------------------------------------
Kino76 85Messages postés mardi 26 juillet 2011Date d'inscription 15 décembre 2011Dernière intervention - 28 juil. 2011 à 16:52
mais je voudrais que le bouton soit crée automatiquement sans aucune manip
Répondre
pijaku 10805Messages postés jeudi 15 mai 2008Date d'inscription ContributeurStatut 1 avril 2015Dernière intervention - 28 juil. 2011 à 17:06
Pas de souci. Cependant, pour la création du bouton et l'initialisation, il faut (je ne sais pas pourquoi) 2 événements différents. Je te propose donc de créer le bouton à l'ouverture du classeur et d'initialiser tous les boutons à l'activation de ta feuille "principale. Ce qui donne :
Private Sub Workbook_Open()
    Call CreateButton
    Sheets("Feuil2").Activate 'Feuil2 est n'importe qu'elle autre feuille de ton classeur sauf "principale"
End Sub

Dans le code de ta feuil principal (clic droit sur l'onglet de la feuille/visualiser le code) :
Private Sub Worksheet_Activate()
Call InitBoutons
End Sub

Lors de l'ouvertur, VBA va créer un new bouton et activer ta feuil2. Lorsque tu activeras ta feuil principal (en cliquant sur son onglet) les boutons seront automatiquement initialisés.

Par contre, je ne sais pas pourquoi on ne peux pas appeler les deux procédures l'une après l'autre, sinon ça marche pas!!!
J'me renseignerai à ce propos pour demain, si tu veux bien...
Répondre
Kino76 85Messages postés mardi 26 juillet 2011Date d'inscription 15 décembre 2011Dernière intervention - 28 juil. 2011 à 17:13
le probleme C'est que j'ai une fonction qui crée la feuille principal et qui suprimme les feuil1 feuil2 et feuil3 de depart...
Répondre
pijaku 10805Messages postés jeudi 15 mai 2008Date d'inscription ContributeurStatut 1 avril 2015Dernière intervention - 29 juil. 2011 à 09:09
Salut,
Tu n'as qu'un seul bouton de créé et qui doit réaliser une action?
Répondre
pijaku 10805Messages postés jeudi 15 mai 2008Date d'inscription ContributeurStatut 1 avril 2015Dernière intervention - 29 juil. 2011 à 14:51
Comme tu n'as qu'1 bouton, fais comme indiqué ici
Répondre
Ajouter un commentaire
Ce document intitulé «  [VBA] fonction click sur commandbutton  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.