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 module et code VBA d'un classeur fermé


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Supprimer tous module et code VBA d'un classeur fermé
    Bonjour,

    je cherche comment je peux supprimer tous Codes, Modules, Macro de toutes les feuilles d'un classeur fermé.... à partir d'un autre classeur...

    Est es ce que quelqu'un à une idée?

    Cordialement

  2. #2
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 865
    Points
    3 865
    Par défaut
    Bonjour

    Un début avec http://silkyroad.developpez.com/VBA/VisualBasicEditor/

    Tu peux essayer 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
    18
    19
    20
    21
    22
    23
    Sub SupprimeToutCodeEtFormulaire()
     
    Dim VBComp As Object
    Dim VBComps As Object
     
     
    ChDir "C:\temp"
    Workbooks.Open Filename:="C:\temp\Classeur2.xls"
     
    Set VBComps = ActiveWorkbook.VBProject.VBComponents
     
    For Each VBComp In VBComps
    Select Case VBComp.Type
    Case 100
    With VBComp.CodeModule
    .DeleteLines 1, .CountOfLines
    End With
    Case Else
    VBComps.Remove VBComp
    End Select
    Next VBComp
     
    End Sub

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    n'y a-t-il vraiement pas moyen de faire ça sur un classeur fermé?

    Pour l'histoire, j'utilise un classeur avec plein de macro et de codes, que je sauvegarde sur le réseau du boulot...
    Le but de la manip c'est de supprimer tous Codes, Modules, Macro de toutes les feuilles du fichier qui est mis sur le réseau.
    Pourquoi?---> le fichier qui est sur le réseau, est un fichier qui ne sert qu'a la consultation pour les autres collégues et mon chef... ils n'ont pas a avoir les macros qui mettraient le bazard sur le réseau et leur PC...

  4. #4
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Bonjour,

    Pour faire, ce genre de manip dans un classeur fermé, je ne peux pas t'aider et je serais intéressé aussi de savoir si c'est possible.

    En attendant,si c'est la consultation des macros qui pose problème: tu peux verrouiller leur accès par mot de passe
    Sinon tu l'enregistres en tant que classeur sans macro sur ton réseau.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    et comment fait-on pour "enregistrer en tant que classeur sans macro", je n'ai pas trouvé cette option....

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 639
    Points : 34 361
    Points
    34 361
    Par défaut
    salut,
    la notion de "classeur sans macro" apparait dans la version 2007 d'Excel. Comme tu ne nous a pas donné la version sur laquelle tu travailles, pas évident de proposer LA solution

    En quoi la proposition de Questvba ne te convient-elle pas ?


    Reste une solution de recopie intégrale des feuilles dans un nouveau classeur vierge et de l'écrasement du fichier vierge de code en fin de processus.

    Plus tu nous en dis sur tes contraintes, moins on passera de temps à te proposer des choses qui ne sont pas "faisables" dans ton environnement, et plus la solution apportée sera la plus adéquate à ta problématique.

    Merci pour nous

  7. #7
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Sous 2010:

    - Enregistrer sous: Classeur Excel .xslx
    - Une boite de dialogue apparait :"....Voulez vous enregistrer en tant que classeur sans macro?": choisir oui

    Et voilou

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    @ jpcheck

    Ta remarque est fort juste, la version d'excel est de 2003.
    elle ne me convient pas parce que le fichier doit être ouvert... et dans mon fichier, il y a des macros à l'ouverture (sauvegarde, mise à jour, etc...) et ces macros de sauvegarde stoppe tout et mettent un peu le bazard car il me semble qu'excel ne peut pas exécuter 2 macro en même temps...

    Ta proposition de céer un nouveau fichier excel (et d'écraser l'ancien), de copier les contenus des feuilles ainsi que leurs noms est une excellente solution de remplacement... Je prend... et je pense que c'est plus simple...

    Comme, je suis nul en programmation et que je fais des plagias... bref que je copie tous ce que je peux en l'adaptant tant bien que mal à mes besoins...

    Es ce que tu pourrais me donner un exemple de création de fichier excel (et d'écraser l'ancien), de copier les contenus des feuilles ainsi que leurs noms...
    ça serait super sympa de ta part...

    Cordialement

  9. #9
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 639
    Points : 34 361
    Points
    34 361
    Par défaut
    Concernant les bouts de code qui se lanceraient à l'ouverture de ton fichier, tu as toujours la solution proposée dans la
    http://excel.developpez.com/faq/inde...ctiveEvenement

  10. #10
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 865
    Points
    3 865
    Par défaut
    Re-,

    Pourquoi ne mettrais-tu pas un macro qui se lancerait à l'ouverure du fichier consultation par tes collègues et qui détruirait tous les codes vba style:


    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
    Sub Auto_Open()
     
    Dim VBComp As Object
    Dim VBComps As Object
     
    Set VBComps = ActiveWorkbook.VBProject.VBComponents
     
    For Each VBComp In VBComps
    Select Case VBComp.Type
    Case 100
    With VBComp.CodeModule
    .DeleteLines 1, .CountOfLines
    End With
    Case Else
    VBComps.Remove VBComp
    End Select
    Next VBComp
     
    End Sub

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    Concernant les bouts de code qui se lanceraient à l'ouverture de ton fichier, tu as toujours la solution proposée dans la
    http://excel.developpez.com/faq/inde...ctiveEvenement
    le problème c'est qu'il m'insulte en me disant qu'il y a un problème de fiabilité...

    es ce que tu sais où je pourrais trouver un code qui pourrais me servir pour céer un nouveau fichier excel (et d'écraser l'ancien), de copier les contenus des feuilles ainsi que leurs noms...

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 639
    Points : 34 361
    Points
    34 361
    Par défaut
    Qui t'insulte ?

    La création d'un classeur vierge, tu as plein d'exemples en cherchant dans la
    http://excel.developpez.com/faq

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    Qui t'insulte ?

    La création d'un classeur vierge, tu as plein d'exemples en cherchant dans la
    http://excel.developpez.com/faq
    Bon, je vais arreter de vouloir ré-inventer le fils à couper le beurre...

    les insultes que j'avais c'etait pour la fiabilité des projets VBA (j'ai trouvé l'option à activer)....

    j'ai utilisé le code de "QuestVba" en l'adaptant avec un autre à mes besoins ce qui donne :

    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
     
    Sub OuvSuppDesact()
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim titre As String
     
    'Chemin complet du classeur fermé
    titre = ThisWorkbook.Path & "\" & "2.xls" 'Sans Macro " & Environ("username") & " " & ThisWorkbook.Name
     
    Application.EnableEvents = False
    Workbooks.Open (titre), Visible = False
        Application.Run "2.xls!CopieSansMacro.SuppAllVb"
    Application.EnableEvents = True
    Workbooks("2.xls").Close Savechanges:=True
    End Sub
    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
     
    Sub SuppAllVb()
    Dim VbComp As Object
    Dim VbComps As Object
     
    Set VbComps = ThisWorkbook.VBProject.vbcomponents
     
     
    For Each VbComp In VbComps
        Select Case VbComp.Type
            Case 100
                With VbComp.CodeModule
                    .DeleteLines 1, .CountOfLines
                End With
            Case Else
                VbComps.Remove VbComp
        End Select
    Next VbComp
    End Sub
    En fait le fichier "2.xls" est un clone de mon fichier de travail (nommé ainsi pour des raisons de feignantise et de rapidité d'écriture)
    la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "2.xls!CopieSansMacro.SuppAllVb
    fonctionne bien à un détails près....

    Le module "CopieSansMacro" dans le classeur "2.xls" ne s'auto-détruit pas car il est utilisé par le mon fichier de travail par la commande "Application.Run".

    Y a-t-il moyen de palier à ce problème?

    Pourquoi, j'ai utilisé "Application.Run" tout simplement, moyennant adaptation qui je pense être simple, me permettra de détruire de manière automatique à partir de mon fichier de travail tout les autres modules VB des autres fichiers Excel, sauvegardes etc... se situant dans le bon dossier sur le réseau....

  14. #14
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 639
    Points : 34 361
    Points
    34 361
    Par défaut
    Salut,

    il n'est pas possible de demander à un code de s'auto-détruire (même si l'agence niera avoir connaissance de tes actes ).

    Il te faut passer par un classeur qui supprimera le code d'un autre classeur

    Tu peux par exemple adapter ton code et passer à ta fonction un paramètre du style path du fichier "à nettoyer"

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    1)
    Tu m'as mis le doute.... je viens de faire le test, je ne sais pas comment, mais le code peut s'autodétruire.
    Pourquoi il ne s'autodétruit pas quand il est lancé par "Application.Run "2.xls!CopieSansMacro.SuppAllVb" ça je ne sais pas...

    2)
    es ce que tu pourrais me donner un exemple de (paramètre du style path du fichier "à nettoyer") ?

    Merci

  16. #16
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 639
    Points : 34 361
    Points
    34 361
    Par défaut
    Ben un bete procédure avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub MaProc(strPathFile As String)
    'code qui ouvre le fichier placé à strPathFile
    ' comme par exemple "C:\monfichierxls.xls"
    End Sub

Discussions similaires

  1. Réponses: 18
    Dernier message: 14/08/2014, 17h22
  2. Insérer un seul code vba dans plusieurs classeurs férmés
    Par jakoubi dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/02/2013, 23h35
  3. code VBA dans un classeur excel
    Par totogabi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/11/2012, 14h27
  4. [AC-2007] supprimer une page de code VBA
    Par stagiaire88 dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/07/2011, 21h26
  5. Suppression code VBA et fermeture classeur
    Par Kaaluu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/04/2009, 11h03

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