Bonjour,
J'aimerais pouvoir lorsqu'une procédure événementielle s'exécute débloquer temporairement la feuille pour que cela se passe sans encombre. J'ai écrit le code suivant :
Le problème est qu'un message "impossible de définir la propriété Hidden de la classe Range." qui apparaît pour le premier "entirecolumn.Hidden" à l'exécution seules certaines plages sont déverrouillées pour modification manuelle. Ce code en question fonctionne quand la feuille n'est pas bloquée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Private Sub Worksheet_Change(ByVal Target As Range) 'empêcher de faire scintiller l'écran pendant l'éxécution du programme Application.ScreenUpdating = False Dim plage As Range, C As Range, d As Range ActiveSheet.Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True ActiveSheet.EnableSelection = xlUnlockedCells ' automatisation de la trame de base 'masquage des lignes vides lorsque le service n'est pas pourvu en fonction (IDE nuit, ASD) Set plage = [a7: a100] For Each C In plage If C.Value = "0" Then C.EntireRow.Hidden = True Else C.EntireRow.Hidden = False End If Next C Set plage = Nothing 'masquage de Colonnes pour respect de la longueur des mois (calendrier) '(doit être associé à une formule conditionnelle =SI(AD6<>"";SI(MOIS(AD6)=MOIS(AD6+1);AD6+1;"");"") Set plage = Range("AD5:AF5") For Each d In plage If d.Value = "" Then d.EntireColumn.Hidden = True Else d.EntireColumn.Hidden = False End If Next d Set plage = Nothing Columns("AG").EntireColumn.Hidden = True Sheets("TRAME").Protect End Sub
Merci pour votre aide!
Partager