Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Diff Date jour, presque OK

8 réponses
Avatar
YANN24
Bonjour,
voici ma macro pour que si la date du jour est plus vieille de 30 jours par
rapport à la date en B8, alors pour chaque feuille visible, il déprotège,
sélectionne toutes les cellules et les vérouille, puis protège la feuille.
Mais ça bugue sur le vérouillage des celulles. Pourquoi?
Merci d'avance.
YANN

Sub test()
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
If (DateDiff("d", Now, Sheets(i).[B8])) < -30 Then
Sheets(i).Unprotect
Sheet.Cells.Locked True ------------------------ ici ??
Sheets(i).Protect True
Else
Sheets(i).Protect False
End If
End If
Next

End Sub

8 réponses

Avatar
anonymousA
bonjour,

Sheets(i).Cells.Locked True

A+


Bonjour,
voici ma macro pour que si la date du jour est plus vieille de 30 jours par
rapport à la date en B8, alors pour chaque feuille visible, il déprotège,
sélectionne toutes les cellules et les vérouille, puis protège la feuille.
Mais ça bugue sur le vérouillage des celulles. Pourquoi?
Merci d'avance.
YANN

Sub test()
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
If (DateDiff("d", Now, Sheets(i).[B8])) < -30 Then
Sheets(i).Unprotect
Sheet.Cells.Locked True ------------------------ ici ??
Sheets(i).Protect True
Else
Sheets(i).Protect False
End If
End If
Next

End Sub



Avatar
YANN24
re,
j'ai essayer, mais ça ne marche pas. il bug encore sur cette ligne.
Yann


bonjour,

Sheets(i).Cells.Locked True

A+


Bonjour,
voici ma macro pour que si la date du jour est plus vieille de 30 jours par
rapport à la date en B8, alors pour chaque feuille visible, il déprotège,
sélectionne toutes les cellules et les vérouille, puis protège la feuille.
Mais ça bugue sur le vérouillage des celulles. Pourquoi?
Merci d'avance.
YANN

Sub test()
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
If (DateDiff("d", Now, Sheets(i).[B8])) < -30 Then
Sheets(i).Unprotect
Sheet.Cells.Locked True ------------------------ ici ??
Sheets(i).Protect True
Else
Sheets(i).Protect False
End If
End If
Next

End Sub





Avatar
YANN24
Re,
ça martche, c'est en fait :

Sheets(i).Cells.Locked = True

Merci.
Maintenant, je voudrais intégrer ça à mon code en général. En fait, je veux
que cette macro s'éxécute après mon userform, et donc après mon choix
d'affichage des feuilles. ou alors, inclure cette macro dans chaque choix de
mon userform ? Ci après mon code userform.
Merci d'avance.
YANN
----------
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
If (DateDiff("d", Now, Sheets(i).[B8])) < -38 Then
Sheets(i).Unprotect
Sheets(i).Cells.Locked = True
Sheets(i).Protect True
Else
Sheets(i).Protect False
End If
End If
Next
--------

à ce code userform :
**********
Private Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub CommandButton2_Click()
'si l'utilisateur clique sur Annuler, on quitte.
Unload Me
ThisWorkbook.Close
End Sub

Private Sub UserForm_Initialize()
'empêche l'affichage de la croix de fermeture en utilisant les API
'déclarées en début de module
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D")
& "Frame", Me.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF

With Me.ComboBox1
.AddItem "2004"
.AddItem "2005"
.AddItem "2006"
.AddItem "Administrateur"
End With

Me.TextBox1.Visible = False
Me.Label1.Visible = False
End Sub

Private Sub Combobox1_Click()
Select Case Me.ComboBox1.Value

Case "2004"
ThisWorkbook.IsAddin = False
ActiveWorkbook.Unprotect
For i = 11 To 16
Sheets(i).Visible = True
Next
For i = 1 To 10
Sheets(i).Visible = xlSheetVeryHidden
Next
For i = 17 To 43
Sheets(i).Visible = xlSheetVeryHidden
Next
ActiveWorkbook.Protect
Unload Me

