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 :

Protéger des cellules sans verrouiller la feuille [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut Protéger des cellules sans verrouiller la feuille
    Bonsoir à tous,

    Est-il possible de ne verrouiller que certaines cellules d'une feuille sans passer par la protection de la feuille.
    Par exemple, je souhaite verrouiller toutes les lignes A de chaque feuilles, 10 au total.
    Merci par avance pour vos réponses

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    non, puisque c'est la protection de la feuille qui rend actif le verrouillage des cellules.
    eric

  3. #3
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, Votre question est-elle bien posée?
    Par principe toutes les cellules d'une feuille sont protégées. mais cette protection ne devient active qu'avec la protection de la feuille.
    On peut imaginer que vous enleviez la protection de toutes les cellules d'une feuille sauf celle que vous souhaitiez protéger, puis une protection de la feuille et ainsi toutes les cellules de la feuille non protégées seront actives.
    Je ne sais si cela répond à votre question ou à vos besoins?
    Cordialement

  4. #4
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    Bonjour à tous,

    Merci pour vos réponses. Je connais cette façon de faire, mais le soucis c'est que lorsqu'une macro, ce qui est mon cas, concerne une feuille verrouiller alors ça bloque, message d'erreur...
    C'est cela que je souhaiterai éviter. Ce qui oblige à déverrouiller la feuille à activation de la macro et de la verrouiller de nouveau à la fin de la procédure.

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Verouille la feuille par code à l'aide de la méthode Protect avec le paramètre userinterfaceonly:=true

    Regarde l'aide

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il est possible d'écrire en VBA dans des cellules verrouillées à condition d'utiliser l'argument UserInterfaceOnly en lui donnant comme valeur True
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub T()
      Dim sht As Worksheet
      Set sht = ActiveSheet
      sht.Protect UserInterfaceOnly:=True
      Range("A1").Value = "Hello"
      Set sht = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    En passant par ce genre de code, est-ce jouable ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Not Intersect(Range("NOM DES COLONNES OU LIGNES A VERROUILLER"), Target) Is Nothing Then
        Target.Offset(0, 1).Select
        End If
    End Sub

  8. #8
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    l est possible d'écrire en VBA dans des cellules verrouillées à condition d'utiliser l'argument UserInterfaceOnly en lui donnant comme valeur True
    Bonjour Philippe et merci,

    Je n'ai que 4 ou 5 colonnes à verrouiller le reste doit rester accessible aux utilisateurs

  9. #9
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Deverouille les cellules que tu veux laisser accessibles
    Protège la feuille par code avec, comme dit, userinterfaceonly:=true

    J'ai le pressentiment que tu n'oses pas essayer

  10. #10
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    Non je n'ose pas c'est vrai.

    Ce que je propose m'a l'air plus simple, on empêche l'accès aux lignes et colonnes souhaitées. C'est surtout pour protéger les codes dans les cellules qui sont assez complexes. A moins que je puisse mettre ces formules dans des codes comme ça plus de soucis d'accessibilité ou pas, mais là est un autre sujet

    Voici le genre de formule que l'on peut trouver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SIERREUR(INDEX(Tableau1[NOM];EQUIV(Commandes!$D6;Tableau1[Num]);0);"")

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce que je propose m'a l'air plus simple, on empêche l'accès aux lignes et colonnes souhaitées
    Ce n'est pas plus simple, c'est tout simplement la façon de faire normale si l'on veut empêcher un utilisateur d'effacer par mégarde des formules.
    Si tu le savais, j'avoue ne pas comprendre le sens de ta question
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  12. #12
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    Je pensais tout simplement qu'avec un code je pourrais verrouiller certaine cellule sans que cela empêche le bon fonctionnement des macros.
    De toute façon ma méthode ne fonctionne pas comme je le souhaite, alors je vais essayer vos propositions, qui est de déprotéger et reprotéger.
    Désolé si je me suis mal exprimé

  13. #13
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Voilà tu n' as pas compris
    1. Tu dévrouilles toutes les cellules
    2. Tu verouilles les cellules à protéger
    3. Par code tu protège la feuille avec le paramètre userinterfaceonly:=true

    Voilà. Par la suite tu n'auras plus besoin de déprotéger/ protéger

  14. #14
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut
    Menu "Données" => "Validation de données".
    Dans "Autoriser" choisir "Personnalisé" et dans la zone formule écrire ";;" (sans guillemets).

    Ça sert à rien, mais c'est pour le fun !

  15. #15
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Menu "Données" => "Validation de données".
    Dans "Autoriser" choisir "Personnalisé" et dans la zone formule écrire ";;" (sans guillemets)
    Comme tu l'as justement écrit, cela ne sert à rien car cela ne protège pas d'une suppression pure et simple du contenu par simple pression sur la touche Delete(Suppr) ni d'un Copier/Coller
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  16. #16
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le code que j'ai publié est un exemple qui protège la feuille active et peut se mettre dans un module standard.
    Tu peux appeler cette procédure par un bouton, depuis une autre procédure, à l'aide d'un raccourci clavier, en sélectionnant le nom de la procédure dans la boîte de dialogue "Macro" (Alt+F8)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  17. #17
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    Ah ok, quel tebé je suis

  18. #18
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    Bonsoir à tous,

    Alors je suis passé par un bouton pour demander un mot de passe si l'on veut modifier les cellules verrouillées. Sauf que la protection ne se remets pas automatiquement donc j'ai mis en place une deuxième macro à l'activation de la feuille sauf que la protection est sans mot de passe. Ma question est donc simple comment ajouter un mot de passe à l'activation ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Cmb_Ecrit_Click()
    Dim REP As String
    REP = InputBox("MOT DE PASSE", "Accés au tableau")
    If REP = "MDP" Then
    ActiveSheet.Unprotect
    End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Worksheet_Activate()
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowFiltering:=True
    End Sub

  19. #19
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut


    Relis le paramètre userinterfaceonly de la méthode Protect

  20. #20
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    Citation Envoyé par mercatog Voir le message


    Relis le paramètre userinterfaceonly de la méthode Protect
    Bonjour mercatog,

    Oups! j'avais oublié ça.

    Mon problème est maintenant résolu. Merci à tous pour votre participation et votre aide
    Bon dimanche
    Amicalement

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Comment protéger des cellules liées?
    Par mobiclick dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2009, 23h26
  2. Réponses: 2
    Dernier message: 26/08/2008, 20h55
  3. Identification des cellules sans formule
    Par Tifendro dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/06/2008, 21h45
  4. [DataGrid]Ajouter des cellules sans DataSource ?
    Par Filippo dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/09/2007, 15h55
  5. Protéger des fichiers sans protéger la page
    Par pasqwal dans le forum ASP.NET
    Réponses: 1
    Dernier message: 01/09/2007, 21h44

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