Copier une feuille dans un autre classeur en changeant la macro

Fermé
wave1234 Messages postés 8 Date d'inscription dimanche 4 octobre 2015 Statut Membre Dernière intervention 15 octobre 2015 - 4 oct. 2015 à 19:33
wave1234 Messages postés 8 Date d'inscription dimanche 4 octobre 2015 Statut Membre Dernière intervention 15 octobre 2015 - 15 oct. 2015 à 14:52
Bonjour,
J'ai un fichier "Groupe.xlsm" dans lequel je veux copier un onglet "comptabilité" dans le fichier "Cashflow.xslm". J'y parviens via une macro. Voici mon problème. L'onglet comptabilité a deux boutons avec chacun une macro.

J'ai les mêmes macros dans mon fichier Cashflow. Lorsque je copie ma feuille, les macros restent lié à mon fichier Groupe. Donc si je clique sur le bouton, une fois la feuille copiée dans mon fichier cashflow, et bien excel ouvre mon fichier groupe pour partir la macro. Je voudrais que la macro de la feuille ne soit plus liée, mais soit prise dans mon fichier cashflow.

Lorsque je regarde le nom de ma macro: Au lieu de voir apparaitre Groupe.xlsm!Mise_a_jour_extract_hrs_form_tous_mois, je voudrais voir Cashflow.xlsm!Mise_a_jour_extract_hrs_form_tous_mois

Quelqu'un a une idée ? Merci d'avance
A voir également:

4 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
5 oct. 2015 à 07:25
Bonjour
Je suppose que vous faites une copie intégrale de la feuille "Groupe " vers la feuille "Cashflow". Donc dans ce cas, vous recopiez aussi les boutons, Pour vérifier mes dires, dans la feuille "Cashflow", faites un clic droit sur un des boutons et déplacez le, si en dessous il y en a d'autres identiques, c'est que c'est bien une copie, supprimez-le et recommencez cette opération jusqu'à atteindre le dernier bouton(qu'il ne faut pas supprimer puisque c'est le bon).
Toujours si c'est ce que je pense, je vous conseille de ne pas faire de copie intégrale de la feuille, mais uniquement de la zone des données, déplacez les boutons hors de cette zone (par exemple sur la ligne des entêtes, attention il ne doivent pas mordre sur la ligne du dessous) . Essayez
Cdlt
0
wave1234 Messages postés 8 Date d'inscription dimanche 4 octobre 2015 Statut Membre Dernière intervention 15 octobre 2015
5 oct. 2015 à 13:24
Bonjour Frenchie83, merci pour votre réponse.

Le problème c'est que je veux la copie intégrale de la feuille "Comptabilite", incluant le bouton de macro. Mais je voudrais que la macro ne conserve pas le lien avec le fichier Groupe.

Lorsque je la copie, je vois comme nom de macro: Groupe.xlsm!Mise_a_jour.
Je voudrais que le lien avec GROUPE ne soit plus présent, puisque j'ai déjà la même macro dans mon fichier Cashflow. Sinon chaque fois que j'appuie sur le bouton, excel ouvre Groupe pour activer la macro.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
5 oct. 2015 à 19:14
Bonsoir
Puisque vous avez les mêmes macros dans le fichier "CashFlow", faites la correction manuellement, ça prends 5 secondes.
Faites un clic droit sur le bouton , sélectionnez "Affecter une macro" , le nom de la macro qui s'affiche est "Groupe.xlsm!Mise_a_jour_extract_hrs_form_tous_mois",
effacer "Groupe.xlsm!". tout simplement
Cdlt
0
wave1234 Messages postés 8 Date d'inscription dimanche 4 octobre 2015 Statut Membre Dernière intervention 15 octobre 2015
5 oct. 2015 à 23:36
Bonjour Frenchie83

Votre réponse est bonne, c'est ce que je fais.

Le problème c'est que j'ai des utilisateurs qui ne connaissent rien aux macros, qui auront à copier cette feuille. Je ne peux pas leur demander de corriger la macro une fois que la feuille sera copiée dans le fichier cashflow.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
6 oct. 2015 à 10:02
Bonjour
Avez-vous penser à utiliser l'enregistreur de macro pour faire l'action de copier-coller, et profiter de l'enregistrement pour affecter la bonne macro à vos boutons?
Vous devez obtenir quelque chose du genre
    ActiveSheet.Buttons.Add(65, 21, 96, 63).Select
    ActiveSheet.Paste
    ActiveSheet.Shapes("Button 1").Select
    Selection.OnAction = "Mise_a_jour_extract_hrs_form_tous_mois"
