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 :

Modifier par VBA une macro protégée par MDP [XL-2010]


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
    Décembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 129
    Par défaut Modifier par VBA une macro protégée par MDP
    Bonjour

    Je pense avoir noté l'essentiel de mon probléme dans le titre.

    Grace au forum et au tuto:, j'arrive a remplacer un module dans un fichier xlsm, grace a du code d'un autre fichier.

    Mon problème, c'est que les 60 fichiers (identiques) on tous leur code VBA protégé par MDP.

    j'essaye de transmettre le mot de passe via un parametre mais cela ne marche pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Set Wb = Workbooks.Open(Repertoire & "\" & Fichier)
     
            Application.VBE.MainWindow.Visible = True, password="toto"
    'on enleve le module
            With ThisWorkbook.VBProject.VBComponents
                .Remove .Item("Procédures")
            End With
    Merci de vos lumiéres

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    j'utilise des méthodes à base de sendkeys

    éviter d'être dans le VBE quand la macro tourne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mdp = "test"
    Set Application.VBE.ActiveVBProject = Workbooks("test.xlsm").VBProject
    SendKeys mdp & "~~"
    Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
    si quelqu'un a une méthode sans SendKeys ou Message, je suis preneur

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 129
    Par défaut
    Merci Joe,
    ton code me permet bien d'ouvrir mon fichier xlsm et d'enlever la protection du VBA, mais lorsque j'essaye de retirer un module via;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Wb.VBProject.VBComponents
                .Remove .Item("Procédures")
            End With
    j'ai toujours le message d'erreur
    Erreur d'exécution '50289';
    Impossible d"'effectuer cette opétaion tant que le projet est protégé.
    , pourtant dans VBE je constate bien que mon code VBA n'est plus protégé par MDP...
    une idée...

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    peux-tu montrer le code complet en ayant intégré ma piste ?

    je pense à un problème de temporisation (ça serait cool et simple) ou la nécessité de décocher "projet verrouillé" dans les propriétés (galère car faut remettre en place à la fermeture du fichier !)

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 129
    Par défaut
    Merci ça avance mais...
    Je viens de rajouter une pause (même 2)en effet je n'ai plus de message d'erreur mais par contre ma procédure "Procédures" n'est pas supprimée et je me retrouve avec une deuxième procédure "Procédures1"
    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
    Sub Export_Import_Module()
        Dim Fichier As String, Repertoire As String
        Dim Wb As Workbook
        Dim i As Byte
     
        Application.ScreenUpdating = False
     
        'Adaptez le répertoire des classeurs à modifier
        Repertoire = "O:\Formation"
        'Fichier = Dir(Repertoire & "\*.xlsm")
        Fichier = "Formation_Accueil.xlsm"
     
        'Boucle sur les classeurs du répertoire cible
        Do While Fichier <> ""
            Set Wb = Workbooks.Open(Repertoire & "\" & Fichier)
     
        'on enléve le mdp VBA
            Application.VBE.MainWindow.Visible = True
            mdp = "tyty"
            Set Application.VBE.ActiveVBProject = Wb.VBProject
            SendKeys mdp & "~~"
            Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
     
            'une petite pause..
            Application.Wait Now + TimeValue("0:00:03")
     
        'on enleve le module
            With Wb.VBProject.VBComponents
                .Remove .Item("Procédures")
            End With
     
            'une petite pause..
            Application.Wait Now + TimeValue("0:00:03")
    'on rajoute le module (et les usf...)
            With Wb.VBProject '
                .VBComponents.Import "C:\Users\Desktop\Procédures.bas"
            End With
     
            Wb.Close True
            Fichier = Dir
        Loop
     
        Application.ScreenUpdating = True
     
        MsgBox "Opération terminée."
    End Sub
    pourquoi ?

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Il faut peut être enregistrer le classeur juste après la suppression du module, peut être qu'Excel conserve en cache le module supprimé ?

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

Discussions similaires

  1. [XL-2007] Modifier une macro complémentaire par macro
    Par jpclabaux dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/07/2012, 11h30
  2. ouvrir automatiquement une macro protégé par mot de passe connu
    Par mapao dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/07/2010, 14h09
  3. [XL-2003] Installer et Désinstaller une macros complémentaire par VBA
    Par amerex dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/04/2010, 00h13
  4. Modifier une condition Where par VBA
    Par totojordi dans le forum VBA Access
    Réponses: 12
    Dernier message: 02/07/2008, 08h50
  5. Récupération du code d'une page protégée par htaccess
    Par Vedlen dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 11/07/2006, 14h37

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