XL 2010 Affecter une macro à un bouton automatiquement

DMT

XLDnaute Nouveau
Bonjour à tous,

J'ai créé un fichier qui a une feuille principale (Menu) qui ouvre à la demande une autre feuille avec des données précises demandées par le menu.

Cette feuille s'ouvre bien avec les renseignements demandés, pas de problème.

Par contre, sur cette nouvelle feuille, (dans mon programme VBA) je lui demande d'insérer un bouton en haut à gauche qui s'appelle "Fermer et retour Menu". Peeas de problème non plus jusque là, ça insère bien mon bouton.

Là où je butte, c'es au niveau de l'affectation de la fonction qui referme la feuille pour retourner au menu.

Mon code VBA :

Sub Ouverture()

' Ouverture Macro

Sheets.Add After:=Sheets(Sheets.Count)
Rows("1:1").Select
Selection.RowHeight = 75
Range("A1").Select
ActiveSheet.Pictures.Insert( _
"C:\Users\BD\Desktop\Dossier Département\Blasons\Button.jpg").Select
Range("A1").Select
End Sub


Il me faut juste trouver le moyen de refermer cette nouvelle feuille à l'aide du bouton créé pour le retour au Menu.

Je vous met un fichier "Exemple" qui reflète (à peu prêt) ce que je veux.

Je suis compliqué, mais je butte sur cette fonction.

Bonne journée à tous, DMT.
 

Pièces jointes

  • Exemple.xlsm
    19.5 KB · Affichages: 17

Staple1600

XLDnaute Barbatruc
Re

Bébére
La macro Menu était dans le message#2
Mais effectivement c'est moi qui ajouté cette macro pour faire le test.
Donc je reposte tout le code (pour plus de commodité, mettre tout dans le module 1)
C'est la macro Test_III qu'il faut lancer.
VB:
Option Explicit
Sub Test_III()
Dim Nshp$, NomF
'ajout feuille et nommage de celle-ci
NomF = InputBox("Nom de la feuille à créer?", "Création Feuille", "Feuil" & Sheets.Count + 1)
Sheets.Add(After:=Sheets(Sheets.Count)).Name = CStr(NomF)
'récupération du nom de la forme de la feuille Données
'NB: En situation de test, il n'y avait qu'une forme, d'ou le 1
Sheets("Données").Shapes(1).Name = "Bouton"
Nshp = Sheets("Données").Shapes(1).Name
'recopie de la forme sur la nouvelle feuille
CopierShape Sheets("Données"), Sheets(NomF), Nshp
'attribution d'une macro (stockée dans le module 1) à la forme recopiée
Sheets(NomF).Shapes(1).OnAction = ThisWorkbook.Name & "!Module1.Menu"
Sheets(NomF).Range("A1").Select
End Sub
Private Sub CopierShape(ws1 As Worksheet, ws2 As Worksheet, shpNom As String)
Dim shp As Shape
Set shp = ws1.Shapes(shpNom).Duplicate
shp.Cut: ws2.Paste
ws2.Shapes(shpNom).Name = shpNom & "_Copie"
End Sub
Sub Menu()
Sheets("Feuil1").Activate
End Sub
 

DMT

XLDnaute Nouveau
Re

Bébére
La macro Menu était dans le message#2
Mais effectivement c'est moi qui ajouté cette macro pour faire le test.
Donc je reposte tout le code (pour plus de commodité, mettre tout dans le module 1)
C'est la macro Test_III qu'il faut lancer.
VB:
Option Explicit
Sub Test_III()
Dim Nshp$, NomF
'ajout feuille et nommage de celle-ci
NomF = InputBox("Nom de la feuille à créer?", "Création Feuille", "Feuil" & Sheets.Count + 1)
Sheets.Add(After:=Sheets(Sheets.Count)).Name = CStr(NomF)
'récupération du nom de la forme de la feuille Données
'NB: En situation de test, il n'y avait qu'une forme, d'ou le 1
Sheets("Données").Shapes(1).Name = "Bouton"
Nshp = Sheets("Données").Shapes(1).Name
'recopie de la forme sur la nouvelle feuille
CopierShape Sheets("Données"), Sheets(NomF), Nshp
'attribution d'une macro (stockée dans le module 1) à la forme recopiée
Sheets(NomF).Shapes(1).OnAction = ThisWorkbook.Name & "!Module1.Menu"
Sheets(NomF).Range("A1").Select
End Sub
Private Sub CopierShape(ws1 As Worksheet, ws2 As Worksheet, shpNom As String)
Dim shp As Shape
Set shp = ws1.Shapes(shpNom).Duplicate
shp.Cut: ws2.Paste
ws2.Shapes(shpNom).Name = shpNom & "_Copie"
End Sub
Sub Menu()
Sheets("Feuil1").Activate
End Sub


Coucou, me revoilà.

Je viens de rentrer le prg VBA dans mon fichier "Exemple" module1 et ça à l'air de fonctionner, Merci à toi.

Cependant je dois fermer cette page en même temps que le retour au menu ...

Merci de ton aide.
 

Staple1600

XLDnaute Barbatruc
Re

Il n'y a pas d'obligation à passer une discussionn en Résolue
(Personnellement, je ne suis pas pour : un problème n'est jamais résolu, puisqu' il peut existe N façons de le résoudre.
Et c'est toujours intéressant et formateur de voir comment autrui appréhende et solutionne une question )

Sinon, pour passer en Résolu, faut utiliser le préfixe Résolu (dans Statut de la discussion )
Liste déroulante en haut à gauche
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 944
Membres
101 849
dernier inscrit
florentMIG