Methode 'Paste' de l'objet -Worksheet' a échoué - VB/VBA/VBS - Programmation
Marsh Posté le 21-08-2006 à 11:01:38
ton code marche,
ta feuille ne serait t'elle pas protégée ?
Marsh Posté le 21-08-2006 à 11:07:15
Bonjour,
elle est dans quel module ta macro ?
Je pense que si tu mets tes macros dans un module standart ça marchera mieux.
A+
Marsh Posté le 21-08-2006 à 11:13:43
Effectivement, la feuille dans laquelle je copie les données est protégée (mais pas celle dans laquelle je colle et supprime).
Et effectivmement, en ôtant la protection de cette feuille, le code fonctionne.
Cependant, j'autorisais dans la protection de la feuille la sélection de toutes les cellules. Cela n'est pas suffisant pour permettre la copie ? Existe-t-il une option permettant de rendre la copie possible malgré une protection de la feuille ?
Il est en effet important que cette feuille reste protégée.
Merci de ton aide
Marsh Posté le 21-08-2006 à 11:57:11
le plus simple est que tu déverouilles ta feuille juste avant le collage et que tu reverouille après a l'aide de
ActiveSheet.Unprotect Password:="xxxxxx" et ActiveSheet.Protect Password:="xxxxxx"
Marsh Posté le 21-08-2006 à 14:05:53
J'ai corrigé le code comme ci-dessous mais le problème reste le même
Sheets("Mise en page" ).Select
Rows("11:236" ).Select
Selection.Delete Shift:=xlUp
Sheets("Résultats Macro" ).Select
ActiveSheet.Unprotect
Rows("6:199" ).Select
Selection.Copy
Sheets("Mise en page" ).Select
Range("A12" ).Select
ActiveSheet.Paste
Sheets("Résultats Macro" ).Select
ActiveSheet.Protect
Sheets("Mise en page" ).Select
Range("A1" ).Select
En fait un autre problème à l'air d'apparaitre. J'ai défini des plages pouvant être modifiées par l'utilisateur dans la feuille protégée .
Lorsque je ne protège pas la feuille mais que ces plages sont définies, j'ai le message d'erreur. En revanche, si je supprime la définiton de ces plages, que j'enlève (même manuellement) la protection de la feuille, alors la copie se passe sans problème. C'est assez étrange étant donné que les plages que je permet à l'utilisateur de modifier ne sont censés avoir un impact que lorsque la feuille est effectivement protégée!
Marsh Posté le 21-08-2006 à 14:12:59
ton protect est mal placé car la tu enleve la protection de la feuille "Résultats Macro" et tu colle dans "Mise en page" modifie le donc comme ca :
Sheets("Mise en page" ).Select
Rows("11:236" ).Select
Selection.Delete Shift:=xlUp
Sheets("Résultats Macro" ).Select
Rows("6:199" ).Select
Selection.Copy
Sheets("Mise en page" ).Select
Range("A12" ).Select
ActiveSheet.Unprotect
ActiveSheet.Paste
ActiveSheet.Protect
Range("A1" ).Select
et si tu protèges avec un mot de passe il faut que le passe en option
Marsh Posté le 21-08-2006 à 16:17:28
non, la feuille "mise en page" n'est jamais protégé et n'a pas besoin de l'être.
Je suis d'accord que c'est étrange que la feuille a copier ait besoin d'être non-protégée, mais c'est bien là le problème.
Et comme je le disais dans le post précédent, c'est les plages de cellules modifiables que la feuille (à copier) soit modifiable ou non qui semblent poser problème.
Marsh Posté le 21-08-2006 à 16:28:08
effectivement uniquement la feuille de destination devrait etre non protégée. l'autre n'as pas d'incidence.
qu'entends tu par "plages pouvant être modifiées par l'utilisateur dans la feuille protégée "
Marsh Posté le 22-08-2006 à 14:59:44
Je parlais des plages que tu peux définir dans "outil-protection-permettre aux utilisateurs de modifier des plages".
J'ai contourné le problème en enlevant ces plages et en ôtant la protection de la feuille uniquement au moment où ma macro modifie les plages (grâce à ce que tu m'as indiqué plus haut, donc merci )
Mais je ne comprends toujours pas en quoi ces plages ont une incidence, et en quoi le fait de protéger la feuille à copier pose un problème. Pour le deuxième, c'est peut être quelquechose dans le genre la protection accorde les droits en accès et pas en exécution, et la copie nécessite une exécution mais ça me parait bizare.
En tout cas merci pour ton aide, maintenant ça marche.
Marsh Posté le 21-08-2006 à 09:56:08
Je reçois ce message d'erreur "Methode 'Paste' de l'objet -Worksheet' a échoué" lors du lancement de la macro suivante, pourtant extrêmement simple (il s'agit simplement de supprimer certaine lignes puis de copier-coller d'autres sous excel) :
Sheets("Mise en page" ).Select
Rows("11:236" ).Select
Selection.Delete Shift:=xlUp
Sheets("Résultats Macro" ).Select
Rows("6:199" ).Select
Selection.Copy
Sheets("Mise en page" ).Select
Range("A12" ).Select
ActiveSheet.Paste
Range("A1" ).Select
Le débugger situe l'erreur à la ligne "ActiveSheet.Paste".
Quelqu'un aurait-il une idée sur l'origine de cette erreur ?
D'avance merci.