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 Cellule et Worksheet_SelectionChange


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 630
    Par défaut Protection Cellule et Worksheet_SelectionChange
    Bonjour,

    Classeur en lecture seule sauf si Username habilité, donc possiblement protégé.
    Néanmoins, TOUS les utilisateurs doivent pouvoir ouvrir MenuPrint en cliquant sur A3 (cf. Worksheet_selectionChange)
    Soit je déverrouille A3 mais l'utilisateur peut effacer son libellé, soit elle reste verrouillée et donc inaccessible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_selectionChange(ByVal Target As Range)
     
        If Target.Address = "$A$3" Then MenuPrint.Show
    Besoin de vos lumières, si possible,
    Cordialement,
    jp

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Une solution serait de déporter l'action d'ouverture de menuprint, par exemple sur un bouton ou sur une autre cellule qui n'aurait que cette utilité-là.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 630
    Par défaut
    Bonjour Pierre,

    Certes, mais le recours à une cellule me plaisait bien...

    Si la dé-protection de cette seule cellule me permet de la rendre accessible à tout utilisateur, peut-être est-il possible d'ajouter un Undo si elle est effacée par inadvertance ?

    Cordialement,
    jp

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ok. Mais pourquoi justement celle-là? Tu veux qu'elle contienne un libellé "comme s'il s'agissait d'un bouton"?

    Dans le verrouillage des cellules, tu peux demander que l'on puisse sélectionner les cellules verrouillées, mais cela impacte toutes les cellules verrouillées.

    Tu pourrais la "verrouiller" par validation (après y avoir saisi le texte du menu):

    Nom : 2020-08-03_104225.png
Affichages : 136
Taille : 12,4 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 630
    Par défaut
    Bonjour,

    Ok. Mais pourquoi justement celle-là? Tu veux qu'elle contienne un libellé "comme s'il s'agissait d'un bouton"?
    Tout à fait ! J'utilise souvent les Cellules en en-tête de colonne pour générer des tris (par exemple) et pour lesquelles je peux modifier le motif ou la police suivant qu'elle représente la colonne triée ou pas.

    Validation de Données / Personnalisé / (Formule) FAUX

    Je ne comprends pas ce que ça fait

    Cdt
    jp

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    La validation par formule s'appuie sur le fait que la formule saisie dans la fenêtre de mise en place de la validation renvoie VRAI pour laisser passer la saisie. Dès lors, la formule =Faux renvoyant toujours Faux ( ), la saisie est bloquée. Tu peux modifier le message apparaissant lors de la saisie "interdite" avec le troisième onglet de la fenêtre de validation.


    Tu pourrais également bloquer cela par VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
      On Error GoTo Catch
     
      If Target.Address = "$A$1" Then
        Application.EnableEvents = False
        Application.Undo
      End If
     
    Catch:
      Application.EnableEvents = True
    End Sub

    Pour interdire la modification des entêtes d'un tableau structuré (voir mon tuto), tu pourrais aussi utiliser ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
      On Error GoTo Catch
     
      If Not Intersect(Target, Range("tableau1[#Headers]")) Is Nothing Then
        Application.EnableEvents = False
        Application.Undo
      End If
     
    Catch:
      Application.EnableEvents = True
    End Sub
    Le bémol à ces possibilités, en ce compris la validation, c'est qu'elles laissent l'utilisateur saisir la donnée pour la refuser ensuite.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 630
    Par défaut
    Bonjour,

    Merci pour le précieux lien vers les Tableaux structurés (j'y ai goûté dernièrement et j'en fais la promo dans mon entourage )

    Merci pour ces deux solutions ; je n'ai testé que la première mais elle répond parfaitement à ma question.

    Je réalise néanmoins qu'il est impossible à l'utilisateur de modifier le libellé de la cellule "$A$3". Dès lors qu'il clique dessus, Worksheet_selectionChange(ByVal Target As Range) va automatiquement ouvrir le MenuPrint !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Address = "$A$3" Then MenuPrint.Show
    Merci beaucoup pour ces réponses et ces pistes à étudier,

    Cordialement,
    jp

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par jpma75 Voir le message
    Bonjour,

    Merci pour le précieux lien vers les Tableaux structurés (j'y ai goûté dernièrement et j'en fais la promo dans mon entourage )

    Merci pour ces deux solutions ; je n'ai testé que la première mais elle répond parfaitement à ma question.

    Je réalise néanmoins qu'il est impossible à l'utilisateur de modifier le libellé de la cellule "$A$3". Dès lors qu'il clique dessus, Worksheet_selectionChange(ByVal Target As Range) va automatiquement ouvrir le MenuPrint !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Address = "$A$3" Then MenuPrint.Show
    Merci beaucoup pour ces réponses et ces pistes à étudier,

    Cordialement,
    jp
    Dans ce cas, il faudrait désactiver le doubleclic sur la cellule, car le double-clic inhibe le clic.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      If Target.Address = "$A$3" Then Cancel = True
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 630
    Par défaut
    Dans ce cas, il faudrait désactiver le doubleclic sur la cellule, car le double-clic inhibe le clic.
    Je n'ai pas bien compris. Le fait que Worksheet_selectionChange(ByVal Target As Range) empêche l'utilisateur de se positionner sur la cellule et accessoirement de la modifier me convient parfaitement !

    Worksheet_selectionChange(ByVal Target As Range) est une bonne alternative au verrouillage de la cellule même si tel n'était pas son but initialement !

    Cordialement,
    jp

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Si l'utilisateur se contente de cliquer en A3, le menu se lance et donc, tu n'as besoin de rien d'autre. Mais s'il réalise un double-clic, tu dois l'annuler sinon l'utilisateur entre en mode édition et peut modifier la formule. Si, après avoir cliqué, le menu se lance mais que A3 est toujours sélectionné, l'utilisateur pourrait soit double-cliquer, soit utiliser F2 pour entrer dans la cellule.

    L'utilisateur pourrait aussi sélectionner une plus grande plage dans laquelle A3 se trouve, puis voyager dans la plage avec ENTER ou TAB et arriver sur A3 pour l'éditer avec F2.

    A toi de voir si tu veux te prémunir de ces situations et si oui, comment.

    C'est pour ces raisons que je ne suis pas friand d'une solution qui utilise des cellules comme "bouton de commande". Ca demande une gymnastique si tu ne veux/peux pas accepter que toutes les cellules verrouillées se comportent de façon identique
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 630
    Par défaut
    Si l'utilisateur se contente de cliquer en A3, le menu se lance et donc, tu n'as besoin de rien d'autre.
    C'est ce qu'il fera le plus clair du temps. Quand je rajoute des lignes de code, c'est d'abord pour protéger l'utilisateur de manips inopportunes et non par crainte d'une action malveillante.

    Mais s'il réalise un double-clic, tu dois l'annuler sinon l'utilisateur entre en mode édition et peut modifier la formule (...)
    Dans mon classeur, le simple ou double-clic provoque le même effet : il ouvre le UF ! L'usage de F2 pour entrer dans la cellule n'est manifestement pas possible.

    L'utilisateur pourrait aussi sélectionner une plus grande plage dans laquelle A3 se trouve, puis voyager dans la plage avec ENTER ou TAB et arriver sur A3 pour l'éditer avec F2.
    Oups, j'ai testé et j'arrive effectivement (mais ça ne te surprendra pas ) à modifier le libellé de la cellule. Avant que "mes" utilisateurs en arrivent à jouer avec TAB pour en arriver là...

    C'est pour ces raisons que je ne suis pas friand d'une solution qui utilise des cellules comme "bouton de commande".
    Il faut avouer que pour faire des tris en cliquant sur les En-tête de colonnes, c'est quand même pratique, non ?!

    Merci beaucoup pour ces conseils de sécurité !!

    Cordialement,
    jp

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par jpma75 Voir le message
    [...]
    Il faut avouer que pour faire des tris en cliquant sur les En-tête de colonnes, c'est quand même pratique, non ?![...]
    C'est surtout, de mon estime, se donner bien du mal alors que les outils natifs d'Excel permettent cela, surtout si tu utilises les tableaux structurés, et que le clic droit dans une cellule du tableau offre les mêmes outils.

    Nom : 2020-08-03_173259.png
