Erreur d'exécution 1004 - La méthode Past de la classe worksheet a échoué

hamphilos

XLDnaute Nouveau
Bonjour;

Je viens solliciter votre expertise en macros afin que vous m'aidiez dans la résolution du problème suivant:

J'ai quatre feuilles protégée par mot de passe. Je désire que l'utilisateur puisse tout de même ajouter des commentaires sur les cellules déverrouillées. J'ai donc inséré dans chaque feuille la macro suivante:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Target.Locked Then
ActiveSheet.Unprotect Password:="MCDS"
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Protect Password:="MCDS"
End Sub

De plus, je désire que l'utilisateur puisse rajouter des lignes (un projet) en cliquant sur un bouton. Une macro a été créée à cette fin (dans le module 1):

Sub Insertproject()
' Insertproject Macro
Rows("11:23").Select
Selection.EntireRow.Hidden = False
Rows("12:22").Select
Selection.Copy
[A65536].End(xlUp).Select
Selection.Insert Shift:=xlDown
ActiveSheet.Paste
Application.CutCopyMode = False
Rows("12:22").Select
Selection.EntireRow.Hidden = True
End Sub

Cependant, en appuyant sur le bouton, le message indiqué dans le titre apparait. À noter qu’en effaçant la première macro dans chaque feuille, aucun message d’erreur n’apparait.

Merci d’avance de votre précieuse aide.
 

Jack2

XLDnaute Occasionnel
Re : Erreur d'exécution 1004 - La méthode Past de la classe worksheet a échoué

Re Bonjour,

Il est peut-être préférable de déprotéger la feuille au début de Insertproject et de verrouiller à la fin:
Code:
' Insertproject Macro
ActiveSheet.Unprotect Password:="MCDS" ou Sheet("Nom Feuille").Unprotect 
Rows("11:23").Select
'--- suite
ActiveSheet.Protect Password:="MCDS"
End Sub
Je vais essayer ce soir de voir comment réagit la procédure Private Sub Worksheet_BeforeRightClick

A+ Jack2
 

Jack2

XLDnaute Occasionnel
Re : Erreur d'exécution 1004 - La méthode Past de la classe worksheet a échoué

Bonsoir hamphilos,

Il vaut toujours mieux que je vérifie avant de parler. Quand tu protèges ta feuille, puis clic droit le test If Target.Locked renvoie toujours vrai. De plus, je vais chercher pourquoi, après le test, ActiveSheet.Unprotect Password:="MCDS" ne déprotège pas la feuille, il faut rajouter Target.Locked = False. Essaye pas à pas (touche F8) le code suivant :
Code:
If Target.Locked Then ActiveSheet.Unprotect Password:="MCDS"
MsgBox Target.Locked par
Si tu enlèves le test et tu rajoutes Locked = False :
Code:
ActiveSheet.Unprotect Password:="MCDS"
Target.Locked = False
MsgBox Target.Locked
La Msgbox renvoie Faux et non plus Vrai.

Pour ce qui concerne l'erreur 1004, à partir du moment où tu modifies une cellule, la procédure Insertproject fait appel Worksheet_SelectionChange qui ne s'endort jamais et qui verrouille la feuille.

Il faudrait concevoir ta macro différemment. Une des solutions est dans le post ci-dessus (n°4). Si cela ne convient pas, envoie ton fichier dépourvu de données confidentielles en précisant les cellules de tes 4 feuilles qui sont verrouillées pour voir s'il y a une solution qui pourrait te convenir.

EDIT J'ai oublié : Range agit uniquement au niveau de la cellule alors que ActiveSheet concerne toute la feuille

A+ Jack2
 
Dernière édition:

hamphilos

XLDnaute Nouveau
Re : Erreur d'exécution 1004 - La méthode Past de la classe worksheet a échoué

Bonjour Jack2;

Je désire, tout d'abord, te remercier pour les efforts et le temps que tu consacre à cette problématique.
En ce qui concerne la condition, il y a le "Not" dans If Not Target.Locked Then. Donc si la cellule n'est pas verrouillée, là la condition est remplie et un commentaire peut être inséré. Autrement, sur les cellules cerouillées, on ne peut insérer de commentaire.

J'ai testé tes suggestions, malheureusement ça n'a pas changé la donne.
J'enverrai une copie du fichier dès qu'il me serai possible.

Je ne te remerciai jamais assez pour ton aide.
H.
 

hamphilos

XLDnaute Nouveau
Re : Erreur d'exécution 1004 - La méthode Past de la classe worksheet a échoué

Bonjour Bebere;

Je viens de tester ce que tu as proposé et ca fonctionne à merveille!!!! Sans vouloir t'embêter, c'est quoi cette astuce?
Merci infiniment les gars, vous avez fait ma semaine!!! Je ne pourrai jamais vous remercier assez.

Salutations;
H.
 

Discussions similaires

Statistiques des forums

Discussions
314 633
Messages
2 111 403
Membres
111 123
dernier inscrit
lauTTTTTTTTT