Attention, l'enregistrement n'est à faire qu'une seule fois, sinon le bouton va s'incrémenter et cela va générer une erreur.
A tester
Cdlt
0
wave1234 Messages postés 8 Date d'inscription dimanche 4 octobre 2015 Statut Membre Dernière intervention 15 octobre 2015
7 oct. 2015 à 00:31
Bonjour,

Je vais essayer, je pense l'avoir fait, mais j'ai tellement jouer dans mon fichier que j'ai un peu de difficulté à me rappeler tout ce que j'ai fais.

Merci encore je vous tiens au courant
0
wave1234 Messages postés 8 Date d'inscription dimanche 4 octobre 2015 Statut Membre Dernière intervention 15 octobre 2015
14 oct. 2015 à 22:09
Re-Bonjour,

J'ai bien essayé votre suggestion, mais sans succès, le système bloque à Selection.OnAction.......

voici le code que j'ai obtenu
Sub test2()
'
' test2 Macro
'

Cells.Select
Range("AS4").Activate
Selection.Copy
Windows("Cashflow.xlsm").Activate
ActiveWindow.TabRatio = 0.693
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.OnAction = "Mise_a_jour_extract_hrs_form_tous_mois"
Windows("Horaire CRFV-24 NEW.xlsm").Activate
End Sub
0
wave1234 Messages postés 8 Date d'inscription dimanche 4 octobre 2015 Statut Membre Dernière intervention 15 octobre 2015
15 oct. 2015 à 03:28
J'ai trouvé que je n'avais pas des "boutons" d'excel. C'était une forme (un rectangle) à laquelle j'avais rattachée une macro.

Quand je change ma forme pour un bouton excel (bouton de contrôle des formulaires), et bien ma macro se copie dans mon fichier cashflow, sans liaison. J'ai juste la macro, plus aucun chemin vers le fichier Groupe. YOUPPI !!!

Par contre, j'ai essayé de faire une macro pou copier ma feuille Comptabilité de mon fichier Groupe vers mon fichier Cashflow... déception :-( le bouton perd son nom (celui que j'ai inscris dessus) et s'incrémente, il devient bouton 2 , et plus aucune macro rattachée.

re :-(

Si je fais l'opération manuellement, aucun problème. Une idée ???

Merci Encore
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
15 oct. 2015 à 05:55
Bonjour
-J'ai bien essayé votre suggestion, mais sans succès, le système bloque à Selection.OnAction....... - et à quel objet attribuez-vous la macro? lors de l'enregistrement vous avez oublié de sélectionner le bouton pour lui affecter la macro, regardez la constitution de la macro dans le post 5 (que ce soit un bouton de formulaire ou un objet dessiné tel un rectangle n'a pas d'importance).
- le bouton perd son nom (celui que j'ai inscris dessus) - Toujours avec l'enregistreur de macro vous devez retaper le nom du bouton et récupérer ainsi le code obtenu.
- et s'incrémente,il devient bouton 2- à chaque fois que vous répétez l'opération, le N° du bouton s'incrémente, c'est pour ça que je vous avez dit, toujours dans le post 5, de ne faire l'opération qu'une seule fois, sinon si vous voulez répéter l'opération, refermez et ré-ouvrez le fichier pour avoir toujours le N°1, il ya la possibilité après recopie de faire un balayage de la nouvelle feuille et de relever les N° des objets (boutons ou autres) et de leurs affecter la macro. Mais là je dois partir.
Cdlt
0
wave1234 Messages postés 8 Date d'inscription dimanche 4 octobre 2015 Statut Membre Dernière intervention 15 octobre 2015
15 oct. 2015 à 14:52
Bonjour, merci beaucoup pour votre temps. C'est très gentil

En fait comme j'ai modifié tous les rectangles de mes fichiers, je vais conserver les boutons d'excel.

Par contre, je vais essayer pour ma macro qui copie la feuille d'un classeur à l'autre de retaper le nom du bouton, je vais voir si mon code de macro "Mise_a_jour_extract_hrs_form_tous_mois" est conservé.

Pour l'incrémentation, je ne comprend pas car je n'ai fait l'opération qu'une seule fois..... hummm ouinn j'ai fais l'opération avec l'enregistreur de macro, et ensuite j'ai testé ma macro. Ca fait deux fois en fait. Je vais re-tester.

A+
0