Attribuer une macro à plusieurs boutons identiques

fleet21

XLDnaute Junior
Bonjour,

Je voudrais attribuer une macro à chaque bouton identique de plusieurs onglets (3 pour l'exemple). Le copiage du code s’effectue correctement avec la copie de l’onglet mais le bouton ne pointe plus vers le code, il s'agit des deux lignes '''attribution bouton <-> macro'' qui ne convienne pas.

VB:
Sub CommandButton1_Click()

nbonglet = 3

With CommandButton1

    If CommandButton1.Value = False Then

        Chm = "C:\Users\Poste1\Desktop\"
               
        Workbooks.Add
        ActiveWorkbook.SaveAs Filename:=Chm & of & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

        Workbooks("Fichier_origine").Sheets("Onglet_1").Copy After:=Workbooks(of).Sheets(2)
        Workbooks("Fichier_origine").Sheets("Onglet_2").Copy After:=Workbooks(of).Sheets(3)

            For i = 1 To nbonglet
   
            Sheets("Onglet_2").Copy After:=Sheets(Sheets.Count)  'copie de l'onglet 2 en x onglets
            ActiveSheet.Name = "" & (i)
   
            ActiveSheet.Shapes("Button 1").Select 'attribution bouton <-> macro
            Selection.OnAction = "Feuil6.okbutton" 'attribution bouton <-> macro

            Next i
                      
    End If

    Application.DisplayAlerts = False
    Sheets("Onglet_2").Delete 'supprime l'onglet "Tableau de suivi"
    Sheets("Feuil1").Delete 'supprime onglet 1
    Sheets("Feuil2").Delete 'supprime onglet 2
    Sheets("Feuil3").Delete 'supprime onglet 3
    Application.DisplayAlerts = True

    Sheets("1").Select

    ActiveWorkbook.Save
    Windows("Fichier_origine").Activate
    ActiveWorkbook.Close
    Unload Me 'sortie userform

End With

End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bpnsoir
Le code d'un CommandButton doit être dans le module de l'objet Workseet qui le porte. Mais ce code peut éventuellement consister juste en l'appel d'une procédure d'un module standard.
L'autre solution c'est d'utiliser un bouton de formulaire, auquel on affecte une macro d'un module standard.
 

fleet21

XLDnaute Junior
Merci Dranreb. Ce code posté plus haut est placé dans un userform et le code du bouton est placé dans la feuille de l'onglet 2 du fichier d'origine.
Mon souci est de lier, lors de la création du nouveau fichier et des onglets associés, le bouton de chaque onglet avec le code copié et donc déjà présent dans chaque feuille d'onglet, en espérant avoir été clair.
 

Dranreb

XLDnaute Barbatruc
Prenez alors plutôt un CommandButton avec son code dans la feuille.
Ça ne se fait pas d'affecter une procédure d'un module objet à la propriété on action d'un objet de formulaire.
Et quitte à exécuter une macro d'un objet Worksheet, autant alors que ce soit celle qui prend en charge l'évènement Click d'un objet ActiveX implanté dedans. Comme ça en dupliquant la feuille on duplique tout avec.
 

Discussions similaires


Haut Bas