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 :

Macros qui contourne la protection d'une feuille [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26
    Par défaut Macros qui contourne la protection d'une feuille
    Bonjour,

    J'ai une pettie question que je n'arrive pas ;a résoudre. J'ai une macro qui entre des données dans une BD. Par contre, je voudrais protéger cette BD contre les modifications manuelles puisque le fichier sera exessible à tous. Par contre, si je mets une protection, ma macro (du formulaire d'entré, de modification ou de supression) n'arrive plus elle non plus à ajouter des données dans cette BD.

    J'obtient une erreur 1004 (Insert failed) quand je protège ma feuille BD par un mot de passe.
    1. Comment faire pour que ma macro "contourne" cette sécurité?
    2. Comment m'assurer que personne ne puisse consulter le code de la macro pour récupérer le mot de passe? S'il faut mettre le mot de passe dans le code biensur


    Voici le code de ma macro:
    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
    Sub nouvelle_valeur()
    '
    ' nouvelle_valeur Macro
    '
     
    '
        Sheets("Mouvement").Select
        Rows("2:2").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Sheets("Ajouter").Select
        Range("A2:D2").Select
        Selection.Copy
        Sheets("Mouvement").Select
        Range("A2:D2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Range("E2").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "=RC[-1]-RC[-2]"
        Range("E3").Select
        Sheets("Ajouter").Select
        Range("C10").Select
        Selection.ClearContents
        Range("C7").Select
        Selection.ClearContents
        ActiveWorkbook.RefreshAll
    End Sub
    Quand je protège pas la feuille, c'est nikel, sinon c'est l'erreur 1004 qui me renvois à la ligne 9, 15, 17, etc.

    Merci d'avance les pros,
    Maxime

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Utilise pour la protection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Protect Password:="toto", userinterfaceonly:=True
    EDIT

    Trop de Select

    Ta macro pourra être ré ecrite comme ceci
    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 Nouvelle_Valeur()
     
    Application.ScreenUpdating = False
    With Sheets("Mouvement")
        .Protect Password:="toto", userinterfaceonly:=True
        .Rows(2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Sheets("Ajouter").Range("A2:D2").Copy
        With .Range("A2:D2")
            .PasteSpecial Paste:=xlPasteValues
            .PasteSpecial Paste:=xlPasteFormats
        End With
        Application.CutCopyMode = False
        .Range("E2").FormulaR1C1 = "=RC[-1]-RC[-2]"
    End With
    Sheets("Ajouter").Range("C7,C10").ClearContents
    ThisWorkbook.RefreshAll
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26
    Par défaut
    Bonjour,

    Merci d'avoir répondu aussi rapidement. J'avais déjà trouvé cette petite info, mais il me semble que si on ouvre le classeur, que l'on clique-droit sur le bouton d'insertion et que l'on consulte le code source de la macro, on voit ainsi le mot de passe en clair? non? Ainsi un petit connaisseur pourrait facilement débloquer la sécurité...

    Aurait-il une façon "d'encrypter" ce mot de passe?

    Merci,
    Maxime

    EDIT:
    Que signifie ce bout de code?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    userinterfaceonly:=True

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Signifie que le protection est seulement sur l'utilisateur (n'agit pas sur les macros)

    Tu peux protéger ton projet vba, mais tu trouveras toujours ce petit connaisseur qui cassera tes protections.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26
    Par défaut
    Re,

    Merci pour le code modifié, je n'en demandais pas tant (je suis encore assez débutant en codage VBA).
    Vous me parle de protéger mon projet VBA... si cela empêche quiquonque d'accéder au code de ma macro et ainsi trouver le mot de passe, ce serait superbe.

    Je vais chercher de mon côté, voir comment procéder.

    Merci encore,
    Maxime

    Edit:
    Donc même protéger mon projet VBA ne peut empêcher d'accéder au mot de passe. Réellement, il n'existe donc aucune façon de protéger réellement une feuille ?

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à toi, Bongour mercatog,

    Si je puis m'immiscer.

    Pour prtéger ton code VBE :

    1 - Clic droit sur la première racine indiquée dans l'explorateur de Projet, nommé "VBAProject".

    2 - Actionner l'onglet "Protection"

    Pardon, je viens de voir ton "Edit".

    Tu peux protéger / déprotéger ta feuille par macro, puis protéger ton code VBE comme je te l'ai indiqué. (Attention de retenir le mot de passe).

    Comme l'a signalé mercatog, c'est vrai que l'on peut déverrouiller un code VBA protégé. Mais, à mon avis, et ce même s'il existe des programmes pour ce faire, cela devient plus difficile alors.

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

Discussions similaires

  1. [XL-2000] Problème lancememnt macro a cause de protection sur une feuille
    Par jerem1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/12/2010, 19h36
  2. Macro qui récupère les contrôles d'une page
    Par nitrous007 dans le forum ASP.NET
    Réponses: 15
    Dernier message: 22/05/2007, 10h46
  3. [VBA]lancer une macro à chaque changement de cellule dans une feuille
    Par freddddd dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 13h58
  4. Réaliser une macro qui enregistre le résultat d'une requête
    Par boulette85 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 22/02/2007, 18h36
  5. Protection d'une feuille excel
    Par Pollux dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/01/2006, 12h11

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