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 :

proteger une feuille possédant des macros [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
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut proteger une feuille possédant des macros
    Bonjour,

    (attention, je suis novice....)

    je dois MODIFIER un échéancier de maintenance pour plusieurs secteurs (un classeur commun avec des feuilles par secteurs) chaque secteur doit remplir deux colonnes (date de visite et observations) sur sa feuille. Chaque feuille contient des macros pour trier par "périodicité" ou par "ensemble" etc...., je souhaite protéger les cellules des feuilles pour éviter les erreurs ou les modifications (sauf les colonnes date de visite et observations) mais lorsque je protège la feuille et que je veux appliquer une des macros un message me dit "erreur d'execution 1004' , la methode sort de la classe range a échoué"

    et le débogage montre une erreur sur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub classer_par_ensemble()
    '
    ' classer_par_ensemble Macro
    ' Macro enregistrée le 20/07/2010 par CENTRALE
    '
    '
        Rows("7:602").Select
        'Range("A602").Activate
        Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("C2") _
            , Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        'ActiveWindow.SmallScroll Down:=-9
        Range("A1").Select
    End Sub
    LES MACROS DU FICHIER SONT: (CELUI QUI LES A ECRITES N'EST PLUS LA !)

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    Sub Actualiser()
    '
    ' Actualiser Macro
    ' Macro enregistrée le 08/10/2007 par FSM
    '
     
    '
        Range("D540").Select
        ActiveCell.FormulaR1C1 = "=TODAY()"
        Range("D540").Select
        ActiveWindow.LargeScroll Down:=-12
        Range("A1").Select
    End Sub
    Sub classer_par_ensemble()
    '
    ' classer_par_ensemble Macro
    ' Macro enregistrée le 20/07/2010 par CENTRALE
    '
    '
        Rows("7:602").Select
        'Range("A602").Activate
        Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("C2") _
            , Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        'ActiveWindow.SmallScroll Down:=-9
        Range("A1").Select
    End Sub
    Sub classer_par_bâtiment()
    '
    ' classer_par_bâtiment Macro
    ' Macro enregistrée le 20/07/2010 par CENTRALE
    '
    '
        Rows("7:602").Select
        'Range("A602").Activate
        Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range("B2") _
            , Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        'ActiveWindow.SmallScroll Down:=-9
        Range("A1").Select
    End Sub
     
     
    Sub classer_par_installation()
    '
    ' classer_par_installation Macro
    ' Macro enregistrée le 08/10/2007 par FSM
    '
    '
        'ActiveWindow.SmallScroll ToRight:=0
        'Rows("7:602").Select
        'Range("A602").Activate
        'ActiveWindow.SmallScroll Down:=-15
        Rows("7:602").Select
        'Range("602").Activate
        Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("D2") _
            , Order2:=xlAscending, Key3:=Range("E2"), Order3:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        'ActiveWindow.SmallScroll Down:=-33
        Range("A1").Select
    End Sub
    Sub classer_par_périodicité()
    '
    ' classer_par_périodicité Macro
    ' Macro enregistrée le 08/10/2007 par FSM
    '
     
    '
        Rows("7:602").Select
        Selection.Sort Key1:=Range("H2"), Order1:=xlAscending, Key2:=Range("B2") _
            , Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        Range("A1").Select
    End Sub
    Sub classer_par_dpv()
    '
    ' classer_par_dpv Macro
    ' Macro enregistrée le 08/10/2007 par FSM
    '
     
    '
        Rows("7:602").Select
        'Range("A602").Activate
        Selection.Sort Key1:=Range("J2"), Order1:=xlAscending, Key2:=Range("B2") _
            , Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        'ActiveWindow.SmallScroll Down:=-9
        Range("A1").Select
    End Sub
    MERCI DE VOTRE AIDE

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Par défaut
    Bonjour,

    Si la feuille est protégée on ne peut faire un tri. Il faut déprotéger la feuille en début de macro et la reprotéger en fin de macro.


    On peut aussi utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Worksheets("Feuil1").Protect userinterfaceonly:=True
    End Sub
    sans modifier les macros

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut
    Bonjour,

    j'ai essayé plusieurs méthodes mais je dois mal m'y prendre, ça ne marche pas...ou dois je écrire l'instruction? au début de chaque macro ?

    Merci encore

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Par défaut
    Essayez de placer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Worksheets("Feuil1").Protect userinterfaceonly:=True
    End Sub

    dans le module ThisWorbook, en adaptant le nom "Feuil1" à votre cas
    Enregistrer le classeur, fermer le, rouvrez le, lancez vos macros

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut
    Citation Envoyé par JPierreM Voir le message
    Essayez de placer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Worksheets("Feuil1").Protect userinterfaceonly:=True
    End Sub
    dans le module ThisWorbook, en adaptant le nom "Feuil1" à votre cas
    Enregistrer le classeur, fermer le, rouvrez le, lancez vos macros
    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
    28
    29
    30
    31
    32
    33
    34
    Private Sub Workbook_Open()
        Worksheets("MCO A").Protect userinterfaceonly:=True
    End Sub
    Sub Actualiser()
    '
    ' Actualiser Macro
    ' Macro enregistrée le 08/10/2007 par FSM
    '
     
    '
        Range("D540").Select
        ActiveCell.FormulaR1C1 = "=TODAY()"
        Range("D540").Select
        ActiveWindow.LargeScroll Down:=-12
        Range("A1").Select
    End Sub
    Sub classer_par_ensemble()
    '
    ' classer_par_ensemble Macro
    ' Macro enregistrée le 20/07/2010 par CENTRALE
    '
    '
        Rows("7:602").Select
        'Range("A602").Activate
        Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("C2") _
            , Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        'ActiveWindow.SmallScroll Down:=-9
        Range("A1").Select
    End Sub
    Sub classer_par_bâtiment()
    '
    ' classer_par_bâtiment Macro
    ' Macro enregistrée le 20/07/2010 par CENTRALE

    j'ai rentrer l'instruction au début ne trouvant pas "le module ThisWorbook", une des feuille s'appelle "MCO A" pour le reste j'ai suivi vos instructions mais j'ai toujours le même message d'erreur...

    merci quand même...

    voila le message
    Images attachées Images attachées  

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Par défaut
    Bonsoir,

    En voyant la miniature transmise on ne peut pas avoir accès au module ThisWorkbook
    Quand on se trouve dans l'éditeur VBA, il faut faire ctrl R pour afficher la fenêtre VBAProject dans laquelle en cliquant sur le signe + comme pour l'explorateur on accéde aux différents modules, notamment le module ThisWorbook dans lequel il faut mettre la procédure


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Worksheets("Feuil1").Protect userinterfaceonly:=True
    End Sub
    Cette procédure placée dans un autre module elle ne servira à rien

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut résolu
    Bonjour,

    Merci de votre patience...c'est génial, bravo...ça marche!!! c'est exactement ce que je cherchais à faire....

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/03/2015, 13h04
  2. Impression d'une feuille avec des dessins
    Par coco21 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/08/2007, 09h40
  3. [VBA-E] Protéger une feuille- contenant des macros
    Par nkhalidy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/03/2007, 11h32
  4. Dupliquer une feuille excel par macro
    Par eleve36 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/02/2007, 00h01
  5. Insérer une feuille Excel avec macro dans une page HTML
    Par Pakkaï dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/12/2006, 18h40

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