[VBA] fonction click sur commandbutton

Fermé
Kino76 Messages postés 85 Date d'inscription mardi 26 juillet 2011 Statut Membre Dernière intervention 15 décembre 2011 - 27 juil. 2011 à 22:18
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 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

3 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
28 juil. 2011 à 10:57
Bonjour,
Pourrais tu placer ici même le code de ta fonction?
0
Kino76 Messages postés 85 Date d'inscription mardi 26 juillet 2011 Statut Membre Dernière intervention 15 décembre 2011 3
28 juil. 2011 à 11:02
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 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
28 juil. 2011 à 11:09
Oui. Ok. Mais qu'elle fonction disparait???
0
Kino76 Messages postés 85 Date d'inscription mardi 26 juillet 2011 Statut Membre Dernière intervention 15 décembre 2011 3
28 juil. 2011 à 11:13
et bien la fonction pour le clic sur le bouton ne disparait pas mais reste inactif
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
28 juil. 2011 à 11:14
Cette fonction en appelle une autre, nommée : InitFeuilleTab
Quel est le code de InitFeuilleTab?
0
Kino76 Messages postés 85 Date d'inscription mardi 26 juillet 2011 Statut Membre Dernière intervention 15 décembre 2011 3
28 juil. 2011 à 11:16
Public Function InitFeuilleTab()
Worksheets("***").Select
Range("A1:I1").Select
Selection.Merge
End Function
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
28 juil. 2011 à 11:33
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 85 Date d'inscription mardi 26 juillet 2011 Statut Membre Dernière intervention 15 décembre 2011 3
28 juil. 2011 à 16:03
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 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
28 juil. 2011 à 16:20
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 85 Date d'inscription mardi 26 juillet 2011 Statut Membre Dernière intervention 15 décembre 2011 3
28 juil. 2011 à 16:23
et je met sa ou?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 28/07/2011 à 16:24
dans le module 1. Ca n'est qu'un test...
0
Kino76 Messages postés 85 Date d'inscription mardi 26 juillet 2011 Statut Membre Dernière intervention 15 décembre 2011 3
28 juil. 2011 à 16:25
il ne peut pas faire le test vu qu'il ne veut meme pas crée le bouton
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
28 juil. 2011 à 16:31
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