ScSami
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
24
20 août 2005 à 21:42
Permet moi déjà de t'engueuler pour ne pas avoir eu la
présence d'esprit de nous donner le soft et sa version (VB6, VB.Net,
VBA97, VBA2003, ...) sous laquelle tu travailles et ce en deux
messages! Ce n'est pas à nous de la deviner... Bref, pense-y la
prochaine fois STP.
Sinon, execuse ma lenteur dans ma réponse mais souhaitant qu'elle soit
la plus précise possible et ayant eu quelques petits problèmes
techniques j'ai du prendre le temps de réinstaller mon Office. Et voici
donc un petit code explicatif appuyant mon premier message :
Public varEtat As Boolean
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If varEtat = False Then
ActiveSheet.Protect
varEtat = True
Else
'Autre référence
Worksheets("Feuil1").Unprotect
varEtat = False
End If
End Sub
Code à placer, bien entendu, dans "Feuil1" d'un classeur de test. Il est à noter qu'il a été fait en VBA 6 sous Office 2000 .
Attention : En VBA (tout comme en VB ou dans tout autre language) tu as des Instructions et des fonctions qui sont propres aux language utilisé. Tu peux également coder tes propres Fonctions et Procédures (les
Instructions étant le niveau le plus bas). Autrement dit, les fonction
internes ou utilisateur ainsi que les procédures utilisateurs sont des
successions d'instructions (des sous-programmes en quelque sorte!).
Toutes ces explications afin qu'on soit bien d'accord sur les termes à
employer. En VBA on utilise surtout des objets...
Les Objets : Comme tu dois déjà le savoir les objets ne sont constitués que de 3 genres de choses : Les Propriétés, les Methodes et les Evenements.
Les Propriétés sont les variables (publiques donc, externes) de l'objet. Autrement dit, ce sont les données de l'objet (qu'il stock et qu'il peut donc utiliser).
Les Méthodes sont les fonctions(/procédure) de l'objet. C'est à dire, des bouts de code actif (les bras de l'objet).
Les Evenements, je te laisse chercher...
Pardonne moi ce rapide petit cours "objet" si tu savais déjà tout ça...
Donc, pour en revenir à ton cas, tu n'appellerais pas une procédure
mais une méthode. Et, si elle est, comme tu dis, en "read-only" ce
n'est très certainement pas une méthode mais une propriété !!!
De plus, on ne sait pas exactement ce que tu cherches à faire. Est-ce
que tu veux proteger une feuille ou un classeur tout entier ou alors si
tu cherches à proteger seulement les macros. Enfin, si seulement tu
bosses bien sous Excel!!!
Workbook.vbproject.pretection me dit que, non seulement tu as
l'illusion qu'un jour la programmation se fasse en français (Pretection
VS Protect) mais qu'un plus tu ne cherches qu'a proteger tes macros VBA
(vbproject). Quelque chose me dit aussi que tu bosses en .Net et donc,
avec une des dernière version d'Office... Comme quoi, une simple ligne
de code peut en dire long!!!
Encore que... c'est à toi de me dire si je me trompe sur toute la ligne où s'il y a une once de vérité dans mes propos !
Comme dit précédemment, je n'ai que la version 2000 de office et ne
peut donc pas t'aider vraiment si tu as une version plus récente (même
si je peux quand même essayer! ;-). Dans ce cas, et si ton problème
n'est toujours pas résolu depuis le temps, c'est de consulter l'aide de
ton VBA afin de savoir, non pas qu'elle propriété, mais qu'elle méthode
il faut utiliser. Si les mecs de chez Microsoft ne sont pas trop nases,
il devrait toujours s'agir de .Protect et de .Unprotect
comme inscrit dans mon code. Mais reste à savoir ce que tu veux
vraiment proteger car le code VBA (les macros) ne se protegent pas
exactement de la même manière que les feuilles. Mais là, seule l'aide
poura t'éclairer plus loin...
En esperant que toutes ces explications auront-pu te servir,
Enjoy
<hr size ="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse accéptée". )