[VBA] fonction click sur commandbutton

Kino76 Messages postés 93 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Pourrais tu placer ici même le code de ta fonction?
    0
  2. 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Oui. Ok. Mais qu'elle fonction disparait???
      0
    2. 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
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Cette fonction en appelle une autre, nommée : InitFeuilleTab
      Quel est le code de InitFeuilleTab?
      0
    4. Kino76 Messages postés 93 Statut Membre 3
       
      Public Function InitFeuilleTab()
      Worksheets("***").Select
      Range("A1:I1").Select
      Selection.Merge
      End Function
      0
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  3. 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    2. Kino76 Messages postés 93 Statut Membre 3
       
      et je met sa ou?
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      dans le module 1. Ca n'est qu'un test...
      0
    4. 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
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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