Reprotéger feuille après saisie dans une plage

S

steplof

Guest
Bonsoir à tous,


Je travaille avec une feuille dont beaucoup de cellules sont verrouillées pour empecher une saisie accidentelle.

Certaines cellules( plage g4 à i13) dans lesquelles l'user doit entrer une valeur sont dévérouillées par un bouton de commande lié au code:

Private Sub CommandButton4_Click()
Sheets(1).unprotect
Sheets(1).Range("g4").Select
End Sub

Mon souci est de revérouiller automatiquement après la saisie.

Actuellement j'utilise ça:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Select Case ActiveCell.Column
Case 7, 8, 9
If ActiveCell.Row < 4 Or ActiveCell.Row > 13 Then sheets(1).protect
Case Else
sheets(1).protect
End Select

End Sub

Problème: chaque fois que je clique dans une cellule y a un clignotement de l'écran, je peux peut être utiliser screenUpdating=false mais il y a peut être mieux à faire non?

Merci de vos suggestions.

Steplof
 
@

@+Thierry

Guest
Bonsoir StepLof

Je n'ai pas testé ton code et donc je ne sais pas la raison du clignotement (?) mais un truc me choque dans ce que je lis...

Je traduis :

Dans le cas ou la cellule active se trouve en colonne G, H ou I
si la cellule active se trouve dans la ligne 5 à la ligne 12 inclusive
on protège la feuille en première position.

Dans le cas contraire
on protège la feuille en première position.

Donc çà ne sert à pratiquement rien toutes ces conditions ? Il n'y a que les cellules G1 à I4 qui ne lance pas cet évènement (sans parler plus bas...)

...ne serait-ce pas plus simple de définir la zone ou l'on ne protège pas la feuille ?

Il y a quelque chose qui m'échappe avant de voir si çà fait clignoter ton écran...

Bonne nuit
@+Thierry
 
S

steplof

Guest
Bonsoir,

Il me semble qu'il y a un contraire dans ce que tu lis non ?

mon code il fait (doit faire)
Dans le cas ou la cellule active se trouve en colonne G, H ou I
si la cellule active se trouve ailleurs que dans dans la ligne 4 à la ligne 13 inclusive
if lignecellule active <4 (donc 1,2 ou3) ou lignecellule active>13 (donc 14 à 65535) alors
on protège la feuille en première position.

pour toutes les autres colonnes on protege aussi...


Le code il fait apparemment bien ce que je veux

L'user clique sur le bouton: ça déprotège la feuille et le positionne en G4, il saisit, tant qu'il reste dans G4:I13, c'est pas verrouillé dès qu'il clique ailleurs ça verrouille...

Mais je pense effectivement que je prends le prob à l'envers mais j'arrive pas à voir l'autre sens.. d'où mon post

Merci pour vos suggestions


Steplof
 
@

@+Thierry

Guest
Oups oui tu as raison !!

Suis fatigué ce soir !!! active se trouve ailleurs que dans dans la ligne 4 à la ligne 13 inclusive !!!

Bon vé me coucher j'ai mal à la tête !! lol
Bonne nuit

Mais je ne sais pas pourquoi ça clignote !

@+Thierry
 
S

steplof

Guest
Bon Ok Merci alors

En fait,
je réalise que le prob du clignotement est du au fait que la protection activée-désactivée n'est pas protect/unprotect mais une macromaison qui active et désactive TOUTES les feuilles du classeur actif...
et c pas trop "appropriate" dans ce cas de figure...

Mais mon code me semble bizarre quand même... enfin à mon niveau c pas dramatique.

Bonne nuit !!!!

Steplof
 

Discussions similaires

Réponses
12
Affichages
774

Statistiques des forums

Discussions
314 020
Messages
2 104 663
Membres
109 097
dernier inscrit
Guismow30