1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2007 Ajout bouton dynamique

Discussion dans 'Forum Excel' démarrée par GHISLAIN, 1 Février 2017.

  1. GHISLAIN

    GHISLAIN XLDnaute Impliqué

    Inscrit depuis le :
    10 Février 2006
    Messages :
    573
    "J'aime" reçus :
    0
    Bonjour les excelien ,

    Voila lors du lancement d'un user , des boutons sont ajoutés dynamiquement , leurs noms caption est affecté par la valeur de cellule ainsi que la couleur et leur typetext.

    En fin de code j'ajoute le code VBA sur chaque bouton créé mais quand je clique sur le bouton , bien que le code soit présent , rien ne se passe

    pouvez vous m'aiguiller

    Merci a tous

    Amicalement

    Ghislain
     

    Pièces jointes:

  2. PMO2

    PMO2 XLDnaute Accro

    Inscrit depuis le :
    4 Décembre 2008
    Messages :
    1286
    "J'aime" reçus :
    76
    Habite à:
    Paris 12
    Bonjour,

    Cela ne marche pas comme vous faites.
    Il faut créer un module de classe pour intercepter les événements sur les CommandButtons.

    1) Code modifié du UserForm
    Code (Visual Basic):
    Dim ColCommandButton As New Collection

    Private Sub UserForm_Initialize()
    Dim obEvents As clsControlsEvents
    Dim CMB As MSForms.CommandButton
    Dim TOPS_RECTANGLES As Integer
    Dim i As Long

    Me.TextBox1.Value = Application.WorksheetFunction.CountA(Worksheets("Parametre").Range("A1:A2500"))
    ' CREATION DES BOUTONS:
    TOPS_RECTANGLES = 6
    For i = 1 To CLng(TextBox1.Value)
      Set CMB = UserForm1.Controls.Add("Forms.CommandButton.1", , True)
      With CMB
        .Left = 2
        .Width = 108
        .Height = 24
        .Top = TOPS_RECTANGLES
        .BackColor = Worksheets("Parametre").Range("a" & i).Interior.Color
        .ForeColor = &H80000012
        .ControlTipText = Worksheets("Parametre").Range("b" & i)
        .Caption = Worksheets("Parametre").Range("a" & i)
        With .Font
          .Italic = False
          .Bold = True
          .Name = "Times new roman"
          .Size = 14
        End With
      End With
     
    '--- Evènement des CommandButtons ---
    Set obEvents = New clsControlsEvents
    Set obEvents.CMBx = CMB
    Set obEvents.USF = Me
    ColCommandButton.Add obEvents
    '------------------------------------
     
      TOPS_RECTANGLES = TOPS_RECTANGLES + 30
    Next i
    End Sub
    2) Code du module de classe qu'il faut renommer clsControlsEvents
    Code (Visual Basic):
    Public WithEvents CMBx As MSForms.CommandButton
    Public USF As UserForm

    Private Sub CMBx_Click()
    '/// Ne sert à rien, juste pour visualiser quand on clique
    MsgBox "Name : " & CMBx.Name & vbLf & "Caption : " & CMBx.Caption & vbLf & "ControlTipText : " & CMBx.ControlTipText
     
    Select Case CMBx.Name
      Case "CommandButton1"
        '/// votre traitement particulier à ce bouton
      Case "CommandButton2"
        '/// votre traitement particulier à ce bouton
       
    '/// etc

    End Select
    End Sub
     

    Pièces jointes:

  3. GHISLAIN

    GHISLAIN XLDnaute Impliqué

    Inscrit depuis le :
    10 Février 2006
    Messages :
    573
    "J'aime" reçus :
    0
    Bonjour PMO2

    j'avais effectivement trouvé un tuto parlant de ce module de classe que j'ai utilisé . Par contre dans cette exemple , les actions sont mises différemment et sont intégrés dans le module normal lors de la création des boutons :

    Set Btn1 = Form.Designer.Controls.Add("forms.commandbutton.1")
    With Btn1
    .Name = "Fermer"
    .Caption = "Fermer"
    .Left = 2
    .Top = 2
    .BackColor = RGB(255, 0, 0)
    .Width = 46
    .Height = 24
    End With

    With Form.CodeModule
    X = .CountOfLines + 1
    Code = "Sub Fermer_Click()" & vbCrLf
    Code = Code & " " & vbCrLf
    Code = Code & " " & vbCrLf
    Code = Code & " " & vbCrLf
    Code = Code & " Me.Hide" & vbCrLf
    Code = Code & "End Sub" & vbCrLf
    .InsertLines X, Code
    End With


    mais votre proposition parait plus judicieuse pour retrouver plus facilement les codes a modifier .

    Je joint quand même mon travail qui pourra être utilisé par d'autre .
    Dans cette proposition , j'ai ajouté un userform des 56 couleurs qui permet de choisir la couleur du bouton lors de sa création.

    Merci a vous PMO2 d'étre passé sur mon post et je garde sous le coude votre travail

    Bien cordialement

    ghislain
     

    Pièces jointes:

Partager cette page