Note: The other languages of the website are Google-translated. Back to English

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

Normalement, nous pouvons protéger la feuille de calcul pour empêcher d'autres personnes de modifier ou de modifier les valeurs de cellule, mais, parfois, vous devez protéger les cellules en fonction de la date. Par exemple, je souhaite protéger d'autres cellules, mais autoriser uniquement la modification des valeurs de cellule de la date du jour, comme illustré ci-dessous, cet article explique comment protéger les cellules en fonction de la date.

doc protéger par date 1

Protégez toutes les lignes sauf la ligne de date du jour avec le code VBA

Protégez toutes les lignes que la date est passée avec le code VBA


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

Autorisez uniquement la modification de la ligne correspondant à la date du jour, le code suivant peut vous aider, procédez comme suit:

1. Cliquez avec le bouton droit sur l'onglet de la feuille dont vous souhaitez protéger les cellules en fonction de la date, puis choisissez Voir le code dans le menu contextuel, dans le popped out Microsoft Visual Basic pour applications , veuillez copier et coller le code suivant dans le module vide:

Code VBA: Protégez toutes les lignes sauf la ligne de date du jour:

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

Notes: 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 modifier 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 égale la date du jour, elle sera modifiée avec succès, voir capture d'écran:

doc protéger par date 4


flèche bleue bulle droite Protégez toutes les lignes que la date est passée avec le code VBA

Si vous devez protéger toutes les lignes dont la date est passée, autorisez uniquement la modification des lignes de date d'aujourd'hui et de demain, veuillez appliquer le code VBA suivant:

1. Cliquez avec le bouton droit sur l'onglet de la feuille dont vous souhaitez protéger les cellules en fonction de la date, puis choisissez Voir le code dans le menu contextuel, dans le popped out Microsoft Visual Basic pour applications , veuillez copier et coller le code suivant dans le module vide:

Code VBA: la date de protection de toutes les lignes est passée:

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

Notes: Dans le code ci-dessus, le numéro 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 modifier selon vos besoins.

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

(1.) Si vous cliquez sur la date de la cellule 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 de lignes pour essayer de changer les valeurs à la date d'aujourd'hui ou à la date future, elle sera modifiée avec succès, voir capture d'écran:

doc protéger par date 7


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2021 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Fonctionnalités complètes Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (30)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Échappatoire : le mot de passe peut être vu par une autre personne en utilisant l'option "Afficher le code".
Ce commentaire a été minimisé par le modérateur sur le site
ne fonctionne pas car toutes les cellules affichent le message mais sont modifiables
Ce commentaire a été minimisé par le modérateur sur le site
Salut, est-il possible de verrouiller les colonnes par date directement au-dessus des colonnes ?
Ce commentaire a été minimisé par le modérateur sur le site
Sous-feuille de calcul privée_Change (ByVal Target As Range)

'S'abonner à http://youtube.com/excel10tutorial

'Soutenez la chaîne en faisant un don sur http://patreon.com/excel10tutorial

Dim col As Range

'Définissez le nom de feuille correct ici :

Avec ThisWorkbook.Sheets("AGOSTO-22")

.Déprotéger "ABCDE"

Pour chaque colonne dans .UsedRange.Columns

col.EntireColumn.Locked = col.Range("A1").Value <> Date

Col suivant

.Protéger "ABCDE"

.EnableSelection = xlNoRestrictions

Terminer par

End Sub
Ce commentaire a été minimisé par le modérateur sur le site
salut est-il possible de verrouiller certaines cellules en fonction de la date qui se trouve directement au-dessus d'elles dans une colonne ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Lusis,
Pouvez-vous préciser votre problème ? Ou vous pouvez joindre une capture d'écran comme votre problème.
Merci !
Ce commentaire a été minimisé par le modérateur sur le site
salut skyyang

Oui voici une capture d'écran. J'espère que cela t'aides.
Ce commentaire a été minimisé par le modérateur sur le site
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, Lucis,
Voulez-vous dire verrouiller les colonnes dont la date est passée, et seules les colonnes d'aujourd'hui et des jours futurs peuvent être modifiées ?
Ce commentaire a été minimisé par le modérateur sur le site
Corriger! Comment pourrais-je m'y prendre ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Luis,
Qu'en est-il de la cellule de date dans A1 ? Est-il saisi manuellement ou saisi avec une formule =maintenant() ? S'il s'agit d'une cellule de formule, les colonnes verrouillées seront modifiées avec les changements de date.
Dans l'attente de votre réponse!
Ce commentaire a été minimisé par le modérateur sur le site
Salut Skyyangg

oui la cellule A1 a la formule =now().

Merci!
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour.....


J'utilise le code pour protéger toutes les lignes sauf la ligne de date d'aujourd'hui ........



Private Sub Worksheet_SelectionChange (Cible ByVal en tant que plage)
'Mettre à jour par Extendoffice 20161025
If Range("A" & Selection.Row).Value <> Date Then
ActiveSheet.Protect Mot de passe :="111111"
MsgBox "Seule la ligne de date d'aujourd'hui peut être modifiée !", vbInformation, "Kutools for Excel"
ElseIf Range("E" & Selection.Row).Value = Date Then
ActiveSheet.Unprotect Password :="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
Si fin
End Sub


Après avoir enregistré et cliqué sur la cellule, je reçois un message, seule la ligne de date d'aujourd'hui peut être modifiée .... mais si je double-clique sur la cellule, je peux modifier ... aide pls
Ce commentaire a été minimisé par le modérateur sur le site
Cela fonctionne très bien. mais comment puis-je le changer pour déverrouiller une colonne basée sur les dates de la ligne 3 ?
Ce commentaire a été minimisé par le modérateur sur le site
En tant que personne relativement nouvelle dans VBA, cela vous dérangerait-il d'expliquer pourquoi xRow = 2 dans la ligne 4 ?



