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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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+
 
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
 
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!!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
589
Retour