affecter 2 macros à 1 bouton

cel1205

XLDnaute Nouveau
Bonjour,

Je viens de créer un fichier avec macro. Elles fonctionnent toutes. Jai créé un bouton sur lequel est affecté une macro, le problème c'est que je souhaiterais en affecter une deuxième sur le même bouton, mais je n'y arrive pas.

Pourriez vous m'aider.

Je joins le fichier pour plus de compréhension.
Sur le bouton je voudrais affecter les macro archivage et macro2.

Merci d'avance.
 

Pièces jointes

  • Additifs.zip
    35.5 KB · Affichages: 133
  • Additifs.zip
    35.5 KB · Affichages: 129
  • Additifs.zip
    35.5 KB · Affichages: 130

tbft

XLDnaute Accro
Re : affecter 2 macros à 1 bouton

Bonjour

as tu essayé de faire un vrai bouton et pas un dessin?
tu obtiendrais un évènement sous la feuille en question et tu pourrais y lancer autant de macro que tu veux

tu pourrais aussi passer par une macro intermédiaire (avec ton dessin) qui lancerai les autres macro....
 

Lermiton

XLDnaute Nouveau
Re : affecter 2 macros à 1 bouton

Bonjour.

On ne peut affecter qu'une seule macro à un bouton. Tu as affecté la macro "Archivage" à ton bouton. Si tu veux qu'il déclenche aussi la macro "renome", crée la macro "Archiver_Renommer" et affecte la à ton bouton en lieu et place de la macro "Archivage". Dans cette macro "globale", appelle les macros "de détail" dans l'ordre où tu veux qu'elles soient exécutées.

Code:
Sub Archiver_Renommer()
    Archivage
    renome
End Sub

PS : dans une feuille de calcul, on peut créer un objet texte ou dessin auquel on peut affecter une macro et une seule. Mieux : on peut créer un bouton de commande ("CommanButton") avec la "Boite à outils contrôles" (afficher la barre d'outils "Visual Basic", cliquer sur le bouton "mode création" puis sur le bouton "Boite à outils ...") mais lui aussi ne pourra avoir qu'une macro et une seule (clic droit sur le bouton, choix "Visualiser le code") qu'on pourra tester après avoir désactivé le mode création.
 
Dernière édition:

mercant76

XLDnaute Impliqué
Re : affecter 2 macros à 1 bouton

bonjour,

si, çà marche !!!

dans macro2, tu efface les cellules C9 à C41.

je suppose que ce sont celles de la 1ère feuille ?

alors que là, tu effaces celles de la feuille destination.

essaies en mettant des données dans la colonne C de la feuille destination, et tu verras

qu'elles disparaitront.

donc, il faut que tu indiques dans quelle feuille il faut supprimer.

j'avais testé la macro en pas à pas, et çà marchait, par contre, je n'avais pas vérifié si

les macros faisaient leur travail.


@+
 

Efgé

XLDnaute Barbatruc
Re : affecter 2 macros à 1 bouton

Bonjour à tous,
Une proposition en une seule macro:
Code:
[COLOR=blue]Sub[/COLOR] Archivage()
[COLOR=blue]Dim[/COLOR] Cible [COLOR=blue]As String[/COLOR]
Application.ScreenUpdating = 0
Cible = "Historique " & ActiveSheet.Range("B4")
ActiveSheet.Range("C9:C41").Copy
[COLOR=blue]With[/COLOR] Sheets(Cible).Range("C9:C41")
    .PasteSpecial Paste:=xlPasteValues
    .Interior.ColorIndex = xlNone
    .Borders.LineStyle = xlNone
    .EntireColumn.Insert
    .ColumnWidth = 12
[COLOR=blue]End With[/COLOR]
[COLOR=blue]With[/COLOR] ActiveSheet
    .Range("C9:C41").ClearContents
    .Range("C9").Select [COLOR=#008000]' pas indispensable[/COLOR]
[COLOR=blue]End With[/COLOR]
MsgBox "Exportation terminée"[COLOR=green] ' pas indispensable[/COLOR]
Application.ScreenUpdating = 1 [COLOR=#008000]' ne pas oublier de réactiver l'écran[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 

Efgé

XLDnaute Barbatruc
Re : affecter 2 macros à 1 bouton

Re
Si j'ai bien compris, ceci devrai suffire:
Code:
[COLOR=blue]Sub[/COLOR] Archivage()
[COLOR=blue]Dim[/COLOR] Cible [COLOR=blue]As String[/COLOR]
[COLOR=blue]Dim[/COLOR] Col [COLOR=blue]As Long[/COLOR]
Cible = "Historique " & Range("B4")
[COLOR=blue]With[/COLOR] Sheets(Cible)
   [COLOR=green]'Trouver la première colonne vide en ligne 9[/COLOR]
    Col = .Cells(9, Application.Columns.Count).End(xlToLeft).Column + 1
   [COLOR=green]'Si la colonne est avant la D alors on prend la D[/COLOR]
    [COLOR=blue]If[/COLOR] Col < 4 [COLOR=blue]Then[/COLOR] Col = 4
   [COLOR=green]'On met les valeurs dans la colonne trouvée[/COLOR]
    .Range(.Cells(9, Col), .Cells(41, Col)) = Range("C9:C41").Value
[COLOR=blue]End With[/COLOR]
Range("C9:C41").ClearContents
[COLOR=blue]End Sub[/COLOR]
Cordialement
 

Statistiques des forums

Discussions
312 412
Messages
2 088 195
Membres
103 763
dernier inscrit
p.michaux