Modifier les paramètres de protection d'une cellule

klm1234

XLDnaute Nouveau
Bonjour tout le monde,

C'est sûrement tout simple mais après maintes recherches je n'ai rien trouvé qui puisse m'aider...

L'objectif est le suivant : Protéger des cellules (une base de données) allant de par exemple A13 à EI65536 via ce code :
Code:
Range("A13:EI65536").locked = True
ActiveSheet.Protect

Seulement, cette protection se fait selon des paramètres (on ne peut pas sélectionner les cellules bloquées, ni les modifier, etc.) qui (à ma connaissance) ne sont accessible qu'en protégeant la feuille à la main, via l'onglet Outils/Protection. Une fenêtre nous demande alors si nous voulons bloquer à l'utilisateur la possibilité de sélectionner les cellules bloquées, etc.

En fait je veux bloquer la base de données sur la plage citée ci-haut et je ne veux pas que l'utilisateur puisse même seulement sélectionner quoi que ce soit à l'intérieur de cette plage. Jusque là, pas de problème.

Je voudrais cependant que la plage de D13:D65536 reste sélectionnable par l'utilisateur, sans qu'il puisse la modifier (donc, cette plage aurait une protection avec des paramètres différents de tout le reste de la base de donnée).

Existe-t-il un code VBA permettant de modifier ces paramètres:confused: de protection pour une plage précise?

Merci énormément!
 

job75

XLDnaute Barbatruc
Re : Modifier les paramètres de protection d'une cellule

Bonjour klm1234,

Avec la commande Outils-Protection-Protéger la feuille, la protection est la même pour toutes les cellules verrouillées.

Elle est par contre différente pour toutes les cellules déverrouillées.

On peut donc envisager la méthode suivante :

- touche F5 => Atteindre la plage D13: D65536

- menu Format-Cellule-Protection => décocher la case Verrouillée

- protéger la feuille en autorisant seulement la sélection des cellules déverrouillées

- clic droit sur l'onglet de la feuille et Visualiser le code => y coller cette macro :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Application
  .EnableEvents = False
  .Undo 'annule la modification
  .EnableEvents = True
  .OnRepeat "", ""
End With
End Sub

La macro empêchera les modifications sur la plage D13: D65536.

A+
 

klm1234

XLDnaute Nouveau
Re : Modifier les paramètres de protection d'une cellule

Bonjour Job75,

Donc pas moyen d'avoir une protection différente pour plusieurs cellules... Zut!

Ta solution me plaît beaucoup, cependant la macro protège la feuille entière, empêchant ainsi les précieuses (car bien rares) modifications autorisées à l'utilisateur (la seule ligne modifiable par l'utilisateur est la ligne 4 en fait).

Merci beaucoup encore une fois,
 

job75

XLDnaute Barbatruc
Re : Modifier les paramètres de protection d'une cellule

Bonjour klm1234,

(...) cependant la macro protège la feuille entière, empêchant ainsi les précieuses (car bien rares) modifications autorisées à l'utilisateur (la seule ligne modifiable par l'utilisateur est la ligne 4 en fait).

Pas du tout, il suffit d'intercaler un test pour ne traiter que la plage D13: D65536 :)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR="Red"]If Intersect(Target, Range("D13:D65536")) Is Nothing Then Exit Sub[/COLOR]
With Application
  .EnableEvents = False
  .Undo 'annule la modification
  .EnableEvents = True
  .OnRepeat "", ""
End With
End Sub

A+
 

klm1234

XLDnaute Nouveau
Re : Modifier les paramètres de protection d'une cellule

Mais biensur!

Haha, quel plaisir ce doit être de s'amuser avec le code ainsi... Coté LabVIEW (programmation G de type flow) sa va je gère, mais en programmation pur et dur, je rame un peu! Enfin bon, c'est en bûchant qu'on devient bûcheron n'est-ce pas!

Encore une fois merci beaucoup job75, tout fonctionne comme désiré!
 

Discussions similaires

Statistiques des forums

Discussions
312 840
Messages
2 092 701
Membres
105 513
dernier inscrit
simo200100