Affecter une macro à des boutons aléatoires en VBA

Bonjour,

Pour vous expliquer rapidement j'ai créé un code qui copie une feuille excel et lui attribue un bouton d'accès sur la page Sommaire, le problème est que je n'arrive pas à affecter une macro à ce bouton du type :

Sheets(copiefeuille).Visible = True

ActiveSheet.Visible = False

je pensais utilisée .OnAction mais je suis bloquée sur l'étape suivante à faire pour pouvoir lier ces 2 codes.

Voici le code de copie que j'ai réalisé :

Sub copie()

nomFeuille = ActiveSheet.Name

ActiveSheet.Copy After:=Sheets(nomFeuille)

ActiveSheet.Shapes("Arrondir un rectangle avec un coin diagonal 2").Visible = False

Sheets("Sommaire").Visible = True

Sheets("Sommaire").Activate

nom = InputBox("Quel nom souhaitez-vous inscrire sur le bouton?", "Nom du bouton", "")

TxtB1 = Sheets("Sommaire").Shapes("Rectangle à coins arrondis 47").TextFrame2.TextRange.Characters.Text

TxtB2 = Sheets("Sommaire").Shapes("Rectangle à coins arrondis 50").TextFrame2.TextRange.Characters.Text

TxtB3 = Sheets("Sommaire").Shapes("Rectangle à coins arrondis 51").TextFrame2.TextRange.Characters.Text

TxtB4 = Sheets("Sommaire").Shapes("Rectangle à coins arrondis 52").TextFrame2.TextRange.Characters.Text

TxtB5 = Sheets("Sommaire").Shapes("Rectangle à coins arrondis 53").TextFrame2.TextRange.Characters.Text

TxtB6 = Sheets("Sommaire").Shapes("Rectangle à coins arrondis 54").TextFrame2.TextRange.Characters.Text

TxtB7 = Sheets("Sommaire").Shapes("Rectangle à coins arrondis 55").TextFrame2.TextRange.Characters.Text

TxtB8 = Sheets("Sommaire").Shapes("Rectangle à coins arrondis 56").TextFrame2.TextRange.Characters.Text

TxtB9 = Sheets("Sommaire").Shapes("Rectangle à coins arrondis 57").TextFrame2.TextRange.Characters.Text

TxtB10 = Sheets("Sommaire").Shapes("Rectangle à coins arrondis 58").TextFrame2.TextRange.Characters.Text

If TxtB1 = "" Then

Sheets("Sommaire").Shapes("Rectangle à coins arrondis 47").Select

With Selection

.Characters.Text = nom

End With

ElseIf TxtB2 = "" Then

Sheets("Sommaire").Shapes("Rectangle à coins arrondis 50").Select

With Selection

.Characters.Text = nom

End With

ElseIf TxtB3 = "" Then

Sheets("Sommaire").Shapes("Rectangle à coins arrondis 51").Select

With Selection

.Characters.Text = nom

End With

ElseIf TxtB4 = "" Then

Sheets("Sommaire").Shapes("Rectangle à coins arrondis 52").Select

With Selection

.Characters.Text = nom

End With

ElseIf TxtB5 = "" Then

Sheets("Sommaire").Shapes("Rectangle à coins arrondis 53").Select

With Selection

.Characters.Text = nom

End With

ElseIf TxtB6 = "" Then

Sheets("Sommaire").Shapes("Rectangle à coins arrondis 54").Select

With Selection

.Characters.Text = nom

End With

ElseIf TxtB7 = "" Then

Sheets("Sommaire").Shapes("Rectangle à coins arrondis 55").Select

With Selection

.Characters.Text = nom

.OnAction = "action"

End With

ElseIf TxtB8 = "" Then

Sheets("Sommaire").Shapes("Rectangle à coins arrondis 56").Select

With Selection

.Characters.Text = nom

End With

ElseIf TxtB9 = "" Then

Sheets("Sommaire").Shapes("Rectangle à coins arrondis 57").Select

With Selection

.Characters.Text = nom

End With

ElseIf TxtB10 = "" Then

Sheets("Sommaire").Shapes("Rectangle à coins arrondis 58").Select

With Selection

.Characters.Text = nom

End With

End If

End Sub

Merci d'avance pour l'aide que vous pourrez m'apporter.

Salut Charly,

Ton fichier incluant ton code serait bien plus utile que ton code seul.

Cordialement.

voilà mon fichier test.

la macro copie est présente sur les feuilles :

  • fiche de visite
  • photo de visite
  • mode opératoire
  • tenue électrique

à savoir qu'une même feuille peut être copiée plusieurs fois.

merci d'avance

charly5771 a écrit :

je pensais utilisée .OnAction mais je suis bloquée sur l'étape suivante à faire pour pouvoir lier ces 2 codes.

Afin d'affecter une macro à un bouton, il n'y a pas d'autre possibilité selon moi que de passer par .OnAction. Il n'y a qu'un seul passage dans ta macro où tu utilises cette instruction et je ne suis pas certain que ce soit au bon endroit. De plus, je ne sais pas ce que tu veux dire pas ''être bloquée sur l'étape suivante pour pouvoir lier ces 2 codes'' : de quels 2 codes parles-tu ?

Ton fichier est hyper compliqué et on se perd un peu parmi toutes tes tentatives pas toujours abouties, tes multiples feuilles et tes super-multiples boutons. Ne pourrais-tu pas alors simuler un fichier avec un minimum de feuilles, un minimum de boutons et un minimum de macros juste pour illustrer ce que tu tentes de faire afin que l'on puisse t'aider plus facilement ? Et une fois que tu auras compris le principe pour cet exemple simple, tu pourras l'appliquer à ton usine à gaz, non ?

A te relire.

voilà j'ai un peu simplifié mon fichier.

j'ai également rajouter la macro affecter avec la partie où je bloque car je n'arrive à trouver un moyen pour enregistrer dans une variable que je voudrais nommée nomCopie qui est en faite le nom de la feuille qui vient d'être copiée dans la macro copie.

merci encore

Salut,

Dans le fichier ci-joint, j’ai placé l’instruction .OnAction = "affecter" à chaque passage où tu traites les boutons.

Par contre, si tu veux masquer la feuille ayant servi à effectuer la copie, il faut mieux le faire à la fin de la macro ‘copie’ ; regarde l’instruction Sheets(nomFeuille).Visible = False que j’y ai placée.

Ca te permet d’avancer ?

Bonjour,

J'ai réussi à avancer et trouver une solution de ce que je voulais et maintenant tout marche.

Le problème est qu'une fois présenté à mon supérieur il m'a dit qu'il ne voulait pas que les "boutons copies" soit déjà présent. Il voudrait qu'à chaque fois qu'il utilise la macro copie, un bouton se crée sur la page Sommaire en les rangeant sur plusieurs colonne car il se peut que pour une prépa on ai besoin de créer une soixantaine de boutons, mais encore une fois le nombre de "boutons copies" est aléatoire.

J'espère que vous allez pouvoir m'aider.

Merci d'avance

Salut

charly5771 a écrit :

J'ai réussi à avancer et trouver une solution de ce que je voulais et maintenant tout marche.

Félicitation pour ton travail ! Apparemment, ce que je t’ai proposé n’a pas aidé beaucoup, sinon tu me l’aurais dit

Comme ta nouvelle demande est quelque chose de nouveau, je te propose d’indiquer ce fil comme résolu et d’en recommencer un autre.

Cordialement.

Rechercher des sujets similaires à "affecter macro boutons aleatoires vba"