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

VBA Word Discussion :

[VBA-WORD] Supprésion des modules et userform


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Points : 24
    Points
    24
    Par défaut [VBA-WORD] Suppression des modules et userform
    Bonjour,

    J'ai parcouru toutes les FAQs et j'ai trouvé un code intéressant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ActiveDocument.VBProject.VBComponents
       .remove.item("nomdemonmodule")
    end with
    J'ai essayé, mais ça provoque une erreur d'éxécution '6068'
    L'accès programmatique à visual Basic n'est pas approuvé.

    Pourtant je fait bien référence à Visual Basic For Applications
    j'ai même ajouter Microsoft Visual Basic for Applications Extensibility 5.3

    Rien n'y fait

    Merci d'avance

  2. #2
    Expert éminent sénior

    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
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour

    il manque un espace entre la fin de Remove et .Item

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ActiveDocument.VBProject.VBComponents
    .Remove .Item("Module2")
    End With

    michel

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 28
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    Peut on avoir plus de précisions.
    D'après ton post, tu notes "Suppression des modules et UserForm"
    Pourquoi faire un code alors que tu peux les supprimer en faisant un clic droit puis supprimer.
    Donne nous plus de renseignements de ce que tu veux faire exactement.

    Merci

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Même en rajoutant l'espace, j'ai toujours le même message d'erreur

    Le problème provient peut être du fait que ma macro est en train de s'exécuter ???

    Si je le fait à la mano ca marche bien !

    Mais je vais générer x fichiers donc j'aimerai bien le faire en automatique

  5. #5
    Expert éminent sénior

    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
    Points : 20 147
    Points
    20 147
    Par défaut
    Le problème provient peut être du fait que ma macro est en train de s'exécuter ???
    je vient de tester une auto suppression dans le module en cours et ça fonctionne bien (Word2002)


    il a quelque chose de specifique ce module?
    d'ou est lancée la macro?
    peux tu préciser le contexte?
    tu as vérifié le nom du module?


    michel

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Points : 24
    Points
    24
    Par défaut precision du contexte
    je suis en word2003

    Je lance ma macro à l'ouverte d'un fichier (Document_open)

    Puis je fait appel à un module codeAPrincipal

    Lequel appel mes procédures dans un deuxième module CodeBProcedure

    Le code Document_open est dans "ThisDocument"



    A chaque fois que j'arrive sur la ligne With ActiveDocument.VBP...
    j'ai l'erreur de programmatique


    J'ai fait aussi un essai en sortant la procédure de suppression du code principal et en l'exécutant tout seul ---> c'est idem

  7. #7
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Il me semble qu'avec word2003, il faut cocher une case pour pouvoir accéder aux objets dépendant de VBE.

    menu Outils > Macro > Sécurité > Onglet Editeurs approuvés > Cocher faire confiance au projet Visual Basic.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Cocher faire confiance au projet Visual Basic
    Bravo

    Le fait de cocher cette case : ne provoque plus d'erreur

    Par contre mes modules sont toujours là !!!!????

    voici le code complet de ma procédure

    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 SuppressionMacros()
    Dim debut As Integer, lignes As Integer
     
        ' Activation fenêtre fichier Word
        Windows(NomFichierWord).Activate
     
        With ActiveDocument.VBProject.VBComponents
            .Remove .Item("OptionsGCS")
            .Remove .Item("CodeAPrincipal")
            .Remove .Item("CodeBProcedure")
        End With
     
    '    With ThisDocument.VBProject.VBComponents
    '        debut = .procStartLine("Document_open", 0)
    '        lignes = .procCountLines("Document_open", 0)
    '        .deleteLines debut, lignes
    '    End With
     
    End Sub
    La seconde partie du code devrait supprimer la procédure Document_open
    Mais ça ne marche pas non plus

    Si ça continu, le solution à la main est pas mal (j'aimerai bien trouver tout de même !!!)

  9. #9
    Expert éminent sénior

    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
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour

    pour supprimer la procedure evenementielle Document_Open, tu peux utiliser

    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
    Sub test()
        'Nécéssite d'activer la référence
        '"Visual basic For Application Extensibility 5.3"
        '
        Dim Wb As Document
     
        SupprimerMacroPrecise ThisDocument, "ThisDocument", "Document_Open"
     
    End Sub
     
     
    Sub SupprimerMacroPrecise(Wb As Document, Mdl As String, NomMacro As String)
        Dim Debut As Integer, Lignes As Integer
     
        With Wb.VBProject.VBComponents(Mdl).CodeModule
            Debut = .procStartLine(NomMacro, 0)
            Lignes = .procCountLines(NomMacro, 0)
            .deleteLines Debut, Lignes
        End With
    End Sub

    tu trouveras d'autres exemples dans ce lien. ça concerne Excel mais tu pourras facilement l'adapter dans Word

    http://silkyroad.developpez.com/VBA/...cEditor/#LIV-D


    michel

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Points : 24
    Points
    24
    Par défaut exemples dans ce lien
    Merci à tous et en particulier à SilkyRoad

    J'ai résolu le problème en partie

    Exécution du Code "SupprimerToutesLesMacros" dans mon programme principale

    Effet : ça supprime le code associé à this document

    Ensuite j'ouvre à nouveau mon fichier sauvegardé
    Et je relance la macro "SupprimerToutesLesMacros" depuis l'exécuteur de macro de Word

    Et la au miracle toutes les macros sont effacées

    Voici le code final

    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
    Code Progamme Principal
     
        FermetureFichierIndex
        SupprimeToutesLesMacros
        EnregistrementFichierWord
     
    Code Procédure
     
    Sub SupprimeToutesLesMacros()
        'Enregistre le classeur et supprime la totalité des procédures
        Dim VbComp As VBComponent
     
        For Each VbComp In ActiveDocument.VBProject.VBComponents
            Select Case VbComp.Type
                Case 1 To 3
                    ActiveDocument.VBProject.VBComponents.Remove VbComp
                Case Else
                    With VbComp.CodeModule
                    .DeleteLines 1, .CountOfLines
                    End With
     
            End Select
        Next VbComp
     
    End Sub
    Encore merci !

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

Discussions similaires

  1. [VBA Word] Recherche des liens hypertexte
    Par sirkim dans le forum VBA Word
    Réponses: 1
    Dernier message: 13/07/2007, 14h15
  2. [VBA-word] Table des matières par macro
    Par EvaristeGaloisBis dans le forum VBA Word
    Réponses: 2
    Dernier message: 15/05/2007, 16h02
  3. [vba Excel ] Organisation Des Modules
    Par CIBOOX dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/01/2007, 11h30
  4. [VBA WORD] Suppression de module
    Par mdriesbach dans le forum VBA Word
    Réponses: 3
    Dernier message: 21/11/2006, 17h47
  5. Réponses: 8
    Dernier message: 22/02/2006, 15h09

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