Bonjour,
Après avoir fait un bon survol du net, je reste bloqué sur un code VB sous Excel.
J'ai créé une macro qui colore une ligne entière en fonction de la valeur de la première cellule de la ligne. Par ailleurs, selon la valeur de cette première cellule, je verrouille ou déverrouille d'autres cellules.
Tout fonctionne très bien, mais comme bien des utilisateurs, je me confronte à un problème dès que je souhaite mettre ce fichier en partage (avec l'option partage d'Excel).
J'ai tenté d'enregistrer ce code dans un fichier .xla puis de l'activer dans les macros complémentaires. Il se charge bien au démarrage d'Excel mais rien ne se passe lorsque je le teste, même pas un bug 🙂. Je pense que mon problème vient de la relation entre le code et le fichier sur lequel je souhaite l'appliquer. Mais je patauge...
Quelqu'un pourrait-il m'aider ?
Je me permets de poster également mon code pour vous donner une idée:
-----------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Workbooks("K:\XXXX\XXXX.xls").Sheets("BBB").Unprotect "xxxxxxxx"
If Workbooks("K:\XXXX\XXXX.xls").Sheets("BBB").ActiveCell.Column = 1 Then
i = ActiveCell.Row
MaVariable = ActiveCell.Value
Select Case MaVariable
Case "Terminé"
Range(Cells(i, 2), Cells(i, 26)).Locked = True
Range(Cells(i, 1), Cells(i, 26)).Interior.ColorIndex = 43
Case "Refusé / Annulé"
Range(Cells(i, 2), Cells(i, 26)).Locked = False
Range(Cells(i, 1), Cells(i, 26)).Interior.ColorIndex = 3
Case "Commandé"
Range(Cells(i, 2), Cells(i, 26)).Locked = False
Range(Cells(i, 1), Cells(i, 26)).Interior.ColorIndex = 45
Case "En attente"
Range(Cells(i, 2), Cells(i, 26)).Locked = False
Range(Cells(i, 1), Cells(i, 26)).Interior.ColorIndex = 2
Case "Validé"
Range(Cells(i, 2), Cells(i, 26)).Locked = False
Range(Cells(i, 1), Cells(i, 26)).Interior.ColorIndex = 44
Case ""
Range(Cells(i, 2), Cells(i, 26)).Locked = False
Range(Cells(i, 1), Cells(i, 26)).Interior.ColorIndex = 2
End Select
Else
If Workbooks("K:\XXXX\XXXX.xls").Sheets("BBB").ActiveCell.Column > 1 Then
GoTo 2
End If
End If
2 Workbooks("K:\XXXX\XXXX.xls").Sheets("BBB").Protect "password"
End Sub
--------------------------------------------------
J'espère que quelqu'un pourra m'éclairer. Merci d'avance.
Natiffar
Après avoir fait un bon survol du net, je reste bloqué sur un code VB sous Excel.
J'ai créé une macro qui colore une ligne entière en fonction de la valeur de la première cellule de la ligne. Par ailleurs, selon la valeur de cette première cellule, je verrouille ou déverrouille d'autres cellules.
Tout fonctionne très bien, mais comme bien des utilisateurs, je me confronte à un problème dès que je souhaite mettre ce fichier en partage (avec l'option partage d'Excel).
J'ai tenté d'enregistrer ce code dans un fichier .xla puis de l'activer dans les macros complémentaires. Il se charge bien au démarrage d'Excel mais rien ne se passe lorsque je le teste, même pas un bug 🙂. Je pense que mon problème vient de la relation entre le code et le fichier sur lequel je souhaite l'appliquer. Mais je patauge...
Quelqu'un pourrait-il m'aider ?
Je me permets de poster également mon code pour vous donner une idée:
-----------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Workbooks("K:\XXXX\XXXX.xls").Sheets("BBB").Unprotect "xxxxxxxx"
If Workbooks("K:\XXXX\XXXX.xls").Sheets("BBB").ActiveCell.Column = 1 Then
i = ActiveCell.Row
MaVariable = ActiveCell.Value
Select Case MaVariable
Case "Terminé"
Range(Cells(i, 2), Cells(i, 26)).Locked = True
Range(Cells(i, 1), Cells(i, 26)).Interior.ColorIndex = 43
Case "Refusé / Annulé"
Range(Cells(i, 2), Cells(i, 26)).Locked = False
Range(Cells(i, 1), Cells(i, 26)).Interior.ColorIndex = 3
Case "Commandé"
Range(Cells(i, 2), Cells(i, 26)).Locked = False
Range(Cells(i, 1), Cells(i, 26)).Interior.ColorIndex = 45
Case "En attente"
Range(Cells(i, 2), Cells(i, 26)).Locked = False
Range(Cells(i, 1), Cells(i, 26)).Interior.ColorIndex = 2
Case "Validé"
Range(Cells(i, 2), Cells(i, 26)).Locked = False
Range(Cells(i, 1), Cells(i, 26)).Interior.ColorIndex = 44
Case ""
Range(Cells(i, 2), Cells(i, 26)).Locked = False
Range(Cells(i, 1), Cells(i, 26)).Interior.ColorIndex = 2
End Select
Else
If Workbooks("K:\XXXX\XXXX.xls").Sheets("BBB").ActiveCell.Column > 1 Then
GoTo 2
End If
End If
2 Workbooks("K:\XXXX\XXXX.xls").Sheets("BBB").Protect "password"
End Sub
--------------------------------------------------
J'espère que quelqu'un pourra m'éclairer. Merci d'avance.
Natiffar