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 :

Supprimer tous les modules d'un classeur et le contenu de thisworbook [Toutes versions]


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
    cabinet de gestion
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : cabinet de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Par défaut Supprimer tous les modules d'un classeur et le contenu de thisworbook
    Bonjour

    J'ai un programme que j'ai crée et je souhaite créer une macro qui supprime tous mes codes (macros) y compris le contenu de thisworkbook;ceci au cas ou celui qui n'a pas droit d'utiliser le copie sur son pc.
    j'ai cherché sur le net et dans ce forum;j'ai trouvé une qui fonctionne bien mais seulement quand mon projet vb est déjà déverouillé.
    Alors qu'il faut bien qu'il soit protégé!

    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
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    Sub SupprimerModule(NomModule As String)
         With ThisWorkbook.VBProject.VBComponents(NomModule).CodeModule
             .DeleteLines 1, .CountOfLines
         End With
         With ActiveWorkbook.VBProject
        'cette partie du code est de Laurent Longre
         For Each VBC In .VBComponents
         If VBC.Type = 100 Then
     
         With VBC.CodeModule
         .DeleteLines 1, .CountOfLines
         .CodePane.Window.Close
         End With
         Else: .VBComponents.Remove VBC
         End If
         Next VBC
         End With
     
    End Sub
     
    Sub essai()
    SupprimerModule "ThisWorkbook"
    End Sub
    Quand je l'exécute,un message d'erreur s'affiche:"Erreur d'exécution '50289':impossible d'effectuer cette opération tant que le projet est protégé"

    Alors je pense à une solution comme on le fait pour déprotéger les feuilles en incluant le mot de pass dans la macro...;mais je ne sais comment y arriver.

    quelqu'un peut il m'aider.merci d'avance.

  2. #2
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Salut kyasteph,

    Ce problème est mineur à côté de l'éventualité où dans les paramètres de sécurité d'Excel l'accès approuvé au modèle Objet VBA est décoché.
    As tu songé à cela?

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Une façon de faire pour les formats récents de fichier Excel est d'enregistrer le fichier au fomat xlsx (ce qui a pour conséquence de supprimer les macros).

    Attention de bien sauvegarder son classeur avec les macros.
    Et ça ne fonctionne que si l'utilisateur a accès en écriture au fichier Excel contenant la 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
     
    Private Sub Workbook_Open()
        Dim MonFichierAProteger As String
        MonFichierAProteger = ThisWorkbook.Path & "\" & ThisWorkbook.Name
        Application.DisplayAlerts = False
        Application.ScreenUpdating = False
        With ThisWorkbook
            .SaveAs Left(.Name, Len(.Name) - 5), xlOpenXMLWorkbook
        End With
        Kill MonFichierAProteger
        Workbooks.Open ThisWorkbook.Path & "\" & ThisWorkbook.Name
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True
    End Sub

  4. #4
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    bonsoir BlueMonkey,
    alternative interresante à laquelle je ne pensais pas.

  5. #5
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    tu peux essayer d'employer le célèbre code de Bill Manville
    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
    'Code de Bill Manville
    Sub TestProtect()
    Workbooks.Add.SaveAs "C:\Temp\Book1.xls"
    ProtectVBProject Workbooks("Book1.xls"), "Jack"
    Workbooks("Book1.xls").Close True
    End Sub
    Sub TestUnprotect()
    Workbooks.Open "C:\Temp\Book1.xls"
    UnprotectVBProject Workbooks("Book1.xls"), "Jack"
    End Sub
    Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
    Dim vbProj As Object
    Set vbProj = WB.VBProject
    'can't do it if already unlocked!
    If vbProj.Protection <> 1 Then Exit Sub
    Set Application.VBE.ActiveVBProject = vbProj
    ' now use lovely SendKeys to quote the project password
    SendKeys Password & "~~"
    Application.VBE.CommandBars(1).FindControl(Id:=2578,recursive:=True).Execute
    End Sub
    Sub ProtectVBProject(WB As Workbook, ByVal Password As String)
    Dim vbProj As Object
    Set vbProj = WB.VBProject
    'can't do it if already locked!
    If vbProj.Protection = 1 Then Exit Sub
    Set Application.VBE.ActiveVBProject = vbProj
    ' now use lovely SendKeys to set the project password
    SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & _
    Password & "~"
    Application.VBE.CommandBars(1).FindControl(Id:=2578,recursive:=True).Execute
    WB.Save
    End Sub
    cordialement,

    Didier

  6. #6
    Membre averti
    Homme Profil pro
    cabinet de gestion
    Inscrit en
    Juin 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : cabinet de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 27
    Par défaut
    Bonjour,
    merci encore pour toutes vos réponses,vos contributions m'ont permises de resoudre mon probleme.
    Mille fois merci à tous car vous n'hesitez pas à partager vos connaissances;competences experiences souvent acquises au prix de beaucoup d'efforts et de sacrifices et cela à titre gratuit.
    Dieu vous bénisse et longue vie au forum.

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

Discussions similaires

  1. [XL-2003] Recopier tous les Modules d'un classeur dans un autre
    Par Un Internaute dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/09/2014, 17h57
  2. [XL-2003] Supprimer tous les boutons d'un classeur
    Par Un Internaute dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/09/2014, 12h30
  3. [XL-2003] Supprimer tous les modules
    Par Vadorblanc dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/11/2010, 18h00
  4. Supprimer tous les modules (d'un fichier donné)
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/06/2007, 12h20
  5. [Tomcat] Comment supprimer tous les logs ?
    Par Soulsurfer dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 11/05/2004, 16h35

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