Erreur 1004 propriété Hidden

Bonjour à tous,

Je viens de créer ma 1ère macro grâce à l'aide de ce forum, merci

Cette macro s'exécute à l'ouverture de mon fichier, afin de masquer 3 colonnes et de protéger la feuille avec un mot de passe.

Elle s'exécute parfaitement, sauf si, avant de fermer mon fichier, je réalise manuellement les différentes actions (masquer les cellules +protéger la feuille avec un mot de passe).

Lors de l'ouverture suivante du fichier, j'ai alors ce message d'erreur : "Erreur 1004 ; impossible de définir la propriété Hidden de la classe Range".

Y a-t-il une solution pour que la macro s'exécute quand même si les colonnes sont déjà masquée et la feuille protégée, et ne plus avoir ce message d'erreur ?

Voici le code :

Private Sub Workbook_Open()

Columns("K:K").Select

Selection.EntireColumn.Hidden = True

Columns("M:N").Select

Selection.EntireColumn.Hidden = True

ActiveSheet.Protect Password:="petitspois", DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

Lorsque je ferme mon fichier sans masquer et protéger, le code s'exécute correctement lors de l'ouverture suivante.

Je vous remercie sincèrement par avance pour votre aide.

Magali

Bonjour,

Il faut que tu commences par la déprotéger !

Et si tu pouvais supprimer les Select et Selection, tu gagnerais 2 lignes (et le temps mis par VBA pour sélectionner inutilement).

Cordialement.

Merci pour la réponse très rapide

Je comprends bien la suppression des Select et Sélection (je suis passée par l'enregistrement de macro), et cela fonctionne effectivement très bien sans. Par contre, pourquoi et à quel moment je dois déprotéger ?

Les colonnes que j'ai masqué ne doivent être visibles que par certaines personnes (qui auront le mot de passe).

De plus, dans mon fichier, le format de certaines cellules est déterminé par une validation des données et je ne souhaite pas qu'il puisse être modifié, d'où la protection de la feuille.

J'ai crée cette macro pour, qu'en cas d'oubli de masquage des cellules et protection de la feuille, par mes collaborateurs, les autres utilisateurs du fichier l'ouvrent systématiquement avec la protection et les colonnes masquées.

Merci encore pour votre aide.

Voilà réécrit plus simplement :

Private Sub Workbook_Open()
    With ActiveSheet
        .Unprotect "petitspois"
        .Columns("K").Hidden = True
        .Columns("M:N").Hidden = True
        .Protect Password:="petitspois"
    End With
End Sub

Le reste est inutile.

Maintenant si le classeur n'a qu'une feuille, pas de problème !

Sinon, tu ne peux jamais être sûr qu'il s'ouvrira sur la feuille voulue...

Et dans ce cas il serait sage de préciser la feuille concernée.

Cordialement.

Merci beaucoup, ça marche !

Vous êtes un As

Je me permets donc une autre demande : la macro s'exécute parfaitement sur mon PC, car j'ai modifié la sécurité des macros, mais pas sur le PC de ma collègue ...

Comment faire pour que pour toutes les personnes qui ouvriront le fichier, la macro s'exécute ?

Merci encore.

Il faut que les macros soient autorisées pour qu'elle s'éxécute.

Si tes colonnes masquées ne doivent pas être visibles à l'ouverture, c'est plutôt à la fermeture qu'il faut les masquer, plus exactement à chaque enregistrement (car on peut fermer sans enregistrer).

Plutôt que la procédure Open, ce serait la procédure BeforeSave du classeur qui serait plus indiquée...

Cordialement.

Bonjour,

il faut donc bien que je m'assure que les macros soient autorisées pour chacun des utilisateurs ...

A quel endroit et quel code dois-je insérer pour qu'effectivement, la macro s'applique à la feuille 1 ?

Merci

Tu remplaces ActiveSheet par le nom de la feuille...

OK, super §

Merci.

Et effectivement, encore mieux avec BeforeSave, je n'ai donc à autoriser les macros que pour les personnes amenées à déprotéger la feuille et masquer la feuille.

encore merci

Rechercher des sujets similaires à "erreur 1004 propriete hidden"