Case "2005"
ThisWorkbook.IsAddin = False
ActiveWorkbook.Unprotect
For i = 17 To 29
Sheets(i).Visible = True
Next
For i = 1 To 16
Sheets(i).Visible = xlSheetVeryHidden
Next
For i = 30 To 43
Sheets(i).Visible = xlSheetVeryHidden
Next
ActiveWorkbook.Protect
Unload Me

Case "2006"
ThisWorkbook.IsAddin = False
ActiveWorkbook.Unprotect
For i = 30 To 42
Sheets(i).Visible = True
Next
For i = 1 To 29
Sheets(i).Visible = xlSheetVeryHidden
Next
ActiveWorkbook.Protect
Unload Me

Case "Administrateur"

With Me
.ComboBox1.Visible = False
With .TextBox1
.Visible = True
.SetFocus
End With
.Label1.Visible = True
End With

End Select
End Sub
Private Sub CommandButton1_Click()

If Me.ComboBox1.Value = "" Then
MsgBox "vous n'avez rien saisi"
Me.ComboBox1.SetFocus
Else
If TextBox1.Value = "" Then
Else
If controlmdp(TextBox1.Value) = True Then
ThisWorkbook.IsAddin = False
For i = 1 To ThisWorkbook.Sheets.Count
ActiveWorkbook.Unprotect
Sheets(i).Visible = True
ActiveWorkbook.Protect
Next
Unload Me
End If
End If
End If

End Sub
Function controlmdp(nommdp)
On Error Resume Next
tabmdp = Array("24200s")
trouve = Application.WorksheetFunction.HLookup(nommdp, tabmdp, 1, False)
If Err.Number <> 0 Then
Err.Clear
MsgBox "Vous n'êtes pas autoriser à pénétrer cet espace réservé"
Else
MsgBox "Autorisation acceptée"
controlmdp = True
End If
End Function
***********
Avatar
Phil99999
Sub test()
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
If (DateDiff("d", Now, Sheets(i).[B8])) < -30 Then
Sheets(i).Unprotect
Worksheets(i).Cells.Locked = True
Sheets(i).Protect
Else
Sheets(i).Protect False
End If
End If
Next

End Sub


Bonjour,
voici ma macro pour que si la date du jour est plus vieille de 30 jours par
rapport à la date en B8, alors pour chaque feuille visible, il déprotège,
sélectionne toutes les cellules et les vérouille, puis protège la feuille.
Mais ça bugue sur le vérouillage des celulles. Pourquoi?
Merci d'avance.
YANN

Sub test()
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
If (DateDiff("d", Now, Sheets(i).[B8])) < -30 Then
Sheets(i).Unprotect
Sheet.Cells.Locked True ------------------------ ici ??
Sheets(i).Protect True
Else
Sheets(i).Protect False
End If
End If
Next

End Sub



Avatar
anonymousA
re,

tu fais de ton code une procédure et tu insères l'appel à cette proc avant
chaque unload me.

A+


Re,
ça martche, c'est en fait :

Sheets(i).Cells.Locked = True

Merci.
Maintenant, je voudrais intégrer ça à mon code en général. En fait, je veux
que cette macro s'éxécute après mon userform, et donc après mon choix
d'affichage des feuilles. ou alors, inclure cette macro dans chaque choix de
mon userform ? Ci après mon code userform.
Merci d'avance.
YANN
----------
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
If (DateDiff("d", Now, Sheets(i).[B8])) < -38 Then
Sheets(i).Unprotect
Sheets(i).Cells.Locked = True
Sheets(i).Protect True
Else
Sheets(i).Protect False
End If
End If
Next
--------

à ce code userform :
**********
Private Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub CommandButton2_Click()
'si l'utilisateur clique sur Annuler, on quitte.
Unload Me
ThisWorkbook.Close
End Sub

Private Sub UserForm_Initialize()
'empêche l'affichage de la croix de fermeture en utilisant les API
'déclarées en début de module
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D")
& "Frame", Me.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF

With Me.ComboBox1
.AddItem "2004"
.AddItem "2005"
.AddItem "2006"
.AddItem "Administrateur"
End With

