[VBA] fonction click sur commandbutton

Kino76 Messages postés 93 Statut Membre -  
pijaku Messages postés 13513 Statut Modérateur -
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

A voir également:

3 réponses

pijaku Messages postés 13513 Statut Modérateur 2 763
 
Bonjour,
Pourrais tu placer ici même le code de ta fonction?
0
Kino76 Messages postés 93 Statut Membre 3
 
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
0
pijaku Messages postés 13513 Statut Modérateur 2 763
 
Oui. Ok. Mais qu'elle fonction disparait???
0
Kino76 Messages postés 93 Statut Membre 3
 
et bien la fonction pour le clic sur le bouton ne disparait pas mais reste inactif
0
pijaku Messages postés 13513 Statut Modérateur 2 763
 
Cette fonction en appelle une autre, nommée : InitFeuilleTab
Quel est le code de InitFeuilleTab?
0
Kino76 Messages postés 93 Statut Membre 3
 
Public Function InitFeuilleTab()
Worksheets("***").Select
Range("A1:I1").Select
Selection.Merge
End Function
0
pijaku Messages postés 13513 Statut Modérateur 2 763
 
Bon. Ton souci ne vient aucunement de tes fonctions. En fait, il faut attribuer ta classe (le code du module de classe) à ton bouton. Pour cela, il convient de modifier le code de la fonction CreateButton().
Tout ça pour fusionner quelques cellules?
Tu dis...
0
Kino76 Messages postés 93 Statut Membre 3
 
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
---------------------------------------------------------------------------
0
pijaku Messages postés 13513 Statut Modérateur 2 763
 
Essaye ce test :
Sub test() 
Dim cpt As Integer 
Dim oleObj As OLEObject 

For Each oleObj In ActiveSheet.OLEObjects 
    If Left(oleObj.Name, 17) = "ButtonInitFeuille" Then 
        MsgBox oleObj.Object & " " & oleObj.Name
    End If 
Next 
End Sub
0
Kino76 Messages postés 93 Statut Membre 3
 
et je met sa ou?
0
pijaku Messages postés 13513 Statut Modérateur 2 763
 
dans le module 1. Ca n'est qu'un test...
0
Kino76 Messages postés 93 Statut Membre 3
 
il ne peut pas faire le test vu qu'il ne veut meme pas crée le bouton
0
pijaku Messages postés 13513 Statut Modérateur 2 763
 
Tu n'as pas de boutons sur ta feuille???????????????
Depuis tout à l'heure, tu me dis que le problème vient de InitButton??????????
Si tu n'as pas de bouton sur ta feuille comment veux tu les initialiser??????
SCROGNEUGNEU!!!!!!!!!
Ta macro CreateButton fonctionne t'elle?
S'agit-il de la feuille "Feuil1" ou "principale"? en conséquence, adapter : Worksheets("Feuil1").Select
Tu dis..... Grrrrrrrrr!!!!!!!!
0