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 :

Comment supprimer un module par macro ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut Comment supprimer un module par macro ?
    Bonjour,

    j'ai parcouru de nombreux forums qui parlait de ma question, mais j'y comprend rien, les exemples sont par pour des débutants comme moi.
    Quelqu'un pourrait-il m'indiquer un code commenté ligne par ligne qui me permettrait de supprimer une procédure (ou module je crois) dans un classeur Excel en VBA.
    En fait, je lance une procédure à l'aide d'un bouton qui vide certaines cellules d'une feuille Excel mais je ne veux plus que l'utilisateur puisse réutiliser cette procédure une fois qu'il a enregistré son travail (mais je conserve le bouton pour faire le reste de la macro)
    J'ai des exemples de codes, mais je ne sais pas à quoi correspondent tous les termes, où est le nom du code ou de la procédure, trop compliqué pour moi.
    Voici ces exemples:

    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
    ' Le code ci-dessous permet de supprimer la procédure "asupprimer" contenu dans le module "thisworkbook (code du classeur)
     
    sub supprimer_module() 
    dim LineStart As long
    dim Linecount As long 
    with thisworkbook.VBProject.VBComponents("thisworkbook").CodeModule 
    LineStart = .ProcStartLine("asupprimer", vbext_pk_Proc)
    Linecount = .ProccountLines("asupprimer", vbext_pk_Proc) 
    .deleteLines LineStart, Linecount
    end with 
    end sub 
     
    ' Supprimer la procédure "deleteMe" du module "Module1"
     
    sub supprimer_procédure
    dim LineStart As long
    dim Linecount As long
    with thisworkbook.VBProject.VBComponents("Module1").CodeModule
    LineStart = .ProcStartLine("deleteMe", vbext_pk_Proc)
    Linecount = .ProccountLines("deleteMe", vbext_pk_Proc)
    .deleteLines LineStart, Linecount
    end with
    end sub
    Qui peut me commenter ceci, que dois-je remplacer par quoi?
    Y a t-il plus simple?
    Mon classeur s'appelle "Nomenclature" et j'ai 2 modules "Recap" et "Imprimer" et je veux supprimer "Recap".
    Merci d'avance de votre aide.

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 109
    Par défaut
    SAlut
    Je connais pas trop ca, (y'a deja eu des sujet similaire y'a quemque jours/semaines) mais en lisant juste cette ligne dans ton code fourni

    Supprimer la procédure "deleteMe" du module "Module1"
    Je dirais que dans le code qui suis cette ligne tu dois replacer deleteMe par le nom de la procedure que tu veux supprimer et Module1 par le nom du module qui contient la procedure que tu veux supprimer.

    Je me demande si tu confond pas un peu Module et Procedure dans ta question, donc je m'avancerais pas sur les nom a mettre a la place.
    En effet Recap c'est un module ou le nom de ton procedure (Sub Recap), au vu du nom suivant Imprimer je suppose que c'est procedure et non module, donc DeleteMe doit etre remplacé par Recap et Module1 par ... ben je sais pas je doute que tu donnes l'info, a moins que tu confondes classeur et Module.. mais je ne le pense pas.

    Ps: Par contre tu vas surement etre embeté un moment ou a un autre, car si tu supprimes cette fonction, il te faudra aussi supprimer les eventuels boutons, ou parties de code qui y faisaient reference, sinon ca va planter (je pense)

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut
    Merci à tous, mais j'arrive toujours pas à faire fonctionner ces codes "erreur 1004" et voir le débogae joint plus bas.
    Même celui ci-dessous que j'ai trouvé suite au post de kiki29:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'Supprimer la macro nommée "MaMacro" dans le "module3"
    Sub supprimerUneMacroPrecise()
    Dim Debut As Integer, Lignes As Integer
     
        With ThisWorkbook.VBProject.VBComponents("Module3").CodeModule
            Debut = .ProcStartLine("MaMacro", 0)
            Lignes = .ProcCountLines("MaMacro", 0)
            .DeleteLines Debut, Lignes
        End With
    End Sub
    Que veut dire "Vous devez ajouter la référence "Microsoft visual Basic For Application Extensenbility x.x" à votre projet" et que doit-on mettre à la place de "X.X"?
    Merci de vos réponses
    Images attachées Images attachées  

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir


    Que veut dire "Vous devez ajouter la référence "Microsoft visual Basic For Application Extensenbility x.x" à votre projet.
    Dans l'éditeur de macros,
    Menu Outils
    Références
    coche la ligne ""Microsoft visual Basic For Application Extensenbility 5.3".
    Clique sur le bouton OK pour valider.
    Ensuite, réessaye ta macro.


    bonne soirée
    michel

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut
    Merci de cette réponse; ceci a-t-il une influence pour les utilisateurs qui utiliseront le classeur sur un autre poste que celui où a été créé la macro?
    Doit-on faire la même manip sur leur poste?
    Par ailleurs, j'ai essayé la manip, enregistré le classeur, mais une fois réouvert, j'ai toujours le code erreur 1004: "L'accès par programme au projet Visual Basic n'est pas fiable".
    C'est déroutant.
    Bonne année!

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

Discussions similaires

  1. Erreur lors de l'exportation des module par macro
    Par ckrikri dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2009, 14h02
  2. Réponses: 4
    Dernier message: 30/11/2007, 08h55
  3. Comment supprimer un imprimante par vbscript ?
    Par thiem60 dans le forum VBScript
    Réponses: 3
    Dernier message: 27/06/2007, 09h18
  4. Réponses: 11
    Dernier message: 13/09/2006, 10h56
  5. comment supprimer un module dans vba
    Par moicats dans le forum Access
    Réponses: 3
    Dernier message: 13/04/2006, 10h16

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