Protection feuille par macro sous XL 2007
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Protection feuille par macro sous XL 2007



  1. #1
    invite36e5ce1c

    Question Protection feuille par macro sous XL 2007


    ------

    Bonjour,

    Je suis complètement novice en macro... et j'aurais vraiment besoin d'aide pour protéger un document au travail par macro car la protection simple n'est pas appropriée. Je m'explique.
    Il s'agit d'un tableau sous XL 2007, pour un chrono courrier qui va être alimenté par plusieurs personnes. Il faut absolument que les données rentrées ne puissent plus être modifiées et surtout, supprimées. Mais par contre, les cellules vides doivent rester non protégées pour permettre aux personnes de saisir les infos. Je ne peux pas protéger la feuille et la déprotéger à chaque fois qu'on enregistre un courrier à envoyer
    J'avais trouvé ce code sur internet, mais qui doit comporter des erreurs puisque ça ne fonctionne pas :
    Code:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'enlever la protection de la feuille
    ActiveSheet.Unprotect
    'si la cellule selectionnée est vide, alors déverrouiller, sinon, verrouiller
    If Selection.Value = ""Then Selection.Locked " False Else_
    Selection.Locked = True
    'Reprotéger la feuille
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    J'ai essayé après avoir protégé ma feuille par mot de passe, et j'ai le message "erreur de compilation"

    Est-ce que quelqu'un pourrait me dire comment faire... quel code mettre ?
    Merci d'avance pour vos lumières !

    -----
    Dernière modification par yoda1234 ; 08/09/2011 à 07h16.

  2. #2
    Dormeur74

    Re : Protection feuille par macro sous XL 2007

    Il y a pas mal de temps, j'ai essayé tout un tas de trucs qui ne fonctionnaient pas en tentant de bloquer (.Locked) les cellules ayant un contenu.
    Voici une solution : il y en a probablement d'autres, mais la mienne au moins fonctionne.

    Le principe est simple : on insère une nouvelle colonne à gauche du tableau que l'on cache pour que personne n'y ait accès. Si l'utilisateur clique sur une cellule du tableau ayant un contenu, on alerte et on donne le focus à une cellule de la colonne A (ici A1), ce que l'utilisateur ne peut voir. Il n'a ainsi accès qu'aux cellules vides du tableau.

    Voici le code :

    Code:
    Option Explicit
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Range("A:A").EntireColumn.Hidden = True
        If Target <> "" Then
            MsgBox "Cette cellule est protégée, vous ne pouvez pas la modifier", vbOKOnly + vbInformation, "Zone interdite"
            Range("A1").Select
        End If
    End Sub
    Naturellement, il faut ensuite interdire à quiconque de modifier ce code. Pour cela :
    - Alt + F11 (on va sous VBE)
    - clic droit sur VBA Project
    - Propriétés de VBA Project
    - Onglet "Protection"
    - Cocher "Verrouiller le projet pour l'affichage"
    - Entrer un mot de passe et sa confirmation.
    - Sauvegarder, refermer le fichier Excel et le réouvrir (la protection ne sera effective qu'à la réouverture).

  3. #3
    invite36e5ce1c

    Re : Protection feuille par macro sous XL 2007

    Bonjour Dormeur74,
    Je suis désolée, mais... je n'ai rien compris à cette histoire de colonne supplémentaire Je ne connais rien aux macros : est-ce que vous n'auriez pas la même explication mais exprimée pour les nuls ?

  4. #4
    Dormeur74

    Re : Protection feuille par macro sous XL 2007

    Je crois surtout qu'il va falloir apprendre Excel avant d'envisager un projet. Alors on y va.
    On ouvre la feuille dont on veut verrouiller les cellules ayant un contenu.

    - Clic sur A1
    - Insertion...Colonne (*) : tout le tableau est décalé vers la droite
    - sélectionner la colonne A
    - Format...Colonne...Masquer (*) : la colonne A a disparu ; maintenant, le tableau commence à B
    - Outils...Macro...Visual Basic Editor (*). Raccourci Alt+F11
    Dans la colonne de gauche : 2 zones. 1 zone "Projet" et en-dessous une zone "Propriétés"
    - double clic sur la ligne Feuil1 de la zone "Projet"
    Une fenêtre s'ouvre à droite avec une instruction par défaut : Option Explicit
    - copier dedans le code ci-dessous par copier-coller (ou Ctrl+C):
    Code:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target <> "" Then
            MsgBox "Cette cellule est protégée, vous ne pouvez pas la modifier", vbOKOnly + vbInformation, "Zone interdite"
            Range("A1").Select
        End If
    End Sub
    - clic droit sur la ligne VBAProject de la zone "Projet"
    - clic sur "Propriétés de VBAProject"
    - clic sur l'onglet "Protection"
    - Cocher la case "Verrouiller le projet pour l'affichage"
    - entrer un mot de passe et le confirmer, puis OK
    - Fichier...Enregistrer (*) ou Ctrl+S
    - Fichier...Fermer et retourner à Microsoft Excel (*) ou Alt+Q
    - Fichier...Quitter
    ______________________
    Relancer Excel, ouvrir le fichier. Maintenant, essayer d'entrer des valeurs dans une cellule vide et dans une cellule ayant un contenu.

    (*) cette fonction se trouve dans la barre des menus.

  5. A voir en vidéo sur Futura
  6. #5
    invite36e5ce1c

    Question Re : Protection feuille par macro sous XL 2007

    Bonsoir Dormeur74 et merci pour votre réponse

    Alors mon interrogation portait sur cette histoire de colonne supplémentaire et masquée... je ne comprends pas le but de la manip et le rapport avec la colonne rajoutée : pourquoi le fait qu'il y ait une colonne vide va permettre de dire que s'il n'y a rien dans une cellule elle ne sera pas verrouillée, et s'il y a quelque chose, elle sera protégée
    Mais bon, je n'ai peut-être pas besoin de comprendre le principe, si ça fonctionne c'est ce qui compte finalement (juste un petit sentiment d'être idiote, mais ça me passera )
    Alors j'ai suivi les manip sans problème jusqu'à l'enregistrement où ça m'a demandé de choisir un type de fichier qui accepte les macros, ce que j'ai fait. Puis j'ai rouvert le document, fait des tests et... rien Je peux tout modifier, les cellules avec infos ou les cellules vides... rien n'est protégé.
    Est-ce que ça peut venir du fait que j'ai envoyé le tableau du travail en XL2007, ouvert et fait ces essais maintenant chez moi sous XL2010 (pack de compatibilité utilisé automatiquement) ?? Le problème, c'est que je n'ai pas du tout le temps de faire ce genre d'essais au travail...
    Pourtant tout s'était déroulé comme indiqué, j'ai copié exactement le texte du code, mis un mot de passe... je ne sais pas ce que j'ai fait de travers, comprends pô.

  7. #6
    Dormeur74

    Re : Protection feuille par macro sous XL 2007

    Le but de la colonne cachée est de donner le focus à la cellule A1 (inaccessible pour l'utilisateur) chaque fois qu'il cliquera sur une cellule ayant un contenu. J'ai envoyé mon adresse E-Mail en MP pour recevoir ce qui a été fait si ce n'est pas confidentiel. Si ça l'est, c'est mon fichier Excel qui partira.

  8. #7
    invite36e5ce1c

    Re : Protection feuille par macro sous XL 2007

    Bonjour,

    Ca veut dire quoi "donner le focus" ? La cellule A1 est vide... je ne comprends pas en quoi cela va donner l'info d'interdire toute modif lorsque l'utilisateur cliquera dans une cellule ayant un contenu... même si cela renvoie à une cellule vide cachée
    OK je t'ai envoyé mon fichier : rien de confidentiel, ce n'est que ma page de test

  9. #8
    Dormeur74

    Re : Protection feuille par macro sous XL 2007

    J'ai bien reçu en MP la feuille à protéger. Malheureusement, il s'agit d'une feuille Open Office Calc et non pas d'un tableau Excel. OOo Basic et VBA étant incompatibles, ça ne pouvait pas fonctionner. Je regarde ce que je peux faire, mais mon aide ne pourra pas aller au-delà, car je travaille exclusivement en VB/VBA.

  10. #9
    invite36e5ce1c

    Question Re : Protection feuille par macro sous XL 2007

    Bonsoir,
    Je ne comprends pas pourquoi c'est en open office calc (je ne sais même pas ce que c'est... ?!?) étant donné que j'ai Office Famille étudiant 2010 avec Word, Excel et PowerPoint 2010... et que le fichier de base était envoyé de mon travail où nous avons Word, XL et PowerPoint 2007. Est-ce que c'est le pack de compatibilité qui transformerait automatiquement le fichier ?? Peut-être que si je reproduit ta manip directement sur le fichier au travail (XL 2007), ça fonctionnerait ??

  11. #10
    Dormeur74

    Re : Protection feuille par macro sous XL 2007

    Si tu travailles avec Microsoft Excel, ça ne peut que fonctionner. En revanche, si tu travailles avec Calc (c'est le tableur de la suite Open Office), ça ne peut pas fonctionner, les langages Basic étant incompatibles. Le fichier que tu m'as envoyé est un fichier Calc (extension XLSM).

  12. #11
    JPL
    Responsable des forums

    Re : Protection feuille par macro sous XL 2007

    Non : XLSM est un fichier Excel depuis Microsoft Office 2007
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  13. #12
    Dormeur74

    Re : Protection feuille par macro sous XL 2007

    Il me semble que le format .xlsm n'était pas au départ un format Microsoft pur jus. Peut-être en 2007, mais pas en 2003.
    Ce que j'ai reçu est impossible à charger sous Excel 2003 et parfaitement reconnu sous Open Office Calc.

    Probablement une confusion des genres entre le payant et le gratuit savamment entretenu par Microsoft.

    Il n'en demeure pas moins que les macros entre les deux mondes sont totalement incompatibles.

  14. #13
    JPL
    Responsable des forums

    Re : Protection feuille par macro sous XL 2007

    Non, c'est simplement que Microsoft a abandonné ses formats propriétaires pour des formats fondés sur XML comprimés ZIP, comme Open Office le faisait depuis longtemps. Mais MS garde encore toujours quelques particularités dans ces formats.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  15. #14
    Dormeur74

    Re : Protection feuille par macro sous XL 2007

    J'ignorais, ayant arrêté les frais avec Office 2003. Je n'ai pas eu le courage de passer sous Open Office, parce que je fais du VB depuis la version 2.0. Le OOo Basic m'a franchement fait peur et je comprends Isa74 qui a un peu de mal à identifier le problème rencontré. Mais je ne doute pas qu'un utilisateur qui s'est bien investi dans le OOo Basic saura apporter les bonnes réponses.

  16. #15
    invite2313209787891133
    Invité

    Re : Protection feuille par macro sous XL 2007

    Citation Envoyé par Dormeur74 Voir le message
    Il me semble que le format .xlsm n'était pas au départ un format Microsoft pur jus. Peut-être en 2007, mais pas en 2003.
    Ce que j'ai reçu est impossible à charger sous Excel 2003 et parfaitement reconnu sous Open Office Calc.

    Probablement une confusion des genres entre le payant et le gratuit savamment entretenu par Microsoft.

    Il n'en demeure pas moins que les macros entre les deux mondes sont totalement incompatibles.
    Tu peux installer une mise à jour pour lire ce format, puis éventuellement sauvegarder en format Excel 2003. Les macros crées sur 2003 marchent sur 2007 ou 2010 (du moins celles que j'ai testées jusqu'à maintenant).

Discussions similaires

  1. macro sous excel
    Par invite1937b197 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 12/02/2011, 08h52
  2. Aide pour faire une macro sur Powerpoint 2007
    Par roro123 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 14/12/2010, 10h42
  3. Boutons Macro et VBA grisé Excel 2007
    Par ZeWeLL dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 09/08/2010, 16h39
  4. Une macro me bogue une feuille Excel.
    Par ERIC86 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 02/10/2009, 05h37
  5. macro variables sous R
    Par invitecbe2f712 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 16/04/2007, 08h54
Découvrez nos comparatifs produits sur l'informatique et les technologies.