VBA - Erreur protection feuille

wizard0147

XLDnaute Occasionnel
Bonjour à tous,

J'essaye de protéger une feuille mais malheureusement une erreur 1004 apparait dans le code dès que je la protège puis utilise la macro associée. Je prends pourtant bien soin de supprimer la protection en début de macro :

Sub
Sheets("Home").Unprotect
....
Sheets("Home").Protect
End Sub

Mais l'erreur apparait sur toutes les lignes du code ressamblant à celle-ci (Et il y en a beaucoup !):

.Validation.Add Type:=xlValidateList, Formula1:="=XXXX"

(où XXX est ule nom d'une plage de cellules sur une autre feuille)

Y'a-t-il un moyen de supprimer cette erreur ?

Merci d'avance
 

Pierrot93

XLDnaute Barbatruc
Re : VBA - Erreur protection feuille

Bonjour Wizard, PierreJean:)

le code ci-dessous fonctionne chez moi sur la feuille active :

Code:
With Range("C12").Validation
    .Delete
    .Add Type:=xlValidateList, Formula1:="=maliste"
End With

il faut, bien évidemment, que "maliste" soit une plage nommée dans le classeur où tu veux insérer ta validation. Attention aussi aux cellules fusionnées, sans plus de détails difficile de t'en dire plus...

bonne journée
@+
 

wizard0147

XLDnaute Occasionnel
Re : VBA - Erreur protection feuille

Merci Pierrot93, ce code marche également pou moi. Le problème c'est que quand je tente de protéger la feuille pour éviter aux utilisateurs de la modifier, une erreur 1004 apparaît et surligne en jaune cette partie du code :

.Validation.Add Type:=xlValidateList, Formula1:="=XXXX"


La seule solution que j'ai trouvé est de faire ainsi :

With Range("C12")
Sheets("Home").Unprotect
.Validation.Delete
.Validation.Add Type:=xlValidateList, Formula1:="=XXXX"
Sheets("Home").Protect
End With

En effet, lorsque je mets uniquement Protect & Unprotect en début et fin de code, j'ai une erreur.

JDois-je donc mettre le ".Unprotect" devant chaque ".Validation.Add" du code ?
 

Pierrot93

XLDnaute Barbatruc
Re : VBA - Erreur protection feuille

Re

en considérant la feuille active :

Code:
With ActiveSheet
    .Unprotect
    With .Range("M1").Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=maliste"
    End With
    .Protect
End With

A noter que pour éviter de protéger / déprotéger la feuille, il faudrait que la protection soit faite par vba en utilsant l'argument "userinterfaceonly".

@+
 

Pierrot93

XLDnaute Barbatruc
Re : VBA - Erreur protection feuille

Re

code ci dessous, à placer dans le module "thisworkbook", se déclenche à l'ouverture du classeur :

Code:
Private Sub Workbook_Open()
Sheets("nomdelafeuille").Protect Password:="toto", userinterfaceonly:=True
End Sub

@+
 

Pierrot93

XLDnaute Barbatruc
Re : VBA - Erreur protection feuille

Re

tu as placé la totalité du code dans le module "thisworkbook" ??? Et quel est le code complet exécuté... trop peu d'élément pour te répondre, mets un tout petit fichier en pièce jointe représentant le problème.

@+
 

Discussions similaires

Statistiques des forums

Discussions
311 735
Messages
2 082 024
Membres
101 873
dernier inscrit
excellllll