IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème de protection: Protect UserInterfaceOnly


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 34
    Par défaut Problème de protection: Protect UserInterfaceOnly
    Bonjour,

    J'ai un problème avec la protection des feuilles de mon classeur. Je vous explique:

    A l'ouverture de mon classeur, toutes les feuilles deviennent protégées avec l'option UserInterfaceOnly = True.
    Cela devrait me permettre normalement d'agir sur toutes les feuilles uniquement via les procédures de mon projet VBA.

    Malheureusement, des fois ça marche (j'arrive à supprimer des colonnes d'une feuille via un UserForm) et des fois non.


    Voici le code qui permet de protéger les feuilles du classeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        ModuleCommons.protectAllSheets
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub protectAllSheets()
       Dim I As Integer
     
        Application.ScreenUpdating = False
        For I = 1 To Worksheets.Count
            Worksheets(I).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowFormattingCells:=True, AllowSorting:=True, AllowFiltering:=True, UserInterfaceOnly:=True
        Next I
        Application.ScreenUpdating = True
    End Sub
    Voici la ligne qui cause une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formConfigCachees.Columns(consultantColumn).Delete Shift:=xlRight
    consultantColumn est le numéro d'une colonne bien rempli dans la feuille formConfigCachees.

    Et voici le message d'erreur:
    Error 1004: La méthode Delete de la classe Range a échoué

    J'ai bien vérifié dans les deux cas (celui où ça marche et celui où ça ne marche pas) que juste avant de faire le Delete, j'avais formConfigCachees.ProtectionMode = Vrai.


    quelqu'un aurait-il une réponse où une idée à mon problème?

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ce que tu dis m'étonne. Pour moi, si tu protèges tes feuilles, par soft ou non, tu ne peux pas les modifier, ce qui inclut la suppression d'une colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("Feuil3").Protect
    Columns(5).Delete ' marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("Feuil3").UnProtect
    Columns(5).Delete ' marche
    Version 97 - 2003
    Pour travailler dans une feuille protégée, je ne connais qu'une solution... la déprotéger avant. Après, ne reste plus qu'à la reprotéger
    A+

  3. #3
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AllowDeletingColumns:=True

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Oui, mais attention :
    La propriété AllowDeletingColumns peut être définie en utilisant les arguments de la méthode Protect.

    Les colonnes contenant les cellules à supprimer doivent être déverrouillées lorsque la feuille est protégée.
    cf.

  5. #5
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    barf ! oui hein !
    Forcément.
    Mais là, c'est une question de verrouillage de cellules !
    J'ai répondu à la question de la suppression des colonnes. Il ne faut pas oublier l'argument... à moins qu'il ne soit déjà programmé.

    Maitenant, quoi qu'on fasse, il est préférable que les cellules ne soient pas vérrouillées !
    C'est sûr !
    Sinon, il y a contradiction !

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Et donc, pour supprimer une colonne dans un feuille verrouillée, il existe deux méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("Feuil1").Unprotect
    Columns(5).Delete
    Worksheets("Feuil1").Protect
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Worksheets("Feuil1").Unprotect
    Columns(5).Locked = False
    Worksheets("Feuil1").Protect
    AllowDeletingColumns = True
    Columns(5).Delete
    C'est pareil mais c'est plus long !

    Désolé Maxence, je n'ai pas pu m'en empêcher

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Friend, protected, protected friend
    Par Thesum dans le forum VB.NET
    Réponses: 15
    Dernier message: 21/07/2017, 22h40
  2. Problème utilisation fonction protected
    Par Christophe dans le forum Débuter
    Réponses: 2
    Dernier message: 21/09/2013, 19h16
  3. probléme avec la Protection classeur
    Par franc83 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/02/2012, 11h55
  4. Problème avec la protection de classeurs
    Par Raymond_kiid dans le forum Conception
    Réponses: 2
    Dernier message: 20/11/2011, 14h59
  5. Problème Virus (Digital Protection?) - Rapport HijackThis
    Par MarDvirus dans le forum Sécurité
    Réponses: 1
    Dernier message: 29/04/2010, 00h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo