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 module classeur ouvert par VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2019
    Messages : 35
    Par défaut supprimer module classeur ouvert par VBA
    Bonjour tous,

    J'utilise le code suivant pour supprimer les module d'un classeur excel. Il marche très bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    1.	Sub SupprimeModule()
    2.	'Macro de suppression de l'intégralité des modules de code d'un classeur défini
    3.	'le dit classeur étant ouvert
    4.	Dim Wk As Workbook
    5.	Set Wk = Workbooks("Classeur1.xls" )
    6.	Dim i As Integer
    7.	For i = Wk.VBProject.VBComponents.Count To 1 Step -1
    8.	    If Wk.VBProject.VBComponents.Item(i).Type = 1 Then
    9.	        Wk.VBProject.VBComponents.Remove Wk.VBProject.VBComponents.Item(i)
    10.	    End If
    11.	Next i
    12.	End Sub

    Néanmoins je voudrais l'adapter pour qu'il ne soit plus nominatif "classeur1.xls" et donc qu'il supprime les modules du classeur ouvert (le nom change souvent et est variable).

    Je voudrais ajouter une ligne de code à la fin pour qu'il protége le projet VBA par un code et qu'il ne soit pas accessible par l'utilisateur.

    Merci par avance pour votre aide toujours si précieuse.

  2. #2
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour,

    Pour moi le fait de devoir supprimer des modules par code,suppose un souci de conception/gestion de fichier, d'où les questions :

    Pourquoi devez-vous supprimer du code de ces fichiers ?
    Pourquoi "protéger" un projet Vba si celui-ci est vide ?

    Une approche plus safe ,pourrais ou devrais être envisagée.

    Bav,

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Bonjour,

    Pour supprimer tous les modules d'un classeur, il suffit de l'enregistrer au format xlsx.

  4. #4
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2019
    Messages : 35
    Par défaut
    Bonjour,

    J'ai des taches successives exécutées par macro sur un fichier pour le personnaliser à un utilisateur.

    Lorsqu'elles sont exécutées, les modules ne servent plus à rien et peuvent créer des incompatibilité si l'utilisateur l'ouvre avec libreoffice par exemple. D'où leurs suppression.

    Je veux protéger le BVA par un code car il reste une macro workbook open dans le Thisworkbook qui reste en place et que je veux protéger.

  5. #5
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Citation Envoyé par Albatros182 Voir le message
    ... si l'utilisateur l'ouvre avec libreoffice par exemple. D'où leurs suppression.
    Je veux protéger le BVA par un code car il reste une macro workbook open dans le Thisworkbook
    Tu ne supprimes donc pas tous les modules (tu conserves le module Thisworkbook)

    Mais pourquoi protéger le projet ?

    L'utilisateur peut toujours désactiver les macros, on ne peut pas l'obliger à les exécuter.
    Et comme je t'ai dis il suffit d'enregistrer au format xlsx pour supprimer tous les modules (y compris Thisworkbook)

Discussions similaires

  1. [AC-2003] supprimer l'instance ouverte par le publipostage
    Par micniv dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/07/2010, 11h12
  2. Je n'arrive pas à supprimer une Table créée par VBA
    Par ac264 dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/02/2010, 10h55
  3. supprimer ne base Access par VBA
    Par sellig60 dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/12/2008, 22h33
  4. Unprotect VBProject d'un classeur fermé par VBA
    Par buzz73 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/11/2008, 16h44
  5. Récupérer l'URL d'une page ouverte par vba apres une recherche
    Par ubssecurities dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/08/2008, 09h30

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