Rendre une feuille inactive a partir d'une certaine date

Fermé
arnoH Messages postés 16 Date d'inscription mardi 24 juin 2014 Statut Membre Dernière intervention 22 septembre 2014 - 8 août 2014 à 14:49
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 8 août 2014 à 15:30
Bonjour,

Je travaille actuellement sur un projet me demandant d'utiliser Excel, pour faciliter la saisie des données par les utilisateurs j'aurais besoin que ceux-ci ne puissent saisir des données que pendant des intervalles limités. Des intervalles d'heures mais également de dates

Je ne suis pas un expert en VBA mais j'ai déja réussi à m'arranger pour les intervalles d'heures ( If Time >= "08" And Time < "08:30:00" Then...)
Je me demandais comment je pouvais faire la même chose avec des dates pour rendre inactive la feuille.

Si je devais schématiser je cherche ceci :

IF date est entre 1aout et le 07aout THEN on désactive la feuille.

Cependant je ne connais pas la fonction me permettant de mentionner des dates, ni celle permettant de rendre inactive la saisie dans une feuille(je pense pouvoir trouver mais les dates je n'y parviens pas)

Quelqu'un pourrait m'indiquer vers ou chercher ? Ou simplement comment sélectionner une date.

En vous remerciant par avance, et a vot bon coeur !


3 réponses

skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
Modifié par skk201 le 8/08/2014 à 15:09
Bonjour, qqchose comme ça ?

Sub desactiver()
If Day(Now) > 8 Then GoTo ACT
If Month(Now) <> 8 Then GoTo ACT
Sheets("Feuil1").Visible = 0
Exit Sub
ACT:
Sheets("Feuil1").Visible = -1
End Sub



Ou simplement :

Sub Desactiever()
If Date(Now) < "08.08.14" AND Date(Now) > "31.07.14" Then
Sheets("Feuil1").Visible = 0
Else
Sheets("Feuil1").Visible = -1
End Sub


Mais la 1ere marche toute les année contrairement à la 2e

*Pensez mettre vos messages en [Résolu] et cliquer sur le + des conseil qui vous ont été utiles"
1
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
8 août 2014 à 15:07
Bonjour,

Dim date1 As Date, date2 As Date
date1 = CDate("1/8/2014")
date2 = CDate("7/8/2014")
If (Date >= date1 And Date <= date2) Or (Time >= "08:00" And Time < "08:30:00") Then
    Worksheets("Feuil1").Protect
Else
    Worksheets("Feuil1").Unprotect
End If

J'ai mis les dates en variables qu'elles soient au début pour faciliter leur mise à jour.

eric
1
arnoH Messages postés 16 Date d'inscription mardi 24 juin 2014 Statut Membre Dernière intervention 22 septembre 2014
8 août 2014 à 15:13
C'est parfait la seconde réponse c'est complètement ça !

Juste pour être certain d'avoir compris tout le code

Dim date1 As Date cela signifie que la variable date1 doit être considéré comme... une date !

Si je comprend bien ta ligne 4
- Si la date d'aujourd'hui est supérieure ou égale a DATE1 et que la date d'aujourd'hui est inférieure a DATE2 alors la feuille est protégée

C'est le contraire que je recherche (rendre active pendant la période) donc il me suffit de remplacer .Protect par .Unprotect
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
8 août 2014 à 15:30
Dim date1 As Date cela signifie que la variable date1 doit être considéré comme... une date !
C'est le typage des variables. Fortement conseiller de prendre cette habitude.
Elle doit recevoir une date et rien d'autre. Un peu contraignant au début mais fiabilise le code (en plus de le rendre plus rapide si tu choisis le bon type) et aide au déboguage.

eric
0