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
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
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
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
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
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
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
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
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
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
***********
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
***********
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
***********
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
***********
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
***********
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
***********
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 SubBonjour,
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
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
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 SubBonjour,
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
Sheets(i).Protect True
Finissent souvent par un tour dans la "Ferrari"
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
Sheets(i).Protect True
Finissent souvent par un tour dans la "Ferrari"
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
Sheets(i).Protect True
Finissent souvent par un tour dans la "Ferrari"
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