Conserver macros en copiant feuilles Excel dans nouveau classeur

Fermé
doosoon - 3 oct. 2013 à 12:11
 doosoon - 7 oct. 2013 à 15:41
Bonjour,


J'ai un fichier central enregistré sur le réseau. Ce fichier comporte une macro (qui permet d'utiliser les boutons de groupement / dégroupement malgré la protection de la feuille par un mot de passe).
Les utilisateurs viennent copier des feuilles (parmi de multiples feuilles) de ce fichier central et les enregistrent dans un nouveau classeur / fichier. Au cours de cette opération, la macro n'est visiblement pas conservée ... Et donc les utilisateurs ne peuvent plus utiliser les boutons de groupement / dégroupement du fait de la protection liée au mot de passe.

Comment puis-je conserver la macro dans les feuilles copiées dans le nouveau classeur ?
Merci d'avance pour votre aide
A voir également:

14 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
3 oct. 2013 à 12:16
Bonjour,

cette macro est placee a quel endroit ??
comment est faite la copie ??
1
Bonjour,

J'avais la macro suivante au niveau du Workbook:

Private Sub Workbook_Open()
Dim sh As Worksheet
For Each sh In Worksheets
'if left(sh.name,2)="Pr" then
sh.EnableAutoFilter = True
sh.EnableOutlining = True
sh.Protect Contents:=True, Password:="toto", UserInterfaceOnly:=True
'end if
Next
End Sub

Depuis j'ai mis la macro suivante dans chaque feuille:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sh As Worksheet
For Each sh In Worksheets
'if left(sh.name,2)="Pr" then
sh.EnableAutoFilter = True
sh.EnableOutlining = True
sh.Protect Contents:=True, Password:="toto", UserInterfaceOnly:=True
'end if
Next
End Sub

Et mon problème s'est résolu. En revanche, bizarrement je ne peux plus faire de copier coller entre des cellules déverouillées.
Une idée?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
4 oct. 2013 à 12:23
Bonjour,

a mettre dans evenement:

Private Sub Worksheet_Change(ByVal Target As Range)

mais quel est l'interet de proteger systematiquement a chaque changement de cellule ou de modification de cellulee.

Que devrait faire votre macro en dehors de cette protection intempestive

A+
0
Bonjour,

Je tiens à préciser que je suis (trés) novice en VB / macro. J'ai récupéré celle ci sur ce site.
But de ma macro: permettre l'utilisation de boutons de groupements / degroupements sur une feuille protégée par mot de passe.

J'ai intégré votre remarque en modifiant la macro ainsi:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh As Worksheet
For Each sh In Worksheets
'if left(sh.name,2)="Pr" then
sh.EnableAutoFilter = True
sh.EnableOutlining = True
sh.Protect Contents:=True, Password:="toto", UserInterfaceOnly:=True
'end if
Next

End Sub

Le seul pb, c'est que à nouveau quand les utilisateurs viennent sur le fichier central pour copier un onglet (clique droit => deplacer ou copier => coller dans nouveau classuer) et le coller dans un nouveau classeur, qu'ils enregistrent et ferment ce nouveau classeur, la macro ne fonctionne plus à la ré-ouverture du fichier.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
4 oct. 2013 à 15:51
Re,

macro ne fonctionne plus à la ré-ouverture du fichier. !!!!!!!!!!

Quel excel avez-vous ?????


A+
0
Excel 2010.

Pardon, je viens de comprendre qu'il faut changer un élément dans la feuille (saisie dans une cellule, suppression cellule, ....) pour activer la macro.

La macro ne fonctionnait pas car j'essayais d'utiliser directement (à l'ouverture du fichier) les boutons de déroulement sans avoir modifié quoique ce soit.

Cependant, n'est il pas possible d'activer la macro à l'ouverture du fichier ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
4 oct. 2013 à 16:26
Re,

repartons du debut, pourquoi vous protegez la feuille ??
0
Pour éviter que les utilisateurs changent la mise en forme et/ou ne modifient des formules
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 4/10/2013 à 17:24
Re,

les onglets de votre fichier central sont proteges avant copie par click droit????

pour la protection par VBA, le plus satisfaisant serait sur l'evenement Worksheet_Calculate de chaque feuille:

Private Sub Worksheet_Calculate()
protect UserInterfaceOnly:=True
End Sub

je n'ai pas de probleme de fonctionnement macro apres copie

A+
0
Oui, tout a fait.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
4 oct. 2013 à 17:27
Re,

si quelqu'un click sur un des boutons avant de faire la copie, y a pas de soucis ????

pour la protection par VBA, le plus satisfaisant serait sur l'evenement Worksheet_Calculate de chaque feuille:

Private Sub Worksheet_Calculate()
protect UserInterfaceOnly:=True
End Sub


je n'ai pas de probleme de fonctionnement macro apres copie
0
Pour résumer - j'ai probablement mixé différents pbs.
Pour l'instant, j'ai opté pour cette version suite à vos conseils:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh As Worksheet
For Each sh In Worksheets
'if left(sh.name,2)="Pr" then
sh.EnableAutoFilter = True
sh.EnableOutlining = True
sh.Protect Contents:=True, Password:="toto", UserInterfaceOnly:=True
'end if
Next

End Sub

Que ce soit pour le fichier central, ou les onglets copiés dans un nouveau fichier, il faut changer un élément dans la feuille (saisie dans une cellule, suppression cellule, ....) pour que la macro s'active et permette l'utilisation des boutons de groupement / dégroupement.

Le résultat est trés bien. Seule l'activation dés l'ouverture du fichier manque.
Est ce à cela que servirait le remplacement de Private Sub Worksheet_Change par Private Sub Worksheet_Calculate()?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
5 oct. 2013 à 06:10
Bonjour,

oui.
0
ok, merci
0