Feuille et fin de mois

  • Initiateur de la discussion Initiateur de la discussion ZeH
  • 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 !

Z

ZeH

Guest
Bonjour à tous,

Est-il possible en VBA d'empêcher la modification d'une feuille lors d'une échéance?

Par ex: le 31 janvier 2005 à minuit, la feuille devient inaccessible en écriture.

Merci par avance.

ZeH
 
Bonjour à toi,

On peut passer par le VBA pour ce genre de choses.
Le plus simple est de tester la date à l'ouverture du classeur.

Private Sub Workbook_Open()
Datelimite = CDate("31/01/2005")
If Date > Datelimite Then
Sheets("MaFeuille").Protect Password:="OneTwoThree"
End If
End Sub

Une contrainte : si l'utilisateur laisse le fichier ouvert du 31/01 au 01/02 ... le 01/02 il pourra encore saisir des données.
Mais bon, as-tu des utilisateurs qui travaillent à minuit ?
Si oui, tu peux toujours utiliser cette procédure sur l'évennement de changement dans la feuille concernée.

Bonne journée

Rai
 
Salut,

Je t'ai mis un fichier en PJ.

La feuille 'Test' est concernée par l'échéance.

Pour visualiser le code, il faut aller dans l'éditeur VBE et double-cliquer sur ThisWorkbook.
J'ai mis la macro sur l'évennement change.
Comme ça, même si tes utilisateurs travaillent dessus à minuit ... le vérouillage se fait automatiquement dès lors qu'ils entrent une donnée n'importe où dans le classeur.

Ci-dessous le code :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Feuille$ = "Test"
'Placer ici le nom de la feuille concernée

Echeance = CDate("31/01/2005")
'Placer ici la date concernée, au format jj/mm/aaaa

If Date > Echeance Then
Sheets(Feuille).Protect Password:="OneTwoThree"
End If
End Sub


Bonne suite

Rai
 

Pièces jointes

Merci bien Rai, cela fonctionne à merveille.

Une autre question si tu le permets, est-ce possible d'autoriser une feuille en écriture uniquement entre deux dates.

Ex:

Autoriser l'écriture de la feuille test uniquement du 1er janvier 2005 au 31 janvier 2005?

Merci pour ton aide.
 
Salut,

Bien sûr que c'est possible.
Dans ce cas, si tu penses à un mois plutôt qu'à 2 dates (à en juger ton exemple), j'utiliserais la fonction VBA Month() équivalent de la fonction MOIS d'Excel. Et idem avec Year pour tester l'année (à moins que tu ne veuilles avoir la même feuille valide TOUS les mois de janvier.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Feuille$ = "Test"
'Placer ici le nom de la feuille concernée

Echeance = CDate("01/01/2005")
'Placer ici la date concernée, au format jj/mm/aaaa

If Month(Date) = Month(Echeance) and Year(Date)=Year(Echeance)Then
Sheets(Feuille).Unprotect Password:="OneTwoThree"
else
Sheets(Feuille).Protect Password:="OneTwoThree"
End If
End Sub
 
Hello Rai,

J'ai un message d'erreur "erreur de compilation, variable non définie"

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Feuille$ = "bilan janvier"
'Placer ici le nom de la feuille concernée

Echeance = CDate("01/01/2005")
'Placer ici la date concernée, au format jj/mm/aaaa

If Month(Date) = Month(Echeance) And Year(Date) = Year(Echeance) Then
Sheets(Feuille).Unprotect Password:="OneTwoThree"
Else
Sheets(Feuille).Protect Password:="OneTwoThree"
End If
End Sub

Si tu as la solution, merci bien

ZeH
 
Salut,

Je viens de tester sur mon PC : Windows XP et Excel 2003 (XP), ça tourne impecc'

Peux-tu mettre ton ficher en PJ ?
Pas besoin des données chiffrées qu'il contient.
2 feuilles (dont 'bilan janvier') & les macros suffiront.
Bien entendu pour 'bilan janvier' tu peux aussi virer ou changer les chiffres ou textes.

J'regarde ça dans la foulée

Rai
 
re-,

Grrrrrrrrrr, des fois je me mordrais moi-même, tellement j'oublie des évidences.

Merci pour ton fichier, il m'a ouvert les yeux.


2 solutions :
Soit tu enlèves le 'Option Explicit' du début de ton code

Soit tu déclares TOUTES tes variables AVANT de les utiliser
Dans le cas présent :
Dim Feuille As String
Dim Echeance As Date

------

Si tu ne veux pas t'encombrer avec ces déclarations, dans l'éditeur VBE :
Menu Outils/Options et décoche la case 'Déclaration des variables obligatoire"


Comme quoi, des fois ...

A bientôt

Rai
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
202
Réponses
4
Affichages
142
Retour