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 :

[VBA-E] Déprotection d'une feuille qui fonctionne mais reprotection impossible


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Points : 62
    Points
    62
    Par défaut [VBA-E] Déprotection d'une feuille qui fonctionne mais reprotection impossible
    Bonjour,

    J'ai une fonction qui déprotège un classeur excel et une autre qui doit reproteger ce classeur. Je déprotège un classeur pour pouvoir copier la feuille dans une autre.

    La déprotection fonctionne mais la protection ne semble pas marcher même si à l'exection je n'ai aucun message d'erreur.

    Voici le code :

    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
    'cette fonction déprotège la feuille Excel ciblée
    Sub SheetUnprotect(ByVal sFeuilleADeproteger As String, ByVal Password As String, wsExcel As Excel.Worksheet)
            Application.ScreenUpdating = False
            'Worksheets(sFeuilleADeproteger).Unprotect (Password)
            wsExcel.Unprotect (Password)
            'ActiveWorkbook.Close savechanges:=True
            MsgBox ("La feuille est déprotegée")
    End Sub
     
    Sub SheetProtect(ByVal sFeuilleADeproteger As String, ByVal Password As String, wsExcel As Excel.Worksheet)
            Application.ScreenUpdating = False
            'Worksheets(sFeuilleADeproteger).Unprotect (Password)
            wsExcel.Select
            wsExcel.Protect (Password)
            'ActiveWorkbook.Close savechanges:=True
            MsgBox ("La feuille est protegée")
    End Sub
    Je ne comprends vraiment pas pourquoi...

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu passes une feuille sFeuilleADeproteger en paramètre à ta Sub SheetProtect mais tu ne l'utilises pas.
    Tu utilises wsExcel qui doit être l'instance, soit l'appli soit le classeur mais tu ne la déclares pas, ni avec Dim ni avec set.
    Comme tu l'as bien pris quelque part, mets nous le code qui l'instancie, on tâchera de trouver quelque chose

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par ouskel'n'or
    Tu passes une feuille sFeuilleADeproteger en paramètre à ta Sub SheetProtect mais tu ne l'utilises pas.
    Tu utilises wsExcel qui doit être l'instance, soit l'appli soit le classeur mais tu ne la déclares pas, ni avec Dim ni avec set.
    Comme tu l'as bien pris quelque part, mets nous le code qui l'instancie, on tâchera de trouver quelque chose

    Voici le code qui appelle ces fonctions :

    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
    Sub Traitements_Mois()
    Dim p As String, f As String, S As String, a As String, r As Byte, Tete As String, Aorig As String
    Dim c As Byte, file As file, templateFile As file
    Dim appExcel    As Excel.Application
    Dim wbExcel     As Excel.Workbook
    Dim wsExcel     As Excel.Worksheet
     
    Application.ScreenUpdating = False
    For Each file In dossier.Files
        'Ouverture de l'application
        Set appExcel = CreateObject("Excel.Application")
        'Ouverture d'un fichier Excel
        Set wbExcel = appExcel.Workbooks.Open(file)
        'wsExcel correspond à la première feuille du fichier
        Set wsExcel = wbExcel.Worksheets("Activité mois")
        f = file.Name
        'Workbooks.Open file
        CopieActivite file, wsExcel
     
    Next
    End Sub
    'Cette fonction permet de déproteger les fichiers des collaborateurs et d'appeler le module de copie (module 1)
    Sub CopieActivite(file As file, wsExcel As Excel.Worksheet)
        Dim Dfile As String
        Dim nomFeuille
        'nomFeuille = Worksheets("Activité mois").Cells(1, 10).Value     'on récupère le nom du salarié de la feuille en cours
        nomFeuille = wsExcel.Cells(1, 10).Value
        Dfile = DestinationFile & ".xls"
        MsgBox ("je suis là")
        Call SheetUnprotect("Activité mois", "viveVBA", wsExcel)
        'Workbooks.Open PathTemplate 'on ouvre le template que si on est au dernier passage
     
        Call CopierFeuilleExcel(file, Dfile, "Activité mois", nomFeuille)
        Call SheetProtect("Activité mois", "ViveVBA", wsExcel)
     
        Exit Sub
     
    End Sub
    Ce qui est bizarre c'est que la déprotection fonctionne!

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Y'a un truc qui me gène. Tu utilises file comme variable. (Dim file as file, ça ne te fait pas bizarre ?) C'est un mot clé et ce n'est pas recommandé. Il y a des moments où Excel ne doit plus savoir où il en est.
    Ceci dit, je ne pense pas que ça vienne de là mais je n'ai pas encore trouvé

Discussions similaires

  1. [VBA-E]Créer une feuille qui contient du code
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 04/04/2006, 15h58
  2. une requete qui fonctionne aux 3/4...
    Par allowen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2005, 22h08
  3. [VBA-E]Type d'une feuille excel
    Par LitteulKevin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/05/2004, 14h43
  4. [VBA-E] [Excel] Effacer une feuille
    Par Tray dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/01/2003, 10h04
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

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