Vérouiller une plage de celule en fonction d'une date

Plus d'écho ?

Bonjour!!

Me revoilà après un petit temps d'absence... petits soucis de santé... je n'ai plus pu me connecter, désolée!!!!

J'ai testé la formule sur une copie grandeur réelle de mon tableau et cela fonctionne magnifiquement bien!!!

Je vous remercie de tout coeur pour toute l'aide que vous m'avez apportée et tout le travail que vous y avez consacré. Je n'aurai jamais su me débrouiller toute seule!!

Je vais donc essayer d'implanter cela dans le tableau quotidien dans les prochains jours.

Bonne continuation.

Me revoilà!!!

Le fichier avec les cellules bloquées fonctionne à merveille. Mais maintenant, nous passons à une étape supérieure, nous voulons partager le fichier entre nos 20 collègues et là paf ce message s'affiche: "Run-Time error "1004": Method "Unprotect" of object"-Worksheet"failed"". (nous avons le choix de pousser sur un bouton "end" ou "help".

Y aurait-il moyen de ne plus avoir ce message d'erreur qui perturbe mes collègues? Les cellules sont pourtant bien bloquées et le fichier fonctionne toujours aussi bien.

Merci d'avance pour vos conseils avisés!!!

Bonne journée

Evelyne

Bonjour,

Je n'avais plus le fichier dans mes dossier, j'en ai donc repris un dans le sujet... qui fait apparaître quelques petites anomalies du fait qu'on s'est éloigné des dates existant dans le fichier et la date du jour n'y existe pas... Il y a donc de ce point de vue quelques éléments à revoir.

Mais je ne vois pas de raison d'une erreur sur Unprotect ! Sauf si on a mis un mot de passe que l'on a omis de mettre dans la macro...

Bonjour,

Le fichier n'est pas protégé par un mot de passe. Le message d'erreur n'apparaît que quand j'active la fonction "Share Workbook" pour permettre une utilisation simultanée du fichier (comme cela tout le monde encode ses propres chiffres).

Je sais que quand on partage un fichier, on ne sait plus toucher aux fonctions protect/unprotect. Est ce que cela pourrait avoir un lien avec cette partie du code?:

" With ws

.Unprotect

.Cells.Locked = False

If lgf >= lgd Then .Rows(lgd & ":" & lgf).Locked = True

.Protect

End With"

J'espère que ce message va pouvoir partir car je n'ai pas pu aller jusqu'au bout de ce long projet, pourtant, c'est vraiment la dernière ligne droite!!!!

Bonne journée

Bonjour,

Effectivement, il y a bon nombre de fonctionalités qui sont rendues indisponibles dans un classeur partagé !

Dont la modification des protections !

Pour supprimer le message d'erreur, c'est pas trop difficile...

Dans la procédure Workbook_Open, après la ligne ScreenUpdating = False, tu insères une ligne :

On Error Resume Next

Le message n'apparaîtra plus. Tu me dis que les modifications se font quand même C'est ce qu'il faudra soigneusement vérifier...

Si cela s'avère être le cas, on peut s'en tenir à cette solution quelque peu triviale. Sinon, il faudra tenter d'être un peu plus subtil et tenter de faire ouvrir automatiquement par l'utilisateur pilote (toi !) en désactivant le partage pour assurer les modifications, et en le rétablissant ensuite...

Affaire à suivre...

Cordialement.

Bonjour,

J'ai essayé en intégrant la phrase complémentaire pour bloquer la fenêtre d'erreur mais rien n'y fait, elle apparaît encore!!

"Private Sub Workbook_Open()

Dim ws As Worksheet, lgd%, lgf%

Application.ScreenUpdating = False

On Error Resume Next

For Each ws In ThisWorkbook.Worksheets

Select Case ws.Name

Case "Noms", "Tableau"

Case Else

lgd = LigneDébutDates(ws)

lgf = LigneDateJour(ws) - 5

