Protèger et Déprotèger une feille dans une macro

drareg78

XLDnaute Junior
Bonjour à tous.

Ai souhaité écrire une macro qui doit recopier dans une feuille "Partie" un contenu se trouvant dans une autre feuille en I2:K21.
Il est important pour moi que dès après cette copie la feuille soit protègée. Dans la mesure ou cette macro peut être appelée à être réexécutée presque immédiatement, je dois donc demander la déprotection de la feuille pour procéder à une nouvelle recopie de cellule.
Quelqu'un pourrait il jeter un coup d'oeil à ce que j'ai écrit et me dire pourquoi cela ne semble fonctionner qu'une fois sur deux. en me renvoyant le message suivant.

Erreur d'éxécution '1004'
la méthode PasteSpecial de la classe range a échoué

Voici la macro

Sub Tirage()
'
Calculate
Range("I2:K21").Select
Selection.Copy
Sheets("Partie").Select
ActiveSheet.Unprotect
Range("C7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("D4").Select
End Sub

Par avance, merci de votre aide
 

Pierrot93

XLDnaute Barbatruc
Re : Protèger et Déprotèger une feille dans une macro

Bonjour,

regarde peut être ceci, nom des feuilles à adapter :
Code:
With Sheets("Destination")
    .Unprotect
    Sheets("Source").Range("I2:K21").Copy
    .Range("C7").PasteSpecial Paste:=xlPasteValues
    .Protect
End With
bon après midi
@+
 

Efgé

XLDnaute Barbatruc
Re : Protèger et Déprotèger une feille dans une macro

Bonjour drareg78, Pierrot : ) ,
J'avais préparé ça, alors je le poste.
VB:
Sub Tirage()
Plg = Range("I2:K21").Value
With Sheets("Partie")
    .Unprotect
    .Range("C7:E26") = Plg
    .Protect
End With
End Sub
Cordialement
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Protèger et Déprotèger une feille dans une macro

Bonjour Gerard, bonjour le forum,

Tu oublies de définir la feuille d'origine dans ton code. Tu dis que tu copies d'une feuille à une autre mais tu ne parles que de la feuille de destination... C'est un premier point. Le second vient du fait qu'en déprotégeant, tu perds le contenu du presse-papier donc tu ne peux plus coller ensuite. Il faut faire la copie après la déprotection...
Comme ton code plantait à ce moment là, la seconde fois l'onglet n'était pas protégé et il marchait une fois sur deux...
Essaie comme ça :
Code:
Sub Tirage()
Calculate
With Sheets("Partie") 'feuille de destination
    .Select
    .Unprotect
    Sheets("Origine").Range("I2:K21").Copy 'nom de l'onglet à adapter à ton cas
    .Range("C7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    .Range("D4").Select
End With
End Sub

[Édition]
Bonjour Pierrot, Efgé on s'est croisé.
 

drareg78

XLDnaute Junior
Re : Protèger et Déprotèger une feille dans une macro

Pierrot 93, Efgé et Robert.

Merci à tous les trois de l'aide que vous voulez bien m'apporter.
Si les trois macro proposées tournent bien toutes les trois, et peuvent maintenant se relancer sans blocage, aucune d'entre elles ne protège le tableau après son exécution.
Je souhaiterai en effet qu'après l'execution de la macro, si on peut la relancer si nécessaire, on ne puisse pas écrire (par accident) dans les cellules qui viennent d'être copiées.
Je ne suis pas sûr d'être clair dans mes explications
Merci encore
 

Efgé

XLDnaute Barbatruc
Re : Protèger et Déprotèger une feille dans une macro

Re, Bonjour Robert,
drareg, je ne comprend pas quelle feuille doit être protégée : la feuille source ou la feuille destination.
Que veux dire :
Je souhaiterai en effet qu'après l'execution de la macro, si on peut la relancer si nécessaire, on ne puisse pas écrire (par accident) dans les cellules qui viennent d'être copiées.
Peut être qu'un fichier exemple serait préférable avec quelques indications supplémentaires.
Cordialement
 

Pierrot93

XLDnaute Barbatruc
Re : Protèger et Déprotèger une feille dans une macro

Re, bonjour Robert, fg, Victor

en l'état les 3 macros re-protègent la feuille en question, donc un utilisateur ne pourra venir écrire dans ces cellules, si elles sont vérouillées bien sur... par contre, comme les macros dé-protègent la feuille au préalable, tu pourrads donc les lancer autant de fois que tu le voudras... maintenant pas sûr de bien comprendre ton problème....
 

drareg78

XLDnaute Junior
Re : Protèger et Déprotèger une feille dans une macro

Efgé, je me suis mal exprimé en effet, en oubliant de dire que c'était la feuille de destination que je voulais voir protèdée en fin de traitement.

Mais je suis un ane et c'est victor21, que je remercie, qui m'a fait lui aussi comprendre mon erreur puisque mes cellules de destination n'étaient pas vérouillées.

Tout est maintenant "OK" grace à vous tous

Merci infiniment.
 

Discussions similaires

Statistiques des forums

Discussions
312 582
Messages
2 089 951
Membres
104 314
dernier inscrit
Tuubibumi