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 - Macro pour verrouiller d'autres macro avant diffusion


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 64
    Par défaut VBA - Macro pour verrouiller d'autres macro avant diffusion
    Bonjour,

    Je souhaite créer une macro (nommons-la macro0) qui, en la lançant, après avoir taper un code prédéfini, me permet de vérouiller/dévérouiller certaines macros (disons macro1, macro2, macro3) tout en en laissant d'autres actives (macro4 et macro5).

    Je suis complètement novice dans ce domaine et n'ai pas de pré-code à proposer, mais dans ma tête cela me semble assez simple...

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Et bien il te suffit que tes macros demandnte en argument le code prédéfini, si le code ne peut être passé, la macro ne sera pas lancée :
    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
     
    Sub Macro_0()
     
        Dim Code As String
     
        'ou autrement !
        Code = InputBox("Entrez le code !", "CODE")
     
        'si la boite pas remplie, fin
        If Code = "" Then Exit Sub
     
        'appel de la première macro en passant le code en argument
        Macro_1 Code
     
        'la suite...
     
    End Sub
     
    Sub Macro_1(Code As String)
     
        If Code <> "12345" Then
     
            MsgBox "Le code est érroné, fin de procédure..."
            Exit Sub
     
        End If
     
        'si le code est bon, on arrive ici et alors les lignes suivantes seront exécutées...
        'Les lignes de code ici...
     
    End Sub
    Hervé.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 64
    Par défaut
    Merci Theze, j'aime bien l'idée, assez simple et facile à intégrer au code déjà en place (qui est plutôt lourd..)

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 64
    Par défaut macro pour verrouiller d'autres macros, avec enregistrement de variable
    Alors, après recherche, j'utilise plutôt cette fonction:

    Ci-dessous la macro de vérouillage/dévérouillage:

    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
     
    Option explicit
    Dim code1, code as string
     
    Sub verrouillage()
     
    code1 = GetSetting("Excel", "Module_de_Code", "code_")
     
    If Len(code1) = 0 Then 'lancement de la macro si aucun code de verrouillage n'a été rentré
        code = InputBox("Entrer le code de vérouillage") 'La variable reçoit la valeur entrée dans l'InputBox pour vérouiller les macros
        SaveSetting "Excel", "Module_de_Code", "code_", code
        MsgBox "le code de vérouillage/dé-vérouillage est le : " & code 'rappel du code tapé
        Else
        code = InputBox("Entrer le code pour dé-verrouiller") 'La variable reçoit la valeur entrée dans l'InputBox pour dé-vérouiller les macros
        If code = code1 Then
            code = ""
            SaveSetting "Excel", "Module_de_Code", "code_", code
            Else
            MsgBox "Mauvais code"
        End If
     
    End If
     
    End Sub
    Et là le code pour les macors que je veux vérouiller:

    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
     
    Option explicit
    Dim code1 as string
     
    Sub macro1()
     
    code1 = GetSetting("Excel", "Module_de_Code", "code_")
     
    If Len(code1) = 0 Then 'lancement de la macro si aucun code de verrouillage n'a été rentré
     
    'code de la macro à éxécuter
     
        Else
        MsgBox "Macro vérouillée"
    End If
     
    End sub
    Voilà, ça me semble propre et efficace

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/07/2009, 15h19
  2. [Macro] Une macro pour générer une autre macro
    Par green_fr dans le forum Macro
    Réponses: 2
    Dernier message: 13/01/2009, 11h59
  3. Macro pour verrouiller dévérrouiller Word 2007
    Par clodius46 dans le forum VBA Word
    Réponses: 4
    Dernier message: 06/11/2007, 22h56
  4. Macro Qui Appelle Une Autre Macro
    Par aguirre49 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/06/2007, 14h58
  5. Réponses: 5
    Dernier message: 04/01/2007, 16h46

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