Bonjour,
Je cherche à locker plusieurs colonnes en vba en fonction de la valeur d'une cellule (ligne 89) comprise dans ces colonnes.
Voici mon code :
Private Sub valider_btn_Click()
If matricule.Value = "" Then
MsgBox "vous n'avez pas saisi votre matricule."
ElseIf ActiveCell.Offset(0, 251).Value = Int(matricule.Value) Then
ActiveSheet.Unprotect Password:="1"
Range(Trim(Str(ActiveCell.Row)) & ":" & Trim(Str(ActiveCell.Row))).Select
Selection.Locked = False
Selection.FormulaHidden = False
Application.Goto reference:="r1c2"
ActiveCell.Offset(0, 0).Value = Int(matricule.Value)
Range("C2").Value = Range("c2").Value + 1
Dim ws As Worksheet
Dim col As Integer
Dim lig As Integer
Set ws = Worksheets(1)
lig = 89
For col = 5 To 216
If ws.Cells(lig, col).Value = 0 Then
MsgBox ("valeur col : " & col & " et valeur lig : " & lig & ".")
ws.Columns(col).Locked = True
End If
Next col
Set ws = Nothing
Application.Goto reference:="r6c5"
ActiveSheet.Protect Password:="1", DrawingObjects:=True, Contents:=True, Scenarios:=True
Unload Verif
MsgBox "saisissez vos souhaits maintenant en notant 'CP' ou 'RTT' sur les jours choisis."
Else
MsgBox "vous n'avez pas bien saisi votre matricule."
End If
End Sub
le problème, c'est que j'ai un débogage :
Erreur d'exécution '1004':
Impossible de définir la propriété Locked de la classe Range
sur la ligne :
ws.Columns(col).Locked = True
De plus, si je mets entirecolumns.hidden à la place de locked, ça marche.
J'avoue ne plus savoir quoi faire après plusieurs heures de recherches et tentatives ratées...
Dernier détail, certaines cellules sont déjà verrouillées. Peut-être que leur indiquer un verrouillage supplémentaire les fait planter, non?
Merci d'avance à ceux qui pourront m'aider.
Cordialement,
Je cherche à locker plusieurs colonnes en vba en fonction de la valeur d'une cellule (ligne 89) comprise dans ces colonnes.
Voici mon code :
Private Sub valider_btn_Click()
If matricule.Value = "" Then
MsgBox "vous n'avez pas saisi votre matricule."
ElseIf ActiveCell.Offset(0, 251).Value = Int(matricule.Value) Then
ActiveSheet.Unprotect Password:="1"
Range(Trim(Str(ActiveCell.Row)) & ":" & Trim(Str(ActiveCell.Row))).Select
Selection.Locked = False
Selection.FormulaHidden = False
Application.Goto reference:="r1c2"
ActiveCell.Offset(0, 0).Value = Int(matricule.Value)
Range("C2").Value = Range("c2").Value + 1
Dim ws As Worksheet
Dim col As Integer
Dim lig As Integer
Set ws = Worksheets(1)
lig = 89
For col = 5 To 216
If ws.Cells(lig, col).Value = 0 Then
MsgBox ("valeur col : " & col & " et valeur lig : " & lig & ".")
ws.Columns(col).Locked = True
End If
Next col
Set ws = Nothing
Application.Goto reference:="r6c5"
ActiveSheet.Protect Password:="1", DrawingObjects:=True, Contents:=True, Scenarios:=True
Unload Verif
MsgBox "saisissez vos souhaits maintenant en notant 'CP' ou 'RTT' sur les jours choisis."
Else
MsgBox "vous n'avez pas bien saisi votre matricule."
End If
End Sub
le problème, c'est que j'ai un débogage :
Erreur d'exécution '1004':
Impossible de définir la propriété Locked de la classe Range
sur la ligne :
ws.Columns(col).Locked = True
De plus, si je mets entirecolumns.hidden à la place de locked, ça marche.
J'avoue ne plus savoir quoi faire après plusieurs heures de recherches et tentatives ratées...
Dernier détail, certaines cellules sont déjà verrouillées. Peut-être que leur indiquer un verrouillage supplémentaire les fait planter, non?
Merci d'avance à ceux qui pourront m'aider.
Cordialement,
Dernière édition: