verouiller les cellules renseignées à l'enregistrement, laisser les vides dévérouillé

  • Initiateur de la discussion Initiateur de la discussion jasol
  • Date de début Date de début

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 !

jasol

XLDnaute Nouveau
Bonjour,

J'ai posté un message en rapport avec mon problème, mais la discussion date de 2009, je ne pense pas pouvoir avoir une réponse, de ce fait, je tente ma chance ici en ouvrant une nouvelle discussion,

Je suis sous excel 2003, Pour le boulot, j'ai crée un fichier à remplir par des utilisateurs, le principe est qu'une fois les cellules qu'ils souhaitent remplir sont renseignées, ils enregistrent leurs modifications. La fermeture engendre le verrouilalge des cellules renseignées. Il faut savoir que le fichier que j'ai n'est pas un formulaire, et il contient des cellules fusionnées tout comme il contient des cellules normales. Il contient également une liste déroulante conditionnelle. Mon problème c'est que le vba que j'ai crée ne me verrouille que certaines cellules et non pas toutes. Voici le code :
Code:
Sub WsLock(Optional Y)
    Dim PWd$
    PWd = "4064"
    'Protége ou déprotège toutes les feuilles
    Application.ScreenUpdating = False
    If IsMissing(Y) Then
        For i = 1 To Worksheets.Count
            Worksheets(i).Protect PWd
            [A1].Select
        Next
    Else
        For i = 1 To Worksheets.Count
            Worksheets(i).Unprotect PWd
            [A1].Select
        Next
    End If
End Sub
Sub deprotege()
    WsLock 0
End Sub
Sub protege()
    WsLock
End Sub
Sub DeverouillerCellulesVides()
    'Commence par tout vérouiller
    With Sheets("Sem1")
        .Unprotect "4064"
        
        With Intersect(.UsedRange, .Range("Sem1!A1:R3000"))
        .Cells.Locked = True
        'On Error Resume Next
        .SpecialCells(xlCellTypeBlanks).Locked = False
        End With
        For Each c In Sheets("Sem1").Range("A1:R3000")
        If c <> "" Then
        If c.MergeCells Then
        c.MergeArea.Locked = True
        End If
        If IsEmpty(Range("B1").MergeArea) Then
        Range("Sem1!B1").MergeArea.Locked = False
        End If
        End If
        Next
       .Protect "4064"
    End With
end sub

Je n'arrive pas à trouver l'erreur dans mon fichier, quelqu'un pourrait-il m'aider, de plus mon but est de partager le fichier et je sais que la protection des feuilles est imcompatibles avec le partage, donc si quelqu'un a une autre idée de comment je pourrais faire?

Je vous remercie d'avoir accordé quelques instants rien qu'à lire déjà mon problème! 🙂
 
Re : verouiller les cellules renseignées à l'enregistrement, laisser les vides dévéro

Bonjour,

Pourriez-vous fournir un classeur exemple édulcoré des données confidentielles ?
J'ai une petite idée avec l'utilisation de feuilles cachées qui serviraient de trames pour interdire tout changement entériné par une sauvegarde.

Cordialement.
 
Re : verouiller les cellules renseignées à l'enregistrement, laisser les vides dévéro

Bonjour,

Merci de m'accorder du temps

Voici un exemple, faudrait que je me penche sur la création du fichier sous forme de formulaire, peut etre que ca marcherait, mais bon, j'ai déjà passé trop de temps à essayer de faire fonctionner celui ci, j'espère que vous pourrez m'aider 🙂 🙂

Merci!
 

Pièces jointes

Re : verouiller les cellules renseignées à l'enregistrement, laisser les vides dévéro

Bonjour,

J'ai suivi une voie complètement différente de la vôtre.
L'idée est d'utiliser des feuilles cachées qui, à chaque sauvegarde du fichier, sont les copies conformes des feuilles utilisateur. Elles servent à interdire la sélection des cellules qui sont déjà renseignées grâce au code évèmentiel "Workbook_SheetSelectionChange"
J'ai prévu une procédure qui permet de visibiliser ces feuilles cachées. Si vous voulez changer les interdictions, il conviendra d'agir sur ces feuilles ou de les supprimer. Cette procédure nécessite un mot de passe qui est inscrit en dur dans le code. Le mot de passe est actuellement 123456 et vous pouvez en changer en intervenant sur la constante Private Const MOT_PASSE As String = "123456"

Cordialement.
 
Re : verouiller les cellules renseignées à l'enregistrement, laisser les vides dévéro

Bonjour Monsieur,

J'ai testé votre solution, elle marche parfaitement, même une fois le fichier partagé. Je vous remercie beaucoup de votre aide et de m'avoir accordé du temps.

Mille mercis encore une fois,
Bonne semaine à vous. 🙂
 
Bonjour,

j'aurais besoin de protéger les données remplies à la fermeture d'un fichier partagé tout en laissant les cellules vides déverrouillées pour les nouvelles saisies.
J'ai vu qu'une solution a été apportée dans cette conversation, mais comme je ne suis pas très doué en excel, est-ce que l'un de vous aurait la gentillesse de me montrer cette solution en détail.

Vous remerciement par avance,

Mai
 
- 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
7
Affichages
212
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
4
Affichages
461
Retour