Affecter une macro à un bouton créé par macro

Bonjour,

je pensais que cela serait simple mais je galère à chercher depuis des jours.

J'ai créé une macro pour remettre en ordre un fichier txt. Cela crée une nouvelle feuille avec un bouton sous la dernière ligne.

Mais je ne trouve pas comment attribuer une action au bouton, c'est à dire lancer la fonction export_fichier qui permet d'enregistrer le fichier

'Création du bouton
Sheets(2).Select
    Set boutonA = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
        , DisplayAsIcon:=False, Left:=420, Top:=NbrLig * 15 + 15, Width:=120.75, Height _
        :=30.75)

    With boutonA
        .Name = "boutonA"
        .Object.BackColor = RGB(90, 160, 26)      'Couleur du bouton
        .Object.Caption = "Exporter le CSV"   'Texte du bouton
        .Object.FontName = "Times New Roman"        'Police du bouton
        .Object.FontSize = 12                       'Taille police du bouton

    End With

Application.ScreenUpdating = True
End Sub

'enregistrement du fichier
Sub export_fichier()
dossierparent = Left(ActiveWorkbook.Path, InStrRev(ActiveWorkbook.Path, "\") - 1) 'chemin du dossier parent
nomfichier = ActiveSheet.Name
chemin = dossierparent & "\Flux\Commandes - Flux 1.5.1\"
ActiveSheet.Copy
   ActiveWorkbook.SaveAs Filename:=dossier & "\Flux\Commandes - Flux 1.5.1\" & nomfichier, FileFormat:=xlCSV, _
    CreateBackup:=False, local:=True
ActiveWorkbook.Close False
   MsgBox ("Fichier commande créé - Flux 1.5.1")

End Sub

J'ai essayé .onaction = export_fichier sans succès

Merci pour votre aide

Cordialement

Bonjour,

Pour un bouton de formulaire, ou une forme utilisée comme bouton :

    ActiveSheet.Shapes("boutonA").OnAction = "export_fichier"

Pour un ActiveX, il faut insérer du code dans le module de la feuille :

    With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
        .InsertLines .CountOfLines + 1, "Private Sub boutonA_Click:" _
         & "export_fichier:End Sub"
    End With

Cordialement.

Bonjour

Bonjour MFerrand

Ma contribution

Sub bouton()
Dim Sh As Shape
'Création du bouton
Sheets(1).Select
    Set Sh = ActiveSheet.Shapes.AddShape(msoShapeRectangle, Left:=420, Top:=NbrLig * 15 + 15, Width:=120.75, Height:=30.75)
    Sh.Fill.ForeColor.RGB = RGB(90, 160, 26)
    Sh.TextFrame2.TextRange.Text = "Exporter le CSV"

      With Sh.TextFrame2.TextRange.Font
        .Fill.ForeColor.RGB = RGB(0, 114, 198)
        .Size = 12
        .Name = "Times New Roman"
      End With

      With Sh.TextFrame2
        .HorizontalAnchor = msoAnchorCenter
        .VerticalAnchor = msoAnchorMiddle
      End With
      Sh.OnAction = "export_fichier"
      Application.ScreenUpdating = True
End Sub

Salut M12 !

A le faire, j'aurais aussi opté pour cette méthode !

Bonne journée.

Merci à vous ! Cela fonctionne parfaitement !

Rechercher des sujets similaires à "affecter macro bouton cree"