Merci
Ce commentaire a été minimisé par le modérateur sur le site
parce que dans la ligne no. 1 vous avez un en-tête
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,

lors de l'exécution de ce code, je reçois une erreur comme indiqué sur la figure
Aussi, je joins un instantané de mon excel où je veux apporter des modifications ..

Pouvez-vous guider dans mon code où dois-je apporter des modifications en fonction de mon fichier Excel afin que les cellules contenant uniquement la date d'aujourd'hui et la date future puissent être modifiées ???
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Karane,
Parce qu'il y a des cellules fusionnées dans votre tableau, le code ci-dessus ne peut pas être appliqué correctement dans le tableau des cellules fusionnées.
Si vous avez d'autres bonnes idées, n'hésitez pas à commenter ici. Merci!
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, j'ai essayé de faire la même chose mais de protéger toutes les colonnes sauf la colonne de date d'aujourd'hui avec le code VBA en remplaçant "Selection.Row" par "Selection.Columns" et "E" par "5" (numéro de ligne où sont les dates), mais Je continue à recevoir l'erreur 1004 !

Toute aide s'il vous plaît?

Merci
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, j'ai essayé de faire la même chose mais de protéger toutes les colonnes sauf la colonne de date d'aujourd'hui avec le code VBA en remplaçant "Selection.Row" par "Selection.Columns" et "E" par "5" (numéro de ligne où sont les dates), mais Je continue à recevoir l'erreur 1004 !

Toute aide s'il vous plaît?

Merci
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
Pour appliquer ce code aux colonnes dont vous avez besoin, veuillez utiliser le code VBA suivant : (Remarque : dans le code, 5 est le numéro de ligne contenant la date, veuillez le modifier selon vos besoins.)

Private Sub Worksheet_SelectionChange (Cible ByVal en tant que plage)
Dim xRg As Range
Définir xRg = Target.Worksheet.Cells(5, Target.Column)
Si xRg <> Date Alors
ActiveSheet.Protect Mot de passe :="111111"
MsgBox "Seule la ligne de date d'aujourd'hui peut être modifiée !", vbInformation, "Kutools for Excel"
SinonSi xRg.Valeur = Date Alors
ActiveSheet.Unprotect Password :="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
Si fin
End Sub

S'il vous plaît essayez, j'espère que cela peut vous aider!
Ce commentaire a été minimisé par le modérateur sur le site
Merci! Désolé, je n'ai pas reçu votre réponse jusqu'à présent, c'est peut-être un problème dans mon e-mail.

Ça a marché! Je ne peux pas dire assez merci ! J'apprécie vraiment ça!
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
Content que ça puisse t'aider !
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,

J'essaie d'étendre cela pour protéger les colonnes qui n'incluent pas ce mois en cours ou/et cette semaine en cours. J'ai essayé de remplacer "Date" par "mois" ou "semaine", mais cela n'a pas fonctionné.

J'ai joint un exemple de feuille de semaines où l'utilisateur ne peut pas modifier ou saisir des colonnes autres que cette semaine.

Un conseil à ce sujet ? ou dois-je utiliser des dates réelles pour refléter un jour du mois ?
Ce commentaire a été minimisé par le modérateur sur le site
Merci pour votre aide, merci beaucoup mon pote, c'est une grande aide. et résolu ma tension.
Soyez sûr
ConsidérationsRohit Khanna
Ce commentaire a été minimisé par le modérateur sur le site
Salut, je suis confronté à un problème, une fois que je ferme le fichier et que je le rouvre à la même date, le code ne fonctionne pas. svp aidez moi je suis coincé
Ce commentaire a été minimisé par le modérateur sur le site
Salut Rohit,
Pour conserver le code, vous devez enregistrer votre classeur au format Excel Macro-Enabled Workbook, veuillez essayer, merci !
Ce commentaire a été minimisé par le modérateur sur le site
bonjour je l'ai fait mais quand j'appuie sur le message cellulaire montre qu'il ne peut pas être modifié mais quand j'appuie sur keyborad je peux toujours écrire dans la cellule
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, je voudrais protéger les jours futurs et autoriser la modification des jours actuels et passés. Comment je fais ça?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, Miguel, Pour protéger les jours futurs, veuillez appliquer le code ci-dessous : Private Sub Worksheet_Change (ByVal Target As Excel.Range)
'Mettre à jour par Extendoffice
Dim xRow As Long
xLigne = 2
ThisWorkbook.ActiveSheet.Unprotect Mot de passe :="111111"
ThisWorkbook.ActiveSheet.Cells.Locked=Faux
Faire jusqu'à ce qu'il soit vide(Cellules(xRow, 5))
Si Cellules(xRow, 5) > Date Alors
Lignes(xRow).Locked = True
Si fin
xLigne = xLigne + 1
boucle
ThisWorkbook.ActiveSheet.Protect Mot de passe :="111111"
End SubVeuillez essayer, j'espère que cela pourra vous aider !
Il n'y a pas encore de commentaires postés ici
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés

Nous suivre

Copyright © 2009 - www.extendoffice.com. | Tous les droits sont réservés. Alimenté par ExtendOffice. | | Plan du site
Microsoft et le logo Office sont des marques commerciales ou des marques déposées de Microsoft Corporation aux États-Unis et / ou dans d'autres pays.
Protégé par Sectigo SSL