|
| usularrakis | Posté le 06/12/2005 @ 10:58 |
Astucien
2538 Messages
| Bonjour à tous
petit pb urgent sur une macro excel 2000 qui fonctionnait mais maintenant me dit :
"Impossible de définir la propriété Locked de la classe Range ?"
j'avais à l'origine 12 feuilles (1/mois)
je ne sais pas si cela a un rapport mais j'ai rajouté une 13ème feuille que j'ai placé en 1ère position et qui contient du texte et des formules de calcul (qui reprennent des éléments sur les 12 autres feuilles)
[code]Public Sub Protection()
For i = 1 To 12
Worksheets(i).Range("B2:D4").Select
Worksheets(i).Range("B2:D4").Locked = False
Worksheets(i).Range("D11:D11").Locked = False
Worksheets(i).Range("D15:G45").Locked = False
Worksheets(i).Range("B13:B13").Locked = False
Worksheets(i).Range("O15:P45").Locked = False
If i = 1 Then
Worksheets(i).Range("M11:N11").Locked = False
End If
Worksheets(i).Protect Password:="blablabla"
Next i
End Sub[/code]
merci pour l'aide apportée
|
| |
| |
| Publicité |
|
|
| galopin01 | Posté le 06/12/2005 à 12:20 |
Astucien
4324 Messages
| bonjour,
Il faut déprotéger (Unprotect) ta feuille avant
A+ |
| |
|
| usularrakis | Posté le 06/12/2005 à 12:25 |
Astucien
2538 Messages
| bonjour galopin
j'ai une macro qui déprotège toutes les feuilles et qui fonctionne bien
mais ça ne change rien [pleurer]
[code]Public Sub déprotection()
For i = 1 To 13
Worksheets(i).Unprotect Password:="blablabla"
Next i
End Sub[/code]
question subsidiaire : les cellules que je ne veux pas protéger ne sont pas vérrouillées à l'origine (Format/cellule/protection/case "verrouillée" décochée) est-ce que ça pourrait venir de là ?
pourtant la macro marchait bien avant !!! |
| |
|
| galopin01 | Posté le 06/12/2005 à 12:41 |
Astucien
4324 Messages
| débogue et regarde la valeur de i avant le plantage
ou met un msgbox i tout de suite après :
For i = 1 To 12
msgbox i
...
Quel est le dernier message ?
Réponse subsidiaire : Je ne pense pas. Vérifie la protection de la feuille(i) du dernier msgbox.
Je viens de vérifier.
Tu ne peux pas définir une propriété Locked True ou False sur une "Sheet protected"
Modifié par galopin01 le 06/12/2005 12:49 |
| |
|
| galopin01 | Posté le 06/12/2005 à 12:55 |
Astucien
4324 Messages
| Unprotect au début :
Public Sub Protection()
For i = 1 To 12
Msgbox i
Worksheets(i).Unprotect Password:="blablabla"
Worksheets(i).Range("B2:D4").Select
...
et analyse la différence |
| |
|
| usularrakis | Posté le 06/12/2005 à 13:45 |
Astucien
2538 Messages
| Bon !
le msgbox me donne 1
ensuite j'ai un nouveau message disant que la méthode select de la classe range a échouée
si j'enlève le Range(....).Select je retombe sur le 1er message d'erreur : impossible de définir...
si je change For i = 1 to 12 en For i = 2 to 12
le msgbox m'indique 2 je fais OK et là à la suite le msgbox revient avec chaque fois une nouvelle valeur 3 puis 4 puis 5 ... |
| |
|
| galopin01 | Posté le 06/12/2005 à 16:53 |
Astucien
4324 Messages
| On revient à la case départ. Ta Feuille 1 est protégée...
As-tu commencé ta boucle par un
Public Sub Protection()
For i = 1 To 12
Worksheets(i).Unprotect Password:="blablabla"
...
Next
Si oui, il n'y a pas de raison que ça plante.
Normalement une macro équilibrée devrait prendre et restituer une feuille dans l'état ou elle était.
Tu devrais donc déprotéger tes feuilles dans la boucle et les reprotéger en fin de travail...
De toute façon tu ne risques rien à les déprotéger une fois de trop : VBA ne proteste pas...
Je ne vois pas d'autre raison.
Quand au Select, dans ce contexte il est bien sur inutile et n'interfère en rien dans le problème.
A+ |
| |
|
| usularrakis | Posté le 06/12/2005 à 17:07 |
Astucien
2538 Messages
| galopin
j'ai bien déprotégé mes feuilles et la boucle commence à 1
mais ça ne marche toujours pas !
faut-il réinstaller excel ?
merci |
| |
|
| galopin01 | Posté le 06/12/2005 à 18:11 |
Astucien
4324 Messages
| tu m'envoies ton fichier? adresse en MP. |
| |
|
| galopin01 | Posté le 06/12/2005 à 18:32 |
Astucien
4324 Messages
| En voyant le truc chez Cathy...
Il est clair que maintenant ta macro elle travaille sur la feuille "Présentation"
i = 1 : Présentation
i = 2 : janvier...
Le numéro d'index des Worksheets est l'ordre de tes onglets donc si tu veux travailler sur Janvier/Décembre il faut faire :
For i = 2 to 13
C'est ça ? |
| |
|
| usularrakis | Posté le 06/12/2005 à 19:07 |
Astucien
2538 Messages
| j'ai essayé aussi comme ça
en fait c'est la 1ère chose que j'ai faite : ça me paraissait logique mais quand j'ai eu le pb je suis revenu en arrière et comme le pb existait toujours je me suis dit que ça venait surement d'autre chose
je viens de ré-essayer et toujours pareil : "impossible de définir..."
et là en plus je suis chez moi donc pas avec l'Excel du boulot mais toujours en version 2000
[code]Public Sub Protection()
For i = 2 To 13
Worksheets(i).Unprotect Password:="blablabla"
Worksheets(i).Range("B2:D4").Locked = False
Worksheets(i).Range("D11:D11").Locked = False
Worksheets(i).Range("D15:G45").Locked = False
Worksheets(i).Range("B13:B13").Locked = False
Worksheets(i).Range("O15:P45").Locked = False
If i = 1 Then
Worksheets(i).Range("M11:N11").Locked = False
End If
Worksheets(i).Protect Password:="blablabla"
Next i
End Sub[/code]
merci pour ton aide et ta patience
je t'envois le classeur
[boom][boom][boom] |
| |
|
| galopin01 | Posté le 06/12/2005 à 23:05 |
Astucien
4324 Messages
| Sorry,
il est 23:00 et je ne récupère ton truc que maintenant because un CA important.
Malheureusement, je ne peux rien faire sans mot de passe.
Je suis un peu frustré de ne pas avoir la totalité des macros. Car ainsi je ne peux pas examiner s'il y a des macros automatiques (Worksheet_Deactivate par exemple) en fin un tas de petite chose pour auditer ton truc à donf.
Bon si t'es encore en ligne dépêche toi mes nuits sont courtes mais quand même...
Nota : Tu peux passer un fichier avec macro sans affoler le système si tu le zip !
A+ |
| |
|
| usularrakis | Posté le 07/12/2005 à 08:22 |
Astucien
2538 Messages
| salut Galopin01
les macros sont dans mon fichier PERSO.XLS
il n'y a rien dans ThisWorkbook ni dans les Feuill
ce sont celles qui sont disponibles sur le forum et le mdp est celui inscrit (blablabla):
[code]Public Sub Protection()
For i = 2 To 13 'ou For i = 1 To 12
Worksheets(i).Unprotect Password:="blablabla"
Worksheets(i).Range("B2:D4").Locked = False
Worksheets(i).Range("D11:D11").Locked = False
Worksheets(i).Range("D15:G45").Locked = False
Worksheets(i).Range("B13:B13").Locked = False
Worksheets(i).Range("O15:P45").Locked = False
If i = 1 Then
Worksheets(i).Range("M11:N11").Locked = False
End If
Worksheets(i).Protect Password:="blablabla"
Next i
End Sub[/code]
déprotection :
[code]Public Sub déprotection()
For i = 1 To 13
Worksheets(i).Unprotect Password:="blablabla"
Next i
End Sub[/code]
merci beaucoup |
| |
|
| galopin01 | Posté le 07/12/2005 à 13:33 |
Astucien
4324 Messages
| ben, c'est la première chose que j'ai essayée ! Mais que nibe : ça déprotège rien du tout...
Bon j'avais peut-être l'esprit un peu engormi car j'avais une réunion interminable hier, mais j'y vois quand même un peu zarbi ton afffaire !
Enfin... je peux pas être catégorique car je n'ai pas le fichier sous les yeux : je suis au boulot, je vais me rebrancher dessus à 17:00
A* |
| |
|
| usularrakis | Posté le 07/12/2005 à 14:00 |
Astucien
2538 Messages
| OK Galopin01
alors je te renvois un fichier zippé avec les macros dans un module
ne vas pas te casser trop la tête là-dessus quand même ;-)
je peux toujours ré-enregistrer une macro de protection
mais j'aimerai bien comprendre le pourquoi !!!
surtout que la syntaxe est correcte et fonctionnait bien !!!
merci encore |
| |
|
| galopin01 | Posté le 07/12/2005 à 17:29 |
Astucien
4324 Messages
| Bonsoir,
Ce sont tes cellules fusionnées qui fichent le bazard.
Tu as le même problème de cellules fusionnées en Octobre D42:G43. Je n'ai pas regardé le reste...
Les cellules fusionnées et VBA ne font pas bon ménage : il faut les réserver à des prèsentation ou des entêtes de pages immuables et encore.
Personnellement je ne m'en sert jamais, il y a toujours une meilleure solution...
A+ |
| |
|
| usularrakis | Posté le 08/12/2005 à 08:52 |
Astucien
2538 Messages
| OK galopin01
tout ça pour ça !
je vais voir si je peux trouver une solution "élégante" pour mes cellules fusionnées
merci beaucoup pour ton aide |
| |
|
|
| Haut de la page |