Astuce: Les autres langues sont Google-Traduction. Vous pouvez visiter le English version de ce lien.
Se connecter
x
or
x
x
S'enregistrer
x

or

Comment protéger les cellules en fonction de la date dans Excel?

Normalement, nous pouvons protéger la feuille de calcul pour empêcher les autres d'éditer ou de modifier les valeurs des cellules, mais, parfois, vous devez protéger les cellules en fonction de la date. Par exemple, je veux protéger les autres cellules mais ne permettre que les valeurs des cellules de la date d'aujourd'hui à modifier comme suit capture d'écran, cet article va parler de la façon de protéger les cellules en fonction de la date.

doc protéger par date 1

Protège toutes les lignes sauf la ligne de date du jour avec le code VBA

Protège toutes les lignes que la date a passé avec le code VBA


flèche bleue droite bulle Protège toutes les lignes sauf la ligne de date du jour avec le code VBA

N'autorisez que la ligne dont la date d'aujourd'hui est modifiée, le code suivant peut vous aider, faites comme ceci:

1. Cliquez avec le bouton droit sur l'onglet de la feuille que vous souhaitez protéger les cellules en fonction de la date, puis choisissez Voir le code dans le menu contextuel, dans le menu contextuel Microsoft Visual Basic pour applications fenêtre, copiez et collez le code suivant dans le module vide:

Code VBA: Protège toutes les lignes sauf la ligne de date d'aujourd'hui:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updateby Extendoffice 20161025
    If Range("E" & Selection.Row).Value <> Date Then
        ActiveSheet.Protect Password:="111111"
        MsgBox "Only today's date row can be edited!", vbInformation, "Kutools for Excel"
    ElseIf Range("E" & Selection.Row).Value = Date Then
        ActiveSheet.Unprotect Password:="111111"
        ActiveSheet.EnableSelection = xlNoRestrictions
    End If
End Sub

doc protéger par date 2

Note: Dans le code ci-dessus, la lettre E est l'en-tête de colonne où se trouve la date, "111111"Est le mot de passe pour protéger cette feuille. Vous pouvez les changer selon vos besoins.

2. Ensuite, enregistrez et fermez cette fenêtre de code.

(1.) Si vous cliquez sur d'autres cellules au-delà de la ligne de date d'aujourd'hui, une boîte de dialogue apparaîtra pour vous rappeler que la cellule ne peut pas être modifiée, voir capture d'écran:

doc protéger par date 3

(2.) Si vous cliquez et modifiez la ligne est égale à la date d'aujourd'hui, il sera modifié avec succès, voir capture d'écran:

doc protéger par date 4


flèche bleue droite bulle Protège toutes les lignes que la date a passé avec le code VBA

Si vous devez protéger toutes les lignes que la date est passée, autorisez uniquement les lignes de date actuelles et futures à être modifiées. Veuillez appliquer le code VBA suivant:

1. Cliquez avec le bouton droit sur l'onglet de la feuille que vous souhaitez protéger les cellules en fonction de la date, puis choisissez Voir le code dans le menu contextuel, dans le menu contextuel Microsoft Visual Basic pour applications fenêtre, copiez et collez le code suivant dans le module vide:

Code VBA: Protège toutes les lignes que la date a passé:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Updateby Extendoffice 20161025
  Dim xRow As Long
  xRow = 2
  ThisWorkbook.ActiveSheet.Unprotect Password:="111111"
  ThisWorkbook.ActiveSheet.Cells.Locked = False
  Do Until IsEmpty(Cells(xRow, 5))
    If Cells(xRow, 5) < Date Then
      Rows(xRow).Locked = True
    End If
    xRow = xRow + 1
  Loop
  ThisWorkbook.ActiveSheet.Protect Password:="111111"
End Sub

doc protéger par date 5

Note: Dans le code ci-dessus, le nombre 5 est le numéro de colonne où se trouve la date, "111111"Est le mot de passe pour protéger cette feuille. Vous pouvez les changer selon vos besoins.

3. Ensuite, enregistrez et fermez cette fenêtre de code.

(1.) Si vous cliquez sur les cellules, la date est passée, une boîte de dialogue apparaîtra pour vous rappeler que la cellule ne peut pas être modifiée, voir capture d'écran:

doc protéger par date 6

(2.) Si vous cliquez sur la cellule des lignes pour essayer de modifier les valeurs dans la date d'aujourd'hui ou dans la date future, elle sera modifiée avec succès, voir capture d'écran:

doc protéger par date 7



Outils de productivité recommandés

Office Tab

étoile d&#39;or1 Apportez des onglets pratiques à Excel et à d'autres logiciels Office, tout comme Chrome, Firefox et Internet Explorer.

Kutools for Excel

étoile d&#39;or1 Incroyable! Augmentez votre productivité dans les minutes 5. Ne nécessite pas de compétences particulières, économisez deux heures par jour!

étoile d&#39;or1 300 Nouvelles fonctionnalités pour Excel, rendent Excel facile et puissant:

  • Fusionner des cellules / lignes / colonnes sans perdre de données.
  • Combiner et consolider plusieurs feuilles et classeurs.
  • Comparez les gammes, copiez plusieurs gammes, convertissez le texte en date, l'unité et la conversion de devise.
  • Compter par couleurs, sous-totaux de recherche, tri avancé et super filtre,
  • Plus Sélectionner / Insérer / Supprimer / Texte / Format / Lier / Commenter / Classeurs / Feuilles de calcul Outils ...

Capture d&#39;écran de Kutools pour Excel

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Niall · 4 months ago
    As someone who is relatively new to VBA, would you mind explaining why xRow = 2 in Line 4?



    Thanks
    • To post as a guest, your comment is unpublished.
      Piotr · 3 months ago
      because in row no. 1 you have header
  • To post as a guest, your comment is unpublished.
    Bobby · 1 years ago
    This works great. but how can I switch it to unlock a column based on dates in row 3?
  • To post as a guest, your comment is unpublished.
    TAHER KANPURWALA · 1 years ago
    Hello.....


    I am using the code for Protect all rows except today’s date row........



    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Updateby Extendoffice 20161025
    If Range("A" & Selection.Row).Value <> Date Then
    ActiveSheet.Protect Password:="111111"
    MsgBox "Only today's date row can be edited!", vbInformation, "Kutools for Excel"
    ElseIf Range("E" & Selection.Row).Value = Date Then
    ActiveSheet.Unprotect Password:="111111"
    ActiveSheet.EnableSelection = xlNoRestrictions
    End If
    End Sub


    After i save i and click on cell i get message only today's date row can be edited....but if i double click the cell the i can edit...pls help
  • To post as a guest, your comment is unpublished.
    LUIS GARCIA · 1 years ago
    hi is it possible to lock certain cells depending on the date that is directly above them in a column?
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hi, Lusis,
      Can you give your problem more specifically? Or you can attach a screenshot as your problem.
      Thank you!
  • To post as a guest, your comment is unpublished.
    Lmg · 1 years ago
    Hi is it possible to lock columns by the date directly above the columns?