Interdire saisie directe dans feuille mais pas l'incrémentation d'un USF

maud.33500

XLDnaute Nouveau
Bonjour le Forum,

Je travaille depuis quelques temps sur un programme de suivi d'actions techniques, qui est presque achevé d'ailleurs.

J'ai donc souhaité protèger mes feuilles en écriture pour forcer l'utilisateur à passer par un USF qui incrémente mes cellules automatiquement.

Sauf que ma protection fonctionne tellement bien que lorsque je veux incrémenter la feuille à partir de l'USF, je ne peux plus...

Quelqu'un saurait-il comment compléter le code pour qu'un MSGBOX s'affiche si l'utilisateur essaye de modifier une feuille directement, mais sans bloquer l'incrémentation à partir de l'USF?

Merci d'avance.

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Static vUndo As Boolean
       If vUndo Then       
       vUndo = Not vUndo
    Else
       MsgBox "Vous ne pouvez pas modifier cette feuille, merci d'utiliser le formulaire"
       vUndo = True
            
    End If
    
End Sub
 
G

Guest

Guest
Re : Interdire saisie directe dans feuille mais pas l'incrémentation d'un USF

Bonjour,

D'après ce que je comprends de ton problème:

dans l'usf, dans la macro qui modifie les cellules, mettre :

Code:
'Stopper la gestion des évènements
Application.EnableEvents = False
'..........lignes du code qui modifient les cellule

Et en fin:

Code:
Application.EnableEvents = True

Application.EnableEvents = False empêchera l'évènement WorkSheet_Change. Voir l'aide excel pour plus d'explication.

A+
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Interdire saisie directe dans feuille mais pas l'incrémentation d'un USF

Bonjour Maud, bonjour le forum,

Pourqui ne pas utiliser une protection avec UserInterfaceOnly = True. Cela veut dire que la feuille ne peut-être modifiée que par une UserForm.
À placer dans la macro événementielle Open du composant Thisworkbook car sinon ce n'est plus actif à la réouverture du classeur.
Exemple à adapter à ton cas :
Code:
Private Sub Workbook_Open()
Sheets("Feuil1").Protect Password:="toto", UserInterfaceOnly:=True
End Sub
 

maud.33500

XLDnaute Nouveau
Re : Interdire saisie directe dans feuille mais pas l'incrémentation d'un USF

Bonjour Hasco et bonjour Robert,

Merci pour vos deux réponses, qui m'ont toutes les deux permis de solutionner mon problème.

J'ai retenu le solution de Hasco peut être moins pratique car il faut ajouter le bout de code pour chaque bouton entrainant une incrémentation.

Hervé, ta solution est plus simple, mais elle me bloque au niveau d'une liste de choix déroulante qui ne veux plus se modifier du coup...

En tous cas merci à tous les deux pour vos réponses! Grâce à vous mon programme est ENFIN fini!!
 

Statistiques des forums

Discussions
312 322
Messages
2 087 288
Membres
103 508
dernier inscrit
max5554