OVH Cloud OVH Cloud

Copier une feuille dans un autre Classeur

4 réponses
Avatar
Papy Jean
Bonjour !

Soient 2 classeurs: Classeur1.xls et Classeur2.xls
Pour copier la feuille FeuilleA de Classeur 1 vers Classeur2, on peut faire:

Windows("Classeur1.xls").Activate
Sheets("FeuilleA").Copy Before:=Workbooks("Classeur2.xls").Sheets(1)

Mais, si FeuilleA contient des boutons d'appel à des macros, ceux de la
nouvelle feuille font appel aux macros du classeur source.

Y a-t-il un moyen d'adapter aussi le module source ?

Nota: C'est un pur hasard, mais si je pose cette question, c'est pour
essayer de contourner le problème posé par Bernard à 10H56: je n'ai jamais
pu
trouver de solution qui marche (même sur ce forum, qui pourtant ...). pour
la mise à jour des macros dans des PC d'utilisateurs.

Salut à Tous
Papy Jean

4 réponses

Avatar
anonymousA
Bonjour,

qu'est ce que tu appelles adapter le module source ?. Les boutons sont
copiés avec leurs propriétés, donc y compris avec ce qui va appeler
la macro pour laquellle ils sont faits. Il est exact que les modules
auxquels ces boutons font références ne sont pas exportés avec la
feuille ( sauf si dans le module de feuille pour un bouton de la BO
controles la macro associée appartient au module de feuille copiée).
Sinon, il faut exporter le ou les modules considérés puis les
importer dans le classeur 2 puis ensuite s'il s'agit de boutons de la
BO Formulaires changer l'appel à la macro pour l'associer au module
importé en modifiant la propriété Onaction de ces boutons.Ce n'est
pas forcément très difficile mais ca nécéssite de la rigueur et un
certain nombre de lignes de code.

A+
Avatar
Michel Gaboly
Bonjour Papy Jean,

Voici un exemple :

On remplace la liaison vers le classeur source par une liaison vers le cl asseur dans lequel la feuill a été copiée.

Sub Macro2()
Dim Liste
Sheets("Feuil1").Select
Sheets("Feuil1").Copy
Liste = ActiveWorkbook.LinkSources
ActiveWorkbook.ChangeLink Liste(1), ActiveWorkbook.Name
End Sub

Bien évidemment, cela n'est pas possible si le classeur destination com pore déjà des liaisons - à consever - vers le
classeur source.

Toutefois, cela doit répondre à ta question dans 90% des cas.

D'autre part, les liaisons sont dangereuses ;-)) comme chacun sait, et à éviter autant que possible.


Bonjour !

Soient 2 classeurs: Classeur1.xls et Classeur2.xls
Pour copier la feuille FeuilleA de Classeur 1 vers Classeur2, on peut f aire:

Windows("Classeur1.xls").Activate
Sheets("FeuilleA").Copy Before:=Workbooks("Classeur2.xls").Sheets (1)

Mais, si FeuilleA contient des boutons d'appel à des macros, ceux de la
nouvelle feuille font appel aux macros du classeur source.

Y a-t-il un moyen d'adapter aussi le module source ?

Nota: C'est un pur hasard, mais si je pose cette question, c'est pour
essayer de contourner le problème posé par Bernard à 10H56: je n' ai jamais
pu
trouver de solution qui marche (même sur ce forum, qui pourtant ...). pour
la mise à jour des macros dans des PC d'utilisateurs.

Salut à Tous
Papy Jean







--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
Papy Jean
Merci
Papy Jean
Avatar
Michel Gaboly
De rien ;-))

Merci
Papy Jean





--
Cordialement,

Michel Gaboly
www.gaboly.com