Me.TextBox1.Visible = False
Me.Label1.Visible = False
End Sub

Private Sub Combobox1_Click()
Select Case Me.ComboBox1.Value

Case "2004"
ThisWorkbook.IsAddin = False
ActiveWorkbook.Unprotect
For i = 11 To 16
Sheets(i).Visible = True
Next
For i = 1 To 10
Sheets(i).Visible = xlSheetVeryHidden
Next
For i = 17 To 43
Sheets(i).Visible = xlSheetVeryHidden
Next
ActiveWorkbook.Protect
Unload Me

Case "2005"
ThisWorkbook.IsAddin = False
ActiveWorkbook.Unprotect
For i = 17 To 29
Sheets(i).Visible = True
Next
For i = 1 To 16
Sheets(i).Visible = xlSheetVeryHidden
Next
For i = 30 To 43
Sheets(i).Visible = xlSheetVeryHidden
Next
ActiveWorkbook.Protect
Unload Me

Case "2006"
ThisWorkbook.IsAddin = False
ActiveWorkbook.Unprotect
For i = 30 To 42
Sheets(i).Visible = True
Next
For i = 1 To 29
Sheets(i).Visible = xlSheetVeryHidden
Next
ActiveWorkbook.Protect
Unload Me

Case "Administrateur"

With Me
.ComboBox1.Visible = False
With .TextBox1
.Visible = True
.SetFocus
End With
.Label1.Visible = True
End With

End Select
End Sub
Private Sub CommandButton1_Click()

If Me.ComboBox1.Value = "" Then
MsgBox "vous n'avez rien saisi"
Me.ComboBox1.SetFocus
Else
If TextBox1.Value = "" Then
Else
If controlmdp(TextBox1.Value) = True Then
ThisWorkbook.IsAddin = False
For i = 1 To ThisWorkbook.Sheets.Count
ActiveWorkbook.Unprotect
Sheets(i).Visible = True
ActiveWorkbook.Protect
Next
Unload Me
End If
End If
End If

End Sub
Function controlmdp(nommdp)
On Error Resume Next
tabmdp = Array("24200s")
trouve = Application.WorksheetFunction.HLookup(nommdp, tabmdp, 1, False)
If Err.Number <> 0 Then
Err.Clear
MsgBox "Vous n'êtes pas autoriser à pénétrer cet espace réservé"
Else
MsgBox "Autorisation acceptée"
controlmdp = True
End If
End Function
***********


Avatar
YANN24
ok, merci.
YANN


re,

tu fais de ton code une procédure et tu insères l'appel à cette proc avant
chaque unload me.

A+


Re,
ça martche, c'est en fait :

Sheets(i).Cells.Locked = True

Merci.
Maintenant, je voudrais intégrer ça à mon code en général. En fait, je veux
que cette macro s'éxécute après mon userform, et donc après mon choix
d'affichage des feuilles. ou alors, inclure cette macro dans chaque choix de
mon userform ? Ci après mon code userform.
Merci d'avance.
YANN
----------
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
If (DateDiff("d", Now, Sheets(i).[B8])) < -38 Then
Sheets(i).Unprotect
Sheets(i).Cells.Locked = True
Sheets(i).Protect True
Else
Sheets(i).Protect False
End If
End If
Next
--------

à ce code userform :
**********
Private Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub CommandButton2_Click()
'si l'utilisateur clique sur Annuler, on quitte.
Unload Me
ThisWorkbook.Close
End Sub

Private Sub UserForm_Initialize()
'empêche l'affichage de la croix de fermeture en utilisant les API
'déclarées en début de module
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D")
& "Frame", Me.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF

With Me.ComboBox1
.AddItem "2004"
.AddItem "2005"
.AddItem "2006"
.AddItem "Administrateur"
End With

Me.TextBox1.Visible = False
Me.Label1.Visible = False
End Sub

Private Sub Combobox1_Click()
Select Case Me.ComboBox1.Value

