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

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 7
    Points
    7
    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 régulier Avatar de zebulon2212
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Points : 88
    Points
    88
    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
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 7
    Points
    7
    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
    Points : 15 546
    Points
    15 546
    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
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 7
    Points
    7
    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 ?

  7. #7
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu as lu ce qu'on t'a dit ? On déverrouille et reverrouille LA FEUILLE !
    Donc, pas de test sur les cellules
    Une petite explication semble s'imposer : Une cellule verrouillée n'est verrouillée que si ta feuille est PROTÉGÉE.
    Tu peux donc travailler sur une cellule verrouillée si ta FEUILLE est déprotégée.
    C'est étudié pour
    A+ (enfin j'espère pas vraiment... )

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    on ne se comprends pas !!!

    Dans la feuille un tableau avec des activités à saisir, à l'aide de bouton d'action (avec macro)
    puis dans la même feuille des stats (à ne surtout pas modifier, cellules avec formule)

    le principe, l'utilisateur sélectionne des cellules, puis affecte une activité via bouton d'action.
    je ne veux surtout pas qu'il me sélectionne des cellules de stats !!!
    donc si j'enlève la protection de la feuille plus aucune cellule n'est verrouillée.

  9. #9
    Membre régulier Avatar de zebulon2212
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Points : 88
    Points
    88
    Par défaut
    ce qu'on te dit au depart tu verrouille les cellules dont tu ne veux pas que les utilisateurs modifient.
    Pour qu'il ne puissent pas les modifié malgres le fait qu'elle soient protégés, il faut vérouillé le classeur (tu peux faire le test)
    ensuite dans ta macro, tu enleve la protection de la feuille tu fait tes modif et tu remet la protection de ta feuille. A aucun moment tu ne doit modifier la protection des cellules ! (Sauf si c'est ton but)

    Et pour plus de protection tu peux verrouillé ton classeur entier pour empecher le verouillage/deverouillage des feuilles. Mais ca tu oublie pour l'instant

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    ça je l'ai très bien compris, merci

    sauf que je reviens à mon pb, l'utilisateur sélectionne des cellules, active la macro
    j'enlève la protection de la feuille, qu'est-ce-qui l'empèche d'avoir sélectionner des cellules que je souhaite verrouillées qui ne le sont plus puisque la feuille est déprotégée ?

  11. #11
    Membre régulier Avatar de zebulon2212
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Points : 88
    Points
    88
    Par défaut
    Bon résumons.
    Tu as dans une meme feuille des cellules Protégés contenant des stats
    et des cellules non protégés
    Tu veux laisser la possibilité a l'utilisateur de selectionné des cellules puis de lancer ta macro qui va affecter une couleur et des valeurs a tes cellules selectionnés
    Ce que tu ne veux pas c'est que l'utilisateur selectionne (par mégarde) des cellules protégés contenant des stats.

    Donc plusieurs solutions
    Soit
    Dans ta selection tu test chacune des cellules séparément pour voir si elle est vérouillé (genre une fonction qui renvoie true ou false en fonction de ta selection) et dans ce cas inutile de déprotéger ta feuille
    Soit
    Tu essaie d'appliquer ta couleur sans dévérouillé ta feuille si ca plante c'est qu'il a selectionné des cellules vérouillé.
    Pour pas avoir un pov message made in Microsoft, tu met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    on error goto NomLibele
    et en fin de code tu met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exit Sub
    NomLibele:
    MsgBox "Message pour leur dire qu'il ont fait une mauvaise selection",vbOKOnly,"Attention!"

  12. #12
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    As-tu lu ce que j'ai mis ?
    Une petite explication semble s'imposer : Une cellule verrouillée n'est verrouillée que si ta feuille est PROTÉGÉE.
    Tu peux donc travailler sur une cellule verrouillée si ta FEUILLE est déprotégée.
    Si tu ne comprends pas, essaie au moins.
    Tu laisses verrouillées les cellules auxquelles les utilisateurs ne doivent pas toucher (par défaut, toutes les cellules sont verrouillée). Tu déverrouilles celles qu'ils peuvent modifier.
    Tu as un bouton et derrière, une macro. En tête du code, tu déprotèges ta feuille, la macro s'exécute, et sur la dernière ligne de ta macro, tu reprotèges ta feuille.
    Pour l'utilisateur, la feuille sera protégée.
    Au moins fais l'essaie de ce qu'on s'évertue à te dire.
    Fais l'essaie de ce qu'on t'a dit
    Fais l'essaie tout court
    Fais l'essai
    Mais fais-le !

    Punaise ! Heureusement qu'on a le moral et qu'on est gentil

  13. #13
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Hello,

    si tu as peur que l'utilisateur est sélectionné des cellules verrouillées au moment où il lance la macro, et bien il te suffit de mettre un test au début de ta macro pour savoir qi ces cellules sont verrouillées... (Il faut par contre bien faire gaffe à déverouiller toutes les cellules qui sont modifiables mais ça je pense que tu l'as déjà fais).

    P.S: Pour ça il faut bien avoir compris la distinction qu'a énoncée ouskelnor entre "verrouillage" et "protection" qui sont complémentaires mais totalement différentes

    A plus

  14. #14
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    j'ai très bien compris le principe

    mon seul soucis c'est de savoir si dans la sélection des cellules faite par l'utilisateur il existe des cellules qui ne doivent surtout pas être modifiées suite à la déprotection de la feuille au début de la macro.

    quand je fais ça retourne false même si dans la sélection il y a des cellules qui sont verrouillées.



    désolé si je vous ai peut-être embêtés.

  15. #15
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    qu'elle est ta version d'excel... (j'ai pas tout relu..) moi selection.Locked me retoune Null si il y as "mixité" des cellules sélectionées...!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if Selection.locked or isNull( Selection.locked )Then MsgBox "Cellules verrouillées dans sélection"

  16. #16
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Ok, j'ai compris le pb. Ouf !
    Tu ne veux pas que l'utilisateur puisse sélectionner une cellule verrouillée.
    Dans la protection de ta feuille, tu as une option qui permet d'empêcher ça après la protection de ta feuille.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveSheet.EnableSelection = xlUnlockedCells
    Code obtenu en enregistrant la macro (VBA2003)
    Comme bbil, je serais intéressé à connaître ta version. Cette possibilité n'existe pas sur VBA 97
    A+

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Fab_nabou
    j'ai très bien compris le principe
    mon seul soucis c'est de savoir si dans la sélection des cellules faite par l'utilisateur il existe des cellules qui ne doivent surtout pas être modifiées suite à la déprotection de la feuille au début de la macro.

    quand je fais ça retourne false même si dans la sélection il y a des cellules qui sont verrouillées.
    Pour moi le seul moyen est de tester chaque cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Cel, VLock
    VLock = 0
    For Each Cel In Selection
      If Cel.locked = true then VLock = VLock + 1
    Next
    If VLock > 0 then Msgbox "Vous avez " & VLock & " Cellules de protégées"
    Voilà

  18. #18
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040

  19. #19
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    ça fait du bien de se comprendre !!! (j'assume)

    le code de bbil fonctionne très bien.

  20. #20
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Quoi ? Elle te plait pas ma formule ?


+ 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