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 partielle de feuilles [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 57
    Par défaut Protection partielle de feuilles
    Bonjour !

    Je souhaite protéger la structure de mon classeur et certaines zones de mes feuilles. Ca marche pas, j'ai une erreur "impossible de définir la propriete locked de la classe range" chaque fois que je lance la macro.

    Voici mon code, qqu'un a une idée? Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub ProtectionFeuilles()
     
    ActiveWorkbook.Protect structure:=True  'Protection de la structure du classeur
     
    '- cas de l'onglet paramétrage
    With Worksheets("parametrage")
        .Cells.Locked = False
        .Range(Cells(1, 1), Cells(1, 4)).Locked = True 'protection tableau 1
        .Range(Cells(4, 1), Cells(4, 3)).Locked = True 'protection tableau 2
        .Range(Cells(5, 1), Cells(6, 1)).Locked = True 'protection tableau 2
        .Range(Cells(9, 1), Cells(9, 8)).Locked = True 'protection tableau 3
        .Range(Cells(10, 1), Cells(11, 2)).Locked = True 'protection tableau 3
        .Range(Cells(12, 1), Cells(15, 1)).Locked = True 'protection tableau 3
        .Protect 
    End With
     
    '- cas de l'onglet seuils
    With Worksheets("Seuils de notation")
        .Cells.Locked = False
        .Range(Cells(2, 1), Cells(3, 50)).Locked = True 'protection des lignes 1 à 3
        .Range(Cells(1, 1), Cells(1, 65535)).Locked = True 'protection colonne 1
        .Protect 
    End With
     
     End Sub

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    Ton classeur ne serait-il pas protege avant d'appliquer tes 'Lock'

    Ajoute :
    Apres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Worksheets("parametrage")
    pour voir.

    ++
    Minick

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 57
    Par défaut
    J'ai essayé mais ca donne pareil. D'ailleurs, il me semblait que la protection du la structure du classeur n'avait pas d'influence sur le contenu des feuilles?

    Mon msg d'erreur apparaît toujours, sur ce type de ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        .Range(Cells(1, 1), Cells(1, 4)).Locked = True 'protection tableau 1

  4. #4
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Re,

    Le Unprotect est sur la feuille et non sur le classeur

    Bizarre, je viens de faire le test pour etre sur de moi.

    Sans le j'ai une erreur

    Avec le je n'ai plus d'erreur


    ++
    Minick

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 57
    Par défaut
    Petite question : où dois-je écrire ces lignes de code?
    Actuellement, ces lignes sont dans un module, et j'appelle cette procédure à l'ouverture de mon classeur. Lorsque la feuille active à l'ouverture du classeur est la feuille "paramétrage" (1ere feuille traitée par mon code), le code marche bien pour cette feuille. Le plantage se fait sur le locked de la 2eme feuille.
    Lorsque c'est la 2eme feuille qui est la feuille active à l'ouverture, le plantage se fait dès le code pour la 1ere feuille.

  6. #6
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Comme dit plus haut c'est la protection au niveau Feuille donc a faire avant chaque changement dans les feuille.

    En reprenant ton code, je ferai comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub ProtectionFeuilles()
     
    ActiveWorkbook.Protect structure:=True  'Protection de la structure du classeur
     
    '- cas de l'onglet paramétrage
    With Worksheets("parametrage")
        .Unprotect
        .Cells.Locked = False
        .Range(Cells(1, 1), Cells(1, 4)).Locked = True 'protection tableau 1
        .Range(Cells(4, 1), Cells(4, 3)).Locked = True 'protection tableau 2
        .Range(Cells(5, 1), Cells(6, 1)).Locked = True 'protection tableau 2
        .Range(Cells(9, 1), Cells(9, 8)).Locked = True 'protection tableau 3
        .Range(Cells(10, 1), Cells(11, 2)).Locked = True 'protection tableau 3
        .Range(Cells(12, 1), Cells(15, 1)).Locked = True 'protection tableau 3
        .Protect 
    End With
     
    '- cas de l'onglet seuils
    With Worksheets("Seuils de notation")
        .Unprotect
        .Cells.Locked = False
        .Range(Cells(2, 1), Cells(3, 50)).Locked = True 'protection des lignes 1 à 3
        .Range(Cells(1, 1), Cells(1, 65535)).Locked = True 'protection colonne 1
        .Protect 
    End With
     
     End Sub
    ++
    Minick

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

Discussions similaires

  1. [XL-2010] protection partielle d'une feuille
    Par quentin22breizh dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/11/2012, 12h49
  2. protection partielle d'une feuille
    Par flamel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/01/2012, 09h18
  3. Protection partielle de la feuille de calcul
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/01/2008, 04h02
  4. Protection d'une feuille excel
    Par Pollux dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/01/2006, 12h11
  5. [VBA Excel] BackgroundQuery et protection de la feuille
    Par Worldofdada dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/01/2006, 17h02

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