Affichages : 129
Taille : 24,6 Ko


    Nom : 2020-08-03_173447.png
Affichages : 126
Taille : 62,5 Ko



    N'est-il pas plus simple de former les utilisateurs aux possibilités d'Excel? (Parole de formateur )
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 630
    Par défaut
    N'est-il pas plus simple de former les utilisateurs aux possibilités d'Excel? (Parole de formateur)
    Mon rêve, au moins pour qu'ils s'approprient ce que je mets à leur disposition et qu'ils soient force de proposition, mais quid de leur envie ?!

    Dans mon cas et sans rentrer dans le détail, ils sont nombreux à utiliser ces applications (toujours conçues pour optimiser leurs ressources...) ; donc preneurs, voire demandeurs mais peu soucieux de rentrer dans le détail d'Excel.

    Certes, les tableaux structurés (qui te sont chers ) offrent cette possibilité mais je me place aussi dans le cas où les tableaux ne le sont pas... !

  14. #14
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 630
    Par défaut
    PS : il y a des noms comme le tien qui impressionnent (et c'est peu de le dire) les amateurs de mon espèce... Je n'ose même pas imaginer l'insigne honneur que d'être "élève" dans le cadre de tes formations ...

    L'accès à ce forum et le puits sans fond de connaissances des éminents contributeurs est une ressource incroyable pour les plus modestes d'entre nous.

    Merci à toi et merci à tous ceux qui nous viennent en aide pour nous sortir de nos moments de solitude face à des difficultés qui nous semblent momentanément insurmontables.

    Par respect pour ces précieuses contributions, je m'efforce toujours de comprendre avant d'appliquer les conseils.

    Cordialement,
    jp

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Les filtres ne sont pas réservés aux tableaux structurés. Tu peux les placer sur une plage rectangulaire "classique". Après, à toi de voir ce qui te/leur convient le mieux

    Bonne soirée


    Merci pour ton appréciation de l'aide que les contributeurs de ce forum essaient d'apporter jour après jour
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. [XL-2007] Protection Cellule et autorisation utilisation lien hypertext
    Par omarquant dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/02/2011, 22h26
  2. Paramétrage protection cellules
    Par jipem47 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/12/2008, 01h06
  3. protection cellule dans une plage
    Par michel13 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/04/2008, 01h29
  4. [Excel] - protection cellule
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/02/2007, 21h56
  5. Protection cellule et bouton de commande
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/12/2005, 16h08

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