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-protection classeur et feuille sous Excel 2003 et 97


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut VBA-protection classeur et feuille sous Excel 2003 et 97
    Bonjour,

    J'ai développé un programme sous excel qui doit être protégé sur excel (toutes versions au moins jusqu'à 2003).

    J'ai trouvé le code pour protéger (et enlever la protection) sur 97:
    -pour le classeur:

    Protection : (le mot de passe setrouve dans la cellule ab1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
       MotPass = Range("AB1").FormulaR1C1       
        ActiveWorkbook.Protect Password:=(MotPass), Structure:=True, Windows:=False
    Enlever la protection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    With ActiveWorkbook                       
        .Protect vbNullString, True, True     
        .Unprotect vbNullString               
    End With
    -pour la feuille
    Protection : (n81=mot de passe)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
        MotPass = Range("N81").FormulaR1C1       
        ActiveSheet.Protect Password:=(MotPass), Contents:=True, _
        DrawingObjects:=True, Scenarios:=True
    Enlever la protection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    With ActiveSheet                                   
        .Protect vbNullString, True, True, True, True   
        .Range("A1").Copy .Range("A1")
        .Unprotect vbNullString
    End With

    Connaissez vous un moyen pour protéger (et "déprotéger") le classeur et les feuilles en même temps sous excel 97 et 2003? Est ce que c'est possible?

    Merci

  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 546
    Points
    15 546
    Par défaut
    Citation Envoyé par derf3183
    Connaissez vous un moyen pour protéger (et "déprotéger") le classeur et les feuilles en même temps sous excel 97 et 2003? Est ce que c'est possible?
    Avec office 97, la sntaxe pour un classeur et une feuille est différente
    Avec Office 2003, j'en sais rien
    Mais tu peux marier les deux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MotPass = Range("N81").FormulaR1C1       
    With ActiveWorkbook
           .Protect Password:=(MotPass), Structure:=True, Windows:=False
           With worksheets("Feuil1")
                .Protect Password:=(MotPass), Contents:=True, _
                 DrawingObjects:=True, Scenarios:=True
           end with
    end with
    Tu testes, je ne l'ai pas fait

    Edir
    Testé, ok !

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    En fait j'ai déjà testé ces codes sur excel 97 et ça marche mais ça ne marche pas sur excel 2003.

    Mon problème est de savoir s'il existe un moyen de protéger feuille et classeur sur excel 2003 (et si possible sur excel 97 aussi).

    merci

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    on peu savoir ce qui marche pas..? c'est pas tout quand même ..?

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    le problème c'est que ça a arrêter de suite sur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    With ActiveWorkbook                       
        .Protect vbNullString, True, True     
        .Unprotect vbNullString               
    End With
    Je pense effectivement que par exemple la protection a la fin peut marcher je vais tester
    Mais le problème se situe pour la "déprotection" car il y a plus de case à sélectionner dans la protection de 2003.
    la difficulté est de pouvoir le faire sur les deux versions

    Merci

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par derf3183
    le problème c'est que ça a arrêter de suite sur:
    ...
    et il y as pas de message d'erreur ?..ou autre..?

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    T'as raison excuse moi je m'explique:

    En fait quand je lance ma macro un message d'erreur s'affiche: 'débogage' Erreur 1004 :
    Mot de passe non valide. Vérifiez que la touche VERR.MAJ n'est pas activée et que respectez la bonne casse.

    De plus j'ai fait le test mon code pour protéger le classeur et les feuilles marche il doit juste y avoir un problème pour déprotéger les feuilles avec le code que j'ai posté plus haut.

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ben j'ai essayé ton code tel quel ... il fonctionne:
    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
     
    Sub Protection()
     MotPass = "bbil"
     ActiveWorkbook.Protect Password:=(MotPass), Structure:=True, Windows:=False
     ActiveSheet.Protect Password:=(MotPass), Contents:=True, _
        DrawingObjects:=True, Scenarios:=True
     End Sub
    Sub Enleveprotection()
    With ActiveWorkbook
        .Protect vbNullString, True, True
        .Unprotect vbNullString
    End With
    With ActiveSheet
        .Protect vbNullString, True, True, True, True
        .Unprotect vbNullString
    End With
    End Sub
    par contre j'ai appris un truc pour déprotégé je croyais qu'on été obligé de remettre le mot de passe et jusqu'as maintenant j'utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Unprotect "bbil"
    mais bon si on on as accés au code on as pas besoin du mot de passe..

  9. #9
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Oki

    Le problème que j'ai c'est que je dois pouvoir passer de la version 97 à la 2003 et là je pense que ca doit poser un problème.

    Je travaille sur 97 et c'est lorsque je l'ai transféré sur un autre ordi (avec 2003) que je m'en suis rendu compte.

    Penses tu qu'il est possible de faire cela c'est à dire alterner avec le même fichier et les mêmes protections d'une version à l'autre??

    Merci

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    mais le code il marche ou pas sous 2003... (j'en suis à 2000) ..

  11. #11
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    salut,

    j'ai fait le test est le code ne marche pas sur 2003...

    je crains qu'il n'y ait pas de solution à mon problème,la syntaxe est tout simplement différente entre les deux versions et il n'est donc pas possible de partager le fichier entre deux versions 97 et 2003

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    sur la version 2003 c'est quoi qui marche pas...? (je m'arrête à 2002 )...

    as tu essayé de faire un enregistrement de macro sur la version 2003 et voir le code généré... qu'on puisse comparer..?

  13. #13
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Si telle est vraiment la "chose", on commencera peut-être mieux à comprendre mes messages (sous VB) mettant en garde en ce qui concerne certaines tendances à piloter des applications VBA depuis VB...
    On se mettrait ainsi complètement à la merci d'une modification, par le client, d'une version VBA... et l'exe VB (avec des instructions en dur pour être appliquées à VBA) ne fonctionnerait plus !....

  14. #14
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    oui à partir de la version 2003.. cela change .. (mais bon j'ai pas tous saisi

    http://support.microsoft.com/?scid=k...d=2512&sid=276

  15. #15
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Bon je vais (essayer) d'être clair ce qui je l'avoue ne l'a pas été jusqu'à maintenant...

    J'ai développé un programme sous Excel 97 dont les feuilles et classeur sont protégés.

    Dans toutes (ou presque) mes macros j'utilise les codes ci dessus afin dans un premier temps de déprotéger feuille et classeur pour faire des opérations su lr classeur (ajouter un onglet par exemple) et dans un secont temps tout re protéger.

    Le problème est que j'ai appris que cette application devra être utilisé sur excel 97 (nickel tout marche bien) ... et sur excel 2003

    En fait elle sera sur un réseau avec des utilisateurs en excel 97 et d'autres en 2003

    Le problème est que les codes pour protéger marche sur les deux versions mais ceux pour enlever la protection ne marche pas sur 2003.

    So my question is :
    Pensez vous qu'il est possible de trouver un code qui marche sur les deux versions???
    Sachant que je suis très sceptique sur le fait de pouvoir trouver une solution!!!!

    Mais bon on sait jamais

    Voilou... j'espère que c'était clair et que qq'ul pourra m'aider

    Merci

  16. #16
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    c'est pour cela que n'ayant pas excel 2003 ( et travaillant en aveugle comme dirai jmf ) .. je t'ai demandé la : #12 .. d'enregistrer une macro de "déprotection" de ton classeur et feuille sous 2003 histoire de voir ce que cela donné...

    ensuite si l'on trouve pas un code commun je suppose que de toute façon on pourra créer une fonction qui teste la version d'excel pour sélectionner le code à effectuer

  17. #17
    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 546
    Points
    15 546
    Par défaut
    Pensez vous qu'il est possible de trouver un code qui marche sur les deux versions???
    L'essentiel est d'abord que tu trouves un code qui fonctionne sous VBA 2003. Ensuite, une simple gestion d'erreur sur la syntaxe 97 t'envoyant sur la ligne de commande 2003, ou mieux, comme le suggère bbil, un test sur la version, et c'est réglé.
    Comme je n'ai pas VBA 2003 au boulot, je laisse à ceux qui l'ont le soin de t'aider. Si rien, je regarderai ce soir

  18. #18
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Je suis tout à fait d'accord avec toi ouskel'n'or (j'y avais aussi pensé)...

    Etant au boulot c'est à dire sous 97 je ne peux pas tester c'est pour cela aussi que je ne pouvais pas forcément envoyer de test à bbil. J'essaierai moi aussi de voir chez moi ce soir.

    Le seul truc que je peux vous dire c'est qu'avec les codes donnés plus haut la protection marche mais la déprotection ensuite ne marche plus.

    Voila... merci à tous pour votre aide

  19. #19
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Re salut à tous

    Ca y est j'ai trouvé ma solution et elle est posté un pe plus haut par bbil
    Il s'agit tout simplement d'utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    ActiveSheet.Protect "bbil"
     
    ActiveSheet.Unprotect "bbil"
    C'est aussi simple que ça
    En fait l'autre code ma permettait de débloquer n'importe quel mot de passe (quand ca marchait) mais moi j'en ai pas besoin

    De plus ce code marche très bien sur les deux versions donc j'imagine sur toutes les versions d'excel

    Merci encore
    A+

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/03/2014, 17h45
  2. [XL-2007] Supprimer d'un classeur une barre perso attachée sous Excel 2003
    Par Rilcy75 dans le forum Excel
    Réponses: 4
    Dernier message: 30/10/2010, 17h36
  3. [XL-2003] Problème de VBA sous excel 2003 pour excel 97.
    Par blacksun1 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/06/2010, 11h44
  4. Dates reconnues aléatoirement sous Excel 2003 en VBA
    Par Boby71C dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/12/2007, 17h25
  5. [VBA-E] Sélection feuilles sous excel
    Par Mystic eyes dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/02/2004, 13h27

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