Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/09/2006, 12h40   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 32
Points : 12
Points : 12
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 :
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
ftcalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 12h46   #2
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonjour

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

Code :
1
2
3
With ActiveDocument.VBProject.VBComponents
.Remove .Item("Module2")
End With

michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 12h47   #3
Futur Membre du Club
 
Inscription : août 2006
Messages : 28
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : août 2006
Messages : 28
Points : 15
Points : 15
Envoyer un message via MSN à Muse31
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
Muse31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 13h00   #4
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 32
Points : 12
Points : 12
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
ftcalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 13h14   #5
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
Citation:
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
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 13h30   #6
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 32
Points : 12
Points : 12
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
ftcalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 13h36   #7
Membre chevronné
 
Avatar de Catbull
 
Inscription : avril 2003
Messages : 542
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations forums :
Inscription : avril 2003
Messages : 542
Points : 767
Points : 767
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.
__________________
CatBull - Modérateur VB
Catbull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 14h19   #8
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 32
Points : 12
Points : 12
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 :
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 !!!)
ftcalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 14h44   #9
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonjour

pour supprimer la procedure evenementielle Document_Open, tu peux utiliser

Code :
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
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h25   #10
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 32
Points : 12
Points : 12
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 :
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 !
ftcalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h00.


 
 
 
 
Partenaires

Hébergement Web