Attribution d'une macros à un objet Shape

Bonjour, je lance des macros par des objets shape (on action) ou (Affecter une macros) tous ce passait bien, mais maintenant l'adressage de toutes les macros du fichier change à chaque fois que je déplace une feuille par instruction (.move) y a t'il un paramêtre à modifier dans VBA ou Exel pour que l'adressage des macros reste dans le fichier d'origine? La situation est fort génante car si j'enregistre le fichier, je doit réafecter toutes les macros du fichier. Merci pour votre aide (Office 2007)

Bonsoir,

Montre un de tes codes pour comprendre ta demande. Là ce n'est pas évident du tout.

Amicalement

Dan

https://www.excel-pratique.com/~files/doc2/ICbG6dcd_test_macro.xlsm

ci joint un fichier que j'ai créé pour le test

donc a chaque fois que je lance la macros par l'intermédiaire d'un clic dans le rectangle de la feuille 1, l'adresse d'affectafion change et est dirigée vers le fichier nouvellement créé.[/code]Sub Macro1()

'

' Macro1 Macro

'transfert de la feuille dans un nouveau fichier

nom_feuille = Sheets(2).Name

nom = "dcd_" & "_" & nom_feuille

nom = Left(nom, 31)

Sheets(nom_feuille).Move

ThisWorkbook.Activate

End Sub

re,

Ton fichier est sous excel 2007. Si tu veux que je regarde il faut l'enregistrer sopus Excel 2003 ou inférieur.

Sinon essaie en utilisant ce code venant de ce fil --> https://forum.excel-pratique.com/viewtopic.php?t=9309 et réadapté à ton cas.

Sub efface()
Dim img As Object
For Each img In ActiveWorkbook.ActiveSheet.Shapes
img.Delete
Next
End Sub

Dans ta macro ajoute CALL EFFACE juste avant THISWORKBOOK.ACTIVATE

Amicalement

Dan

https://www.excel-pratique.com/~files/doc2/dcd_test_macro.xls

Désolé, ce n'est pas la solution; l'affectation de l'objet rectangle change de fihier au lieu de rester pointée sur le fichier porteur de la macros. merci quand même.

Re,

Désolé mais je ne suis pas sur de comprendre ta demande.

Dans ton fichier posté il y a deux feuilles. La macro déplace la feuille 2 (Feuil9) vers un nouveau fichier de sorte que dans ton fichier dcd il ne reste qu'une feuille avec le bouton et les macros.

La macro Efface ne sert à rien dans ce cas.

Peux-tu réexpliquer ce que tu veux exactement ?

A te relire

Dan

c'est juste un fichier de test; le probleme est que lorsque j'execute la macro avec le bouton, le "bouton" fait un adressage vers le fichier nouvellement créé (feuill x) et donc plus moyen de relancer une seconde macros (il faut réaffecter la macro) avant la macros : 'dcd test macro.xls'!Macro1 - aprés la macro Classeur35!Macro1 - et evidement en Classeur35!Macro1 il n'y a rien! pourquoi tant de haine?

re,

le bouton, le "bouton" fait un adressage vers le fichier nouvellement créé (feuill x)

Dans ton fichier "test", le bouton et la macro reste dans le fichier. Ils ne sont évdiemment pas copiés dans le nouveau. Donc là je ne vois pas de quoi tu parles lorsque tu dis que le bouton "fait un adressage vers le nouveau fichier"

Réxplique moi ton souci point par point et éventuellement place le bon fichier plutôt qu"un fichier test.

Dan

c'est bien l'adressage du bouton resté dans le fichier d'origine qui pointe désormait vers le nouveau fichier (pour moi ce n'est pas un probême de code mais cetrtainement de configuration ou de proprièté? car mes programmes fonctionnent depuis deux ans sans souci, puis je trouve cet aléas sur tous mes fichiers et là je nage)

re,

Je ne vois pas de pb chez moi. Peut-être est-ce dû à excel 2007 ou alors ta feuille 2, c'est celle avec le bouton ou pas ?.

De mon coté sous excel version inférieur pas de soucis, le bouton reste affecté à la macro du fichier test. Si tu recliques sur ce bouton, cela provoque une erreur de code puisque le fichier test ne comporte plus qu'une feuille (celle avec le bouton)

Mais essaie la macro ci-dessous :

Sub Macro1()
'Transfert de la feuille dans un nouveau fichier
Dim nom_feuille As String, nom As String
nom_feuille = ThisWorkbook.Sheets(2).Name
nom = "dcd_" & "_" & nom_feuille
nom = Left(nom, 31)
ThisWorkbook.Sheets(nom_feuille).Move
'Call efface
ThisWorkbook.Activate
End Sub

A moins que tu ne me donnes pas toutes les infos, je ne vois pas l'utilité de cette instruction :

nom = "dcd_" & "_" & nom_feuille
nom = Left(nom, 31)

La macro Efface ne sert à rien puisque ton bouton reste sur le fichier Test et ne va pas dans le nouveau fichier.

A te relire

Dan

l'instruction efface etait pour testé la solution donné + haut (sans résultat

nom = "dcd_" & "_" & nom_feuille genere dans mes programmes un nom de pour la sauvegarde des fichiers

nom = Left(nom, 31) limite donc le nom à 31 caractères (sinon erreur lors de la sauvegarde)

je te remercie d'avoir essayé de résoudre le problême, je ferai un menu déroulant ou une réafectation des macros par du code si je ne trouve pas la solution, bon mais flême + temps c'est pas encore gagné

A+

Rechercher des sujets similaires à "attribution macros objet shape"