Case "2004"
ThisWorkbook.IsAddin = False
ActiveWorkbook.Unprotect
For i = 11 To 16
Sheets(i).Visible = True
Next
For i = 1 To 10
Sheets(i).Visible = xlSheetVeryHidden
Next
For i = 17 To 43
Sheets(i).Visible = xlSheetVeryHidden
Next
ActiveWorkbook.Protect
Unload Me

Case "2005"
ThisWorkbook.IsAddin = False
ActiveWorkbook.Unprotect
For i = 17 To 29
Sheets(i).Visible = True
Next
For i = 1 To 16
Sheets(i).Visible = xlSheetVeryHidden
Next
For i = 30 To 43
Sheets(i).Visible = xlSheetVeryHidden
Next
ActiveWorkbook.Protect
Unload Me

Case "2006"
ThisWorkbook.IsAddin = False
ActiveWorkbook.Unprotect
For i = 30 To 42
Sheets(i).Visible = True
Next
For i = 1 To 29
Sheets(i).Visible = xlSheetVeryHidden
Next
ActiveWorkbook.Protect
Unload Me

Case "Administrateur"

With Me
.ComboBox1.Visible = False
With .TextBox1
.Visible = True
.SetFocus
End With
.Label1.Visible = True
End With

End Select
End Sub
Private Sub CommandButton1_Click()

If Me.ComboBox1.Value = "" Then
MsgBox "vous n'avez rien saisi"
Me.ComboBox1.SetFocus
Else
If TextBox1.Value = "" Then
Else
If controlmdp(TextBox1.Value) = True Then
ThisWorkbook.IsAddin = False
For i = 1 To ThisWorkbook.Sheets.Count
ActiveWorkbook.Unprotect
Sheets(i).Visible = True
ActiveWorkbook.Protect
Next
Unload Me
End If
End If
End If

End Sub
Function controlmdp(nommdp)
On Error Resume Next
tabmdp = Array("24200s")
trouve = Application.WorksheetFunction.HLookup(nommdp, tabmdp, 1, False)
If Err.Number <> 0 Then
Err.Clear
MsgBox "Vous n'êtes pas autoriser à pénétrer cet espace réservé"
Else
MsgBox "Autorisation acceptée"
controlmdp = True
End If
End Function
***********




Avatar
YANN24
Merci Phil,
c'est OK.
YANN


Sub test()
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
If (DateDiff("d", Now, Sheets(i).[B8])) < -30 Then
Sheets(i).Unprotect
Worksheets(i).Cells.Locked = True
Sheets(i).Protect
Else
Sheets(i).Protect False
End If
End If
Next

End Sub


Bonjour,
voici ma macro pour que si la date du jour est plus vieille de 30 jours par
rapport à la date en B8, alors pour chaque feuille visible, il déprotège,
sélectionne toutes les cellules et les vérouille, puis protège la feuille.
Mais ça bugue sur le vérouillage des celulles. Pourquoi?
Merci d'avance.
YANN

Sub test()
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
If (DateDiff("d", Now, Sheets(i).[B8])) < -30 Then
Sheets(i).Unprotect
Sheet.Cells.Locked True ------------------------ ici ??
Sheets(i).Protect True
Else
Sheets(i).Protect False
End If
End If
Next

End Sub





Avatar
Jacky
Re...
Les commandes
Sheets(i).Protect True
Finissent souvent par un tour dans la "Ferrari"

;o))

JJ



"YANN24" a écrit dans le message de
news:
Bonjour,
voici ma macro pour que si la date du jour est plus vieille de 30 jours
par

rapport à la date en B8, alors pour chaque feuille visible, il
déprotège,

sélectionne toutes les cellules et les vérouille, puis protège la
feuille.

Mais ça bugue sur le vérouillage des celulles. Pourquoi?
Merci d'avance.
YANN

Sub test()
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
If (DateDiff("d", Now, Sheets(i).[B8])) < -30 Then
Sheets(i).Unprotect
Sheet.Cells.Locked True ------------------------ ici ??
Sheets(i).Protect True
Else
Sheets(i).Protect False
End If
End If
Next

End Sub