Salut à vous,
Je consulte souvent le forum mais c'est la première fois que je me permets de poser une question.
je souhaite modifier les attributs de validation d'une plage via VBA sur une feuille protégée.
Ayant consulté de nombreuses discussions consacrées à ce sujet sur plusieurs sites, je sais que la protection doit être faite en VBA et inclure les paramètres UserInterfaceOnly et DrawingObjects (la nécessité de ce dernier est liée au fait que je souhaite intervenir sur la validation des cellules de ma plage).
Malgré cela, la fatidique "erreur d’exécution '1004'" survient dès que je touche à la validation de mes cellules.
La solution "brutale" serait de déprotéger/reprotéger la feuille mais elle comporte un inconvénient rédhibitoire pour ce que je veux faire : déprotéger/reprotéger vide le presse-papier et interdit donc les copier/coller à l’intérieur de la plage concernée. Il y a bien sûr des solutions pour contourner ce nouveau problème mais elles comportent également des inconvénients que je souhaite éviter.
Quelqu'un pourrait-il m'expliquer pourquoi
	
	
	
	
	
		
n'est pas suffisant pour ce que je souhaite faire ?
Le code ci-dessous fonctionne parfaitement avec les lignes de protection/de-protection (marquées par '<commenter>) mais provoque l'erreur 1004 dès que je les passe en commentaire.
Merci pour vos réponses car la question m'a occupé tout le week-end (pluvieux, il est vrai !).
Je joins un fichier simplifié pour illustrer le problème.
Luigi
	
	
	
	
	
		
	
		
			
		
		
	
				
			Je consulte souvent le forum mais c'est la première fois que je me permets de poser une question.
je souhaite modifier les attributs de validation d'une plage via VBA sur une feuille protégée.
Ayant consulté de nombreuses discussions consacrées à ce sujet sur plusieurs sites, je sais que la protection doit être faite en VBA et inclure les paramètres UserInterfaceOnly et DrawingObjects (la nécessité de ce dernier est liée au fait que je souhaite intervenir sur la validation des cellules de ma plage).
Malgré cela, la fatidique "erreur d’exécution '1004'" survient dès que je touche à la validation de mes cellules.
La solution "brutale" serait de déprotéger/reprotéger la feuille mais elle comporte un inconvénient rédhibitoire pour ce que je veux faire : déprotéger/reprotéger vide le presse-papier et interdit donc les copier/coller à l’intérieur de la plage concernée. Il y a bien sûr des solutions pour contourner ce nouveau problème mais elles comportent également des inconvénients que je souhaite éviter.
Quelqu'un pourrait-il m'expliquer pourquoi
		Code:
	
	
	ActiveSheet.Protect DrawingObjects:=True, UserInterfaceOnly:=True
	Le code ci-dessous fonctionne parfaitement avec les lignes de protection/de-protection (marquées par '<commenter>) mais provoque l'erreur 1004 dès que je les passe en commentaire.
Merci pour vos réponses car la question m'a occupé tout le week-end (pluvieux, il est vrai !).
Je joins un fichier simplifié pour illustrer le problème.
Luigi
		Code:
	
	
	Private Sub Worksheet_Activate()
ActiveSheet.Protect DrawingObjects:=True, UserInterfaceOnly:=True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set av = Evaluate("Avalider")
Set isect = Application.Intersect(av, Target)
If Target.Count = 1 And Not isect Is Nothing Then
    Application.EnableEvents = False
    Target.Value = Target.Value & "-OK"
    Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set av = Evaluate("Avalider")
Set isect = Application.Intersect(av, Target)
If Target.Count = 1 And Not isect Is Nothing Then
    ActiveSheet.Unprotect '<commenter>
    Target.Validation.Delete  
    Target.Validation.Add Type:=xlValidateList, Formula1:="=" & Range("D1").Value
    ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=True '<commenter>
End If
End Sub
	Pièces jointes
			
				Dernière édition: