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 :

protection feuille + exécuter macros


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Par défaut protection feuille + exécuter macros
    bonjour dans une feuille j'ai des cellules que je souhaite verrouiller et d'autres modifiables. jusqu'à là tout va bien.
    maintenant pour renseigner les cellules modifiables j'utilise des macros permettant de mettre une couleur et du texte dans ces cellules (macros exécutées à l'aide de boutons dans une barre d'outils).
    le pb est que lorsque je protège la feuille et déverrouille les cellules qui doivent être modifiables, lorsque j'exécute l'action j'ai un message d'erreur :
    "Erreur d'exécution '1004'
    Imposssible de définir la propriété ColorIndex de la classe Interior"

    code de l'action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Selection.Interior
            .ColorIndex = couleur
            .Pattern = xlSolid
        End With
    comment faire pour pouvoir exécuter des macros en protégeant ma feuille ?

    merci de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut


    Tu as 2 solutions :

    1) Lors de la protection de ta feuille, dans la fenêtre "Protection de la feuille", tu autorises les utilisateurs à modifier le format des cellules

    2) Soit dans ton code VBA tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveSheet.Unprotect
    ' Ton code .....
    ActiveSheet.Protect
    Voilà

  3. #3
    Membre éprouvé Avatar de zebulon2212
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Par défaut
    il existe plusieur niveau de protection sur vba excel :
    la protection du classeur
    la protection d'une feuille
    la protection d'une cellule
    ces trois protection agissent de manière hiérarchique, chaque protection empechant les modification de la protection du dessous

    Dans ma boite pour proteger les fichiers qualité (j'utilise entre autre aussi une protection des macro par un code et je désactive certaines actions dans les menu) mais surtout, je me sert d'une fonction qui désactive et réactive ma protection du classeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ChangeProtection()
        Dim i As Integer
        If ActiveWorkbook.ProtectStructure = True Or ActiveWorkbook.ProtectWindows = True Then
                ActiveWorkbook.Unprotect
        Else
                ActiveWorkbook.Protect
        End If
    End Sub
    cette fonction est appelé au debut et à la fin de la quasi totalité de mes macros
    ensuite si je dois travailler sur des cellules protégé, je dois ajouter ces deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveWorkbook.Worksheets("NomFeuille").Unprotect
    ActiveWorkbook.Worksheets("NomFeuille").Protect
    au debut et à la fin de chaque modification
    et si jamais je dois protéger d'autres cellules ou en débloquer, j'utilise cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("AI2:AK4").Locked = False
    Range("A1:C1").Locked = True
    mais à chaque fois je dois bloquer et debloquer dans l'ordre.
    Attention : Le fait de bloquer une cellule empeche uniquement l'utilisateur de saisir manuellement des données et uniquement si au moins la feuille est protégé aussi

    si ca peut t'aider...

  4. #4
    Membre averti
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Par défaut
    d'accord je pense avoir compris vos réponses, mais dans mon cas certaines cellules de la feuille doivent tout le temps être verrouillées donc je ne peux pas faire :
    car alors toutes les cellules deviennent modifiables non ?

    dans la feuille je voudrais ne pouvoir modifier que les cellules non verrouillées.

  5. #5
    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
    Pour exécuter ton code, tu dois déprotéger ta feuille, donc, déprotège-la. Une fois ton code exécuté, tu la reprotèges. Les utilisateurs ne vont pas aller dans la feuille pendant l'exécution du code.
    zebulon2212 a très bien expliqué ça.
    Tu déverrouilles les seules cellules auxquelles doivent pouvoir accéder les utilisateurs. Une fois le document protégé, ils n'aurront accés qu'à ces cellules. Par contre, déprotégée par le code, la feuille sera accessible par le code.
    Qu'est-ce qui te gène ?
    A+

  6. #6
    Membre averti
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Par défaut
    ok j'ai compris j'enlève la protection, je teste si les cellules sont verrouillées, si non j'exécute la macro.
    sauf que par j'ai une macro qui permet de mettre un fond de couleur et du texte dans les cellules sélectionnées, je sélectionne les cellules puis exécute la macro.

    mais dans ces cellules sélectionnées je peux en avoir des verrouillées et des non verrouillées, comme test j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Selection.Locked = True then ...
    le pb est que ce test renvoie faux si dans la sélection il y a des cellules verrouillées et des cellules non verrouillées.

    comment puis-je faire ?

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

Discussions similaires

  1. [XL-2007] Exécution macro sélection feuille
    Par lecter85 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/02/2013, 09h14
  2. Protection de feuille et macro
    Par free air dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/04/2012, 11h04
  3. [E - 03] Probleme de protection feuille via MACRO
    Par crochepatte dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/03/2009, 13h51
  4. Protection feuille et macro ça coince
    Par lenul78570 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/02/2009, 19h06
  5. Exécution Macro VBA et actualisation des feuilles
    Par DjJEJ83 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/07/2007, 10h08

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