Procédure lors de la copie d'unne feuille

bonjour à tous

Dans un classeur excel j ai une feuille "Etude" qui sert de feuille de stockage de données d'un formulaire

Chaque mois l opérateur devra faire une copie de cette feuille et renommer la copie.

Mon idée étant de protéger les copies par la suite par un mot de passe

en testant ce code je me rends compte que le msgbox n'apparait pas lorsque l on active la copie de la feuille "Etude" qui a été renommée

Je n ai pas joint de fichier mais je peux le faire si nécessaire

merci d'avance pour votre aide

Private Sub Worksheet_Activate()

Dim sh As Worksheet
 For Each sh In ThisWorkbook.Worksheets
  With sh
   If .Name = "Etude" Then Exit Sub
  End With
Next
Ret = MsgBox("Ôter la protection de la feuille ! ", vbOKCancel + vbExclamation)
If Ret = vbOK Then
Cod_Acc.Show
End If
If Ret = vbCancel Then
Cod_Acc.Hide
ActiveSheet.Protect
End If
End Sub

Bonjour,

On ne voit pas vraiment ce que tu veux faire.

Ta procédure est une évènementielle qui se lance lors de l'activation de la feuille dans le module de laquelle elle est placée.

Si elle est ailleurs, elle ne se lancera pas.

La boucle en début de macro n'a pas de raison d'être dans une procédure attachée à une feuille bien précise, qu'on n'a aucune raison de chercher...

Et la suite n'apprend rien rien.

Il faut que tu précises à quoi doit servir cette macro (et où elle se trouve exactement), que l'on puisse te dire si et comment elle pourra remplir sa "mission".

Cordialement

Ferrand

Je vais vous transmettre un fichier peut etre que ce sera plus simple

je vais un peu le modifier d'abord

a tout de suite

merci

Ci joint le fichier

dans la feuille "Menu" il y a une commande "Sauvegarde" qui va copier la feuille de travail "Mois_en_cours" et l'envoyer par email

tu verras que les mois qui ont été copiés nécessite un mot de passe pour toute modification

mais j avais rajouté la procédure de "mot de passe" dans chaque feuille manuellement après que l utilisateur ait procédé à la copie

ce que je voulais en fait c'était que lors de la sauvegarde, la nouvelle feuille ( nouveau mois) dispose aussi de cette procedure de mot de passe.

Je sais pas si je suis clair mais le fichier joint aidera surement

merci d'avance

PS : je suis conscient que les codes méritent un peu d'ordre

17carburant-test.xlsm (165.88 Ko)

Je n'ai pas vraiment le temps d'analyser tout ton classeur, pour déduire ce que tu as l'intention de faire...

Il serait plus simple que tu dises ce que tu attends de la procédure citée, ce qu'elle doit faire, et je pourrai regarder si elle le fait ou non, ce qu'elle fait et ce qu'elle ne fait pas.

Cordialement

Ok

ce que j attendais du code

dans le classeur si le nom de la feuille est différent de "Etude " alors msgbox pour demande de mot de passe

sinon pas de msgbox

Je veux bien mais ta feuille se nomme Mois_en_cours, pas Etude !?

Il faut se mettre d'accord avec soi

Exact

en fait c'est lorsque j ai modifié le fichier pour te l envoyer

mais "etude" = "mois en cours" peu importe

Tu supprimes la procédure Activate au niveau des feuilles, et tu la remplaces par celle-ci dans le module ThisWorbook :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim Ret%
    If Sh.Name = "Mois_en_cours" Or Sh.Name = "MENU" Then Exit Sub
    Ret = MsgBox("Ôter la protection de la feuille ! ", vbOKCancel + vbExclamation)
    If Ret = vbOK Then
        Cod_Acc.Show
    Else
        ActiveSheet.Protect
    End If
End Sub

A ajuster éventuellement pour les feuilles BDD ou Parc (selon qu'elles doivent ou non être incluses dans ce dispositif).

Cordialement

Oh yes , c'est effectivement plus simple et efficace

merci beaucoup pour ta patience et ta réactivité

cordialement

Rechercher des sujets similaires à "procedure lors copie unne feuille"