With ws"

Par contre, je nuance mes propos: une fois le fichier partagé, les cellules sont bien bloquées à J-5 mais l'ouverture ne se fait pas à la bonne page une fois que l'on clique sur end dans le message d'erreur.

Je suis partante pour appliquer la solution "subtile" en espérant que son utilisation ne devienne pas trop lourde pour les 20 utilisateurs.

Merci encore pour votre implication dans mon projet

Evelyne

Bonjour,

Je regarde demain si je suis en forme ! (Là j'arrive de l'hosto, une dizaine d'heures de sommeil, anesthésie comprise, mais quelques courbatures certainement dues à la position dans le bloc, dont je n'ai aucun souvenir conscient mais...)

Bonne soirée.

Bonjour,

Rien ne presse, la santé avant tout!!!

Rétablissez-vous bien

Evelyne

Bonjour,

Code à tester :

Private Sub Workbook_Open()
    Dim ws As Worksheet, lgd%, lgf%
    Application.DisplayAlerts = False
    With ActiveWorkbook
        If .MultiUserEditing Then
            If Environ("UserName") = "TonNomUtilisateur" Then
                .ExclusiveAccess
            Else
                Exit Sub
            End If
        End If
    End With
    Application.ScreenUpdating = False
    On Error Resume Next
    For Each ws In ThisWorkbook.Worksheets
        Select Case ws.Name
            Case "Tableau"
            Case Else
                lgd = LigneDébutDates(ws)
                lgf = LigneDateJour(ws) - 5
                With ws
                    .Unprotect
                    .Cells.Locked = False
                    If lgf >= lgd Then .Rows(lgd & ":" & lgf).Locked = True
                    .Protect
                End With
        End Select
    Next ws
    Set ws = Worksheets("Mail-Box & Room")
    If ActiveSheet.Name <> ws.Name Then
        ws.Activate
    Else
        ActiveMBRG ws
    End If
    With ActiveWorkbook
        .SaveAs .FullName, accessmode:=xlShared
    End With
End Sub

Les ajouts sont surlignés.

Il faut remplacer TonNomUtilisateur par ton nom d'utilisateur Windows.

A l'ouverture du classeur partagé, on s'assure qu'il est en mode partage, et dans ce cas on teste le nom d'utilisateur. S'il s'agit de l'utilisateur mentionné, on bascule le classeur en mode exclusif, et le reste de la macro peut s'exécuter, puis une fois la mise à jour réalisée, le classeur est réenregistré en mode partage.

Les messages d'alerte aux changements de mode sont inhibés.

Pour les autres utilisateurs la macro ne s'exécute pas. Il ne devrait donc plus y avoir de message intempestif.

Cordialement.

Bonjour!!

Je suis un peu perdue suite au dernier message...

1 - Où puis-je trouver mon nom d'utilisateur Windows?

2- Si la macro ne tourne pas pour mes collègues, les cellules ne seront pas bloquées à J-5 chez eux? A la limite, il faudrait que cela puisse tourner pour tous les utilisateurs de manière à ce que le blocage soit effectif à l'ouverture du dossier (qui que ce soit qui ouvre le fichier)?

Bon week-end!!!

Bonsoir,

Sub MonNomUtilisateur()
    MsgBox Environ("UserName")
End Sub

Tu exécutes cette macro, elle te fournira ton nom utilisateur... que tu devrais cependant connaître.

Il importe de vérifier que cette modification permet bien la mise à jour.

On passe par un bref moment où le classeur n'est plus en mode partage, le temps d'assurer sa mise à jour. C'est concevable pour la personne pilotant le partage, mais vouloir généraliser à ce que tous les utilisateurs passent en utilisation exclusive du classeur à chaque fois qu'il l'ouvrent, génèrerait certainement des cafouillages.

Cordialement.

Rechercher des sujets similaires à "verouiller plage celule fonction date"