Private Sub Document_Open()
UpdateChamps
UnlinkChamps
End Sub
Private Sub UnlinkChamps()
Dim afield As Field
For Each afield In ActiveDocument.Fields
afield.Unlink
Next afield
End Sub
Private Sub UpdateChamps()
Application.ScreenUpdating =3D False
Dim sec As Section
ActiveDocument.Fields.Update
End Sub
Elle fonctionne tr=E8s bien cette macro.
Je veux juste apr=E8s que cette macro soit execut=E9e, un script qui
puisse aller soit mettre tout le code en commentaire ou bien supprime
toutes les lignes de la macro... est-il possible, et comment faire si
c'est possible.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Geo
[...]
Je veux juste après que cette macro soit executée, un script qui puisse aller soit mettre tout le code en commentaire ou bien supprime toutes les lignes de la macro... est-il possible, et comment faire si c'est possible.
Oui c'est possible mais casse-gu... heu : casse-cou, il vaut mieux donc essayer de trouver une autre solution. La macro dont vous parlez est le Document_Open ? Elle ne s'exécute qu'un fois à chaque ouverture du document. Pouvez-vous préciser le problème rencontré ?
Sinon pour accéder aux lignes d'une macro, il faut utiliser la collection VBComponents.
-- A+
[...]
Je veux juste après que cette macro soit executée, un script qui
puisse aller soit mettre tout le code en commentaire ou bien supprime
toutes les lignes de la macro... est-il possible, et comment faire si
c'est possible.
Oui c'est possible mais casse-gu... heu : casse-cou, il vaut mieux donc
essayer de trouver une autre solution.
La macro dont vous parlez est le Document_Open ?
Elle ne s'exécute qu'un fois à chaque ouverture du document.
Pouvez-vous préciser le problème rencontré ?
Sinon pour accéder aux lignes d'une macro, il faut utiliser
la collection VBComponents.
Je veux juste après que cette macro soit executée, un script qui puisse aller soit mettre tout le code en commentaire ou bien supprime toutes les lignes de la macro... est-il possible, et comment faire si c'est possible.
Oui c'est possible mais casse-gu... heu : casse-cou, il vaut mieux donc essayer de trouver une autre solution. La macro dont vous parlez est le Document_Open ? Elle ne s'exécute qu'un fois à chaque ouverture du document. Pouvez-vous préciser le problème rencontré ?
Sinon pour accéder aux lignes d'une macro, il faut utiliser la collection VBComponents.
-- A+
ymer.hyseni
On 22 nov, 11:20, Geo wrote:
[...]
Je veux juste après que cette macro soit executée, un script qui puisse aller soit mettre tout le code en commentaire ou bien supprime toutes les lignes de la macro... est-il possible, et comment faire si c'est possible.
Oui c'est possible mais casse-gu... heu : casse-cou, il vaut mieux donc essayer de trouver une autre solution. La macro dont vous parlez est le Document_Open ? Elle ne s'exécute qu'un fois à chaque ouverture du document. Pouvez-vous préciser le problème rencontré ?
Sinon pour accéder aux lignes d'une macro, il faut utiliser la collection VBComponents.
-- A+
Bonjour,
je comprends bien votre remarque, mais j'ai absolument besoin d'utiliser une fonction qui supprime la macro après qu'elle soit exécutée... je sais qu'elle s'exécute en autoopen.
le but est d'éviter lorsque le document est imprimé en PDF, la macro ne soit pas déclanchée par la fonction du PDF.
merci à vous et à bientôt.
On 22 nov, 11:20, Geo <G...@sans.pub> wrote:
[...]
Je veux juste après que cette macro soit executée, un script qui
puisse aller soit mettre tout le code en commentaire ou bien supprime
toutes les lignes de la macro... est-il possible, et comment faire si
c'est possible.
Oui c'est possible mais casse-gu... heu : casse-cou, il vaut mieux donc
essayer de trouver une autre solution.
La macro dont vous parlez est le Document_Open ?
Elle ne s'exécute qu'un fois à chaque ouverture du document.
Pouvez-vous préciser le problème rencontré ?
Sinon pour accéder aux lignes d'une macro, il faut utiliser
la collection VBComponents.
--
A+
Bonjour,
je comprends bien votre remarque, mais j'ai absolument besoin
d'utiliser une fonction qui supprime la macro après qu'elle soit
exécutée... je sais qu'elle s'exécute en autoopen.
le but est d'éviter lorsque le document est imprimé en PDF, la macro
ne soit pas déclanchée par la fonction du PDF.
Je veux juste après que cette macro soit executée, un script qui puisse aller soit mettre tout le code en commentaire ou bien supprime toutes les lignes de la macro... est-il possible, et comment faire si c'est possible.
Oui c'est possible mais casse-gu... heu : casse-cou, il vaut mieux donc essayer de trouver une autre solution. La macro dont vous parlez est le Document_Open ? Elle ne s'exécute qu'un fois à chaque ouverture du document. Pouvez-vous préciser le problème rencontré ?
Sinon pour accéder aux lignes d'une macro, il faut utiliser la collection VBComponents.
-- A+
Bonjour,
je comprends bien votre remarque, mais j'ai absolument besoin d'utiliser une fonction qui supprime la macro après qu'elle soit exécutée... je sais qu'elle s'exécute en autoopen.
le but est d'éviter lorsque le document est imprimé en PDF, la macro ne soit pas déclanchée par la fonction du PDF.
merci à vous et à bientôt.
Geo
le but est d'éviter lorsque le document est imprimé en PDF, la macro ne soit pas déclanchée par la fonction du PDF.
Lors de l'impression en PDF la macro n'est pas recopiée dans le PDF, elle est strictement interne à Word. Une fois en PDF votre fichier n'évoluera plus, si c'est bien ça votre souci.
-- A+
le but est d'éviter lorsque le document est imprimé en PDF, la macro
ne soit pas déclanchée par la fonction du PDF.
Lors de l'impression en PDF la macro n'est pas recopiée dans le PDF,
elle est strictement interne à Word.
Une fois en PDF votre fichier n'évoluera plus, si c'est bien ça votre
souci.
le but est d'éviter lorsque le document est imprimé en PDF, la macro ne soit pas déclanchée par la fonction du PDF.
Lors de l'impression en PDF la macro n'est pas recopiée dans le PDF, elle est strictement interne à Word. Une fois en PDF votre fichier n'évoluera plus, si c'est bien ça votre souci.
-- A+
ymer.hyseni
On 22 nov, 12:52, Geo wrote:
le but est d'éviter lorsque le document est imprimé en PDF, la macro ne soit pas déclanchée par la fonction du PDF.
Lors de l'impression en PDF la macro n'est pas recopiée dans le PDF, elle est strictement interne à Word. Une fois en PDF votre fichier n'évoluera plus, si c'est bien ça votre souci.
-- A+
mais non,
je sais bien que la macro reste dans word, aucun problème, mais par contre pourque le fichier soit en pdf, l'outil doit bien l'ouvrir afin de l'imprimer, et donc dès l'ouverture la macro s'enclenche également... et c'est ce qui fait l'erreur...
est-ce que vous comprenez ce que je veux?
On 22 nov, 12:52, Geo <G...@sans.pub> wrote:
le but est d'éviter lorsque le document est imprimé en PDF, la macro
ne soit pas déclanchée par la fonction du PDF.
Lors de l'impression en PDF la macro n'est pas recopiée dans le PDF,
elle est strictement interne à Word.
Une fois en PDF votre fichier n'évoluera plus, si c'est bien ça votre
souci.
--
A+
mais non,
je sais bien que la macro reste dans word, aucun problème, mais par
contre pourque le fichier soit en pdf, l'outil doit bien l'ouvrir afin
de l'imprimer, et donc dès l'ouverture la macro s'enclenche
également... et c'est ce qui fait l'erreur...
le but est d'éviter lorsque le document est imprimé en PDF, la macro ne soit pas déclanchée par la fonction du PDF.
Lors de l'impression en PDF la macro n'est pas recopiée dans le PDF, elle est strictement interne à Word. Une fois en PDF votre fichier n'évoluera plus, si c'est bien ça votre souci.
-- A+
mais non,
je sais bien que la macro reste dans word, aucun problème, mais par contre pourque le fichier soit en pdf, l'outil doit bien l'ouvrir afin de l'imprimer, et donc dès l'ouverture la macro s'enclenche également... et c'est ce qui fait l'erreur...
est-ce que vous comprenez ce que je veux?
Geo
je sais bien que la macro reste dans word, aucun problème, mais par contre pourque le fichier soit en pdf, l'outil doit bien l'ouvrir afin de l'imprimer, et donc dès l'ouverture la macro s'enclenche également... et c'est ce qui fait l'erreur...
est-ce que vous comprenez ce que je veux?
Ok j'ai compris. Mais comme il y a tous les niveaux dans les intervenants, on ne peut pas le savoir avant.
Mais comme je suis têtu et que les solutions simples sont toujours préférables : L'outil pourrait ouvrir le document sans activer les macros, ça dépend comment il est fait.
Sinon, pour supprimer le texte de la macro, il faut, comme je vous l'ai indiqué, utiliser la collection vbComponents, voici un exemple : Sub EffaceMacro() ' référencer Microsoft Visual Basic for application Extensibility 5.3 Dim MonModule As VBComponent Dim nbLignes As Integer Set MonModule = ActiveDocument.VBProject.VBComponents(1) With MonModule.CodeModule nbLignes = .CountOfLines .DeleteLines StartLine:=1, Count:=nbLignes End With End Sub
Selon le contexte ce n'est peut-être pas le module n°1 qu'il faut supprimer, il vaudrait mieux faire une boucle sur tous les modules et tester sur le nom pour s'assurer qu'on est sur le bon.
-- A+
je sais bien que la macro reste dans word, aucun problème, mais par
contre pourque le fichier soit en pdf, l'outil doit bien l'ouvrir afin
de l'imprimer, et donc dès l'ouverture la macro s'enclenche
également... et c'est ce qui fait l'erreur...
est-ce que vous comprenez ce que je veux?
Ok j'ai compris.
Mais comme il y a tous les niveaux dans les intervenants, on ne peut
pas le savoir avant.
Mais comme je suis têtu et que les solutions simples sont toujours
préférables : L'outil pourrait ouvrir le document sans activer les
macros, ça dépend comment il est fait.
Sinon, pour supprimer le texte de la macro, il faut, comme je vous l'ai
indiqué, utiliser la collection vbComponents, voici un exemple :
Sub EffaceMacro()
' référencer Microsoft Visual Basic for application Extensibility 5.3
Dim MonModule As VBComponent
Dim nbLignes As Integer
Set MonModule = ActiveDocument.VBProject.VBComponents(1)
With MonModule.CodeModule
nbLignes = .CountOfLines
.DeleteLines StartLine:=1, Count:=nbLignes
End With
End Sub
Selon le contexte ce n'est peut-être pas le module n°1 qu'il faut
supprimer, il vaudrait mieux faire une boucle sur tous les modules et
tester sur le nom pour s'assurer qu'on est sur le bon.
je sais bien que la macro reste dans word, aucun problème, mais par contre pourque le fichier soit en pdf, l'outil doit bien l'ouvrir afin de l'imprimer, et donc dès l'ouverture la macro s'enclenche également... et c'est ce qui fait l'erreur...
est-ce que vous comprenez ce que je veux?
Ok j'ai compris. Mais comme il y a tous les niveaux dans les intervenants, on ne peut pas le savoir avant.
Mais comme je suis têtu et que les solutions simples sont toujours préférables : L'outil pourrait ouvrir le document sans activer les macros, ça dépend comment il est fait.
Sinon, pour supprimer le texte de la macro, il faut, comme je vous l'ai indiqué, utiliser la collection vbComponents, voici un exemple : Sub EffaceMacro() ' référencer Microsoft Visual Basic for application Extensibility 5.3 Dim MonModule As VBComponent Dim nbLignes As Integer Set MonModule = ActiveDocument.VBProject.VBComponents(1) With MonModule.CodeModule nbLignes = .CountOfLines .DeleteLines StartLine:=1, Count:=nbLignes End With End Sub
Selon le contexte ce n'est peut-être pas le module n°1 qu'il faut supprimer, il vaudrait mieux faire une boucle sur tous les modules et tester sur le nom pour s'assurer qu'on est sur le bon.
-- A+
Anacoluthe
Bonjour !
'' nous a écrit ...
je sais bien que la macro reste dans word, aucun problème, mais par contre pourque le fichier soit en pdf, l'outil doit bien l'ouvrir afin de l'imprimer, et donc dès l'ouverture la macro s'enclenche également... et c'est ce qui fait l'erreur...
Vous avez plusieurs solutions : 1) Supprimer l'erreur. Il n'y a pas de raison que la réouverture d'un document contenant une macro automatique d'ouverture émette une erreur à son exécution. Revoyez votre code. Votre macro déchampe le document : donc il n'y a plus de champs.
2) Mettre cette macro automatique ailleurs. Le mieux est dans le modèle attaché au document, ou dans un modèle global (éventuellement Normal.dot). Le document n'aura aucune macro. Cette technique est largement utilisée pour des documents qui doivent être utilisés ensuite par des tiers.
Votre solution consistant à autodétruire la macro dans chaque document est certes possible - voir la réponse de Geo - mais la plus tarabiscotée...
Anacoluthe « Le plus compliqué cest de faire simple. » - Léonard de VINCI
Bonjour !
'ymer.hyseni@gmail.com' nous a écrit ...
je sais bien que la macro reste dans word, aucun problème, mais par
contre pourque le fichier soit en pdf, l'outil doit bien l'ouvrir afin
de l'imprimer, et donc dès l'ouverture la macro s'enclenche
également... et c'est ce qui fait l'erreur...
Vous avez plusieurs solutions :
1) Supprimer l'erreur. Il n'y a pas de raison que la réouverture
d'un document contenant une macro automatique d'ouverture émette
une erreur à son exécution. Revoyez votre code.
Votre macro déchampe le document : donc il n'y a plus de champs.
2) Mettre cette macro automatique ailleurs. Le mieux est dans le
modèle attaché au document, ou dans un modèle global (éventuellement
Normal.dot). Le document n'aura aucune macro. Cette technique est
largement utilisée pour des documents qui doivent être utilisés
ensuite par des tiers.
Votre solution consistant à autodétruire la macro dans chaque
document est certes possible - voir la réponse de Geo -
mais la plus tarabiscotée...
Anacoluthe
« Le plus compliqué cest de faire simple. »
- Léonard de VINCI
je sais bien que la macro reste dans word, aucun problème, mais par contre pourque le fichier soit en pdf, l'outil doit bien l'ouvrir afin de l'imprimer, et donc dès l'ouverture la macro s'enclenche également... et c'est ce qui fait l'erreur...
Vous avez plusieurs solutions : 1) Supprimer l'erreur. Il n'y a pas de raison que la réouverture d'un document contenant une macro automatique d'ouverture émette une erreur à son exécution. Revoyez votre code. Votre macro déchampe le document : donc il n'y a plus de champs.
2) Mettre cette macro automatique ailleurs. Le mieux est dans le modèle attaché au document, ou dans un modèle global (éventuellement Normal.dot). Le document n'aura aucune macro. Cette technique est largement utilisée pour des documents qui doivent être utilisés ensuite par des tiers.
Votre solution consistant à autodétruire la macro dans chaque document est certes possible - voir la réponse de Geo - mais la plus tarabiscotée...
Anacoluthe « Le plus compliqué cest de faire simple. » - Léonard de VINCI
ymer.hyseni
On 22 nov, 14:11, Anacoluthe wrote:
Bonjour !
'' nous a écrit ...
je sais bien que la macro reste dans word, aucun problème, mais par contre pourque le fichier soit en pdf, l'outil doit bien l'ouvrir afin de l'imprimer, et donc dès l'ouverture la macro s'enclenche également... et c'est ce qui fait l'erreur...
Vous avez plusieurs solutions : 1) Supprimer l'erreur. Il n'y a pas de raison que la réouverture d'un document contenant une macro automatique d'ouverture émette une erreur à son exécution. Revoyez votre code. Votre macro déchampe le document : donc il n'y a plus de champs.
2) Mettre cette macro automatique ailleurs. Le mieux est dans le modèle attaché au document, ou dans un modèle global (éventuelleme nt Normal.dot). Le document n'aura aucune macro. Cette technique est largement utilisée pour des documents qui doivent être utilisés ensuite par des tiers.
Votre solution consistant à autodétruire la macro dans chaque document est certes possible - voir la réponse de Geo - mais la plus tarabiscotée...
Anacoluthe << Le plus compliqué c'est de faire simple. >> - Léonard de VINCI
bonjour, j'ai coché donc dans la référence Microsoft Visual Basic for application Extensibility 5.3, mais ca ne fonctionne toujours pas, il me dit :
erreur de compilation, projet ou bibliothèque introuvable...
je vois pas quoi faire là...
merci de votre aide.
On 22 nov, 14:11, Anacoluthe <nopub_anacolu...@Ouanadoo.fr> wrote:
Bonjour !
'ymer.hys...@gmail.com' nous a écrit ...
je sais bien que la macro reste dans word, aucun problème, mais par
contre pourque le fichier soit en pdf, l'outil doit bien l'ouvrir afin
de l'imprimer, et donc dès l'ouverture la macro s'enclenche
également... et c'est ce qui fait l'erreur...
Vous avez plusieurs solutions :
1) Supprimer l'erreur. Il n'y a pas de raison que la réouverture
d'un document contenant une macro automatique d'ouverture émette
une erreur à son exécution. Revoyez votre code.
Votre macro déchampe le document : donc il n'y a plus de champs.
2) Mettre cette macro automatique ailleurs. Le mieux est dans le
modèle attaché au document, ou dans un modèle global (éventuelleme nt
Normal.dot). Le document n'aura aucune macro. Cette technique est
largement utilisée pour des documents qui doivent être utilisés
ensuite par des tiers.
Votre solution consistant à autodétruire la macro dans chaque
document est certes possible - voir la réponse de Geo -
mais la plus tarabiscotée...
Anacoluthe
<< Le plus compliqué c'est de faire simple. >>
- Léonard de VINCI
bonjour, j'ai coché donc dans la référence Microsoft Visual Basic for
application Extensibility 5.3, mais ca ne fonctionne toujours pas, il
me dit :
erreur de compilation, projet ou bibliothèque introuvable...
je sais bien que la macro reste dans word, aucun problème, mais par contre pourque le fichier soit en pdf, l'outil doit bien l'ouvrir afin de l'imprimer, et donc dès l'ouverture la macro s'enclenche également... et c'est ce qui fait l'erreur...
Vous avez plusieurs solutions : 1) Supprimer l'erreur. Il n'y a pas de raison que la réouverture d'un document contenant une macro automatique d'ouverture émette une erreur à son exécution. Revoyez votre code. Votre macro déchampe le document : donc il n'y a plus de champs.
2) Mettre cette macro automatique ailleurs. Le mieux est dans le modèle attaché au document, ou dans un modèle global (éventuelleme nt Normal.dot). Le document n'aura aucune macro. Cette technique est largement utilisée pour des documents qui doivent être utilisés ensuite par des tiers.
Votre solution consistant à autodétruire la macro dans chaque document est certes possible - voir la réponse de Geo - mais la plus tarabiscotée...
Anacoluthe << Le plus compliqué c'est de faire simple. >> - Léonard de VINCI
bonjour, j'ai coché donc dans la référence Microsoft Visual Basic for application Extensibility 5.3, mais ca ne fonctionne toujours pas, il me dit :
erreur de compilation, projet ou bibliothèque introuvable...
je vois pas quoi faire là...
merci de votre aide.
Geo
Re
bonjour, j'ai coché donc dans la référence Microsoft Visual Basic for application Extensibility 5.3, mais ca ne fonctionne toujours pas, il me dit :
erreur de compilation, projet ou bibliothèque introuvable...
je vois pas quoi faire là...
Sur quelle ligne ?
Il vaut mieux mettre cette macro dans un autre module que les autres, sinon c'est de l'auto-destruction, ça marche mais avec le risque maximal.
-- A+
Re
bonjour, j'ai coché donc dans la référence Microsoft Visual Basic for
application Extensibility 5.3, mais ca ne fonctionne toujours pas, il
me dit :
erreur de compilation, projet ou bibliothèque introuvable...
je vois pas quoi faire là...
Sur quelle ligne ?
Il vaut mieux mettre cette macro dans un autre module que les autres,
sinon c'est de l'auto-destruction, ça marche mais avec le risque
maximal.
bonjour, j'ai coché donc dans la référence Microsoft Visual Basic for application Extensibility 5.3, mais ca ne fonctionne toujours pas, il me dit :
erreur de compilation, projet ou bibliothèque introuvable...
je vois pas quoi faire là...
Sur quelle ligne ?
Il vaut mieux mettre cette macro dans un autre module que les autres, sinon c'est de l'auto-destruction, ça marche mais avec le risque maximal.
-- A+
ymer.hyseni
On 22 nov, 16:57, Geo wrote:
Re
bonjour, j'ai coché donc dans la référence Microsoft Visual Basic for application Extensibility 5.3, mais ca ne fonctionne toujours pas, il me dit :
erreur de compilation, projet ou bibliothèque introuvable...
je vois pas quoi faire là...
Sur quelle ligne ?
Il vaut mieux mettre cette macro dans un autre module que les autres, sinon c'est de l'auto-destruction, ça marche mais avec le risque maximal.
-- A+
salut,
voici la réponse, j'ai trouvé ceci, ca marche super bien :
Private Sub Document_Open()
Application.ScreenUpdating = False Dim sec As Section ActiveDocument.Fields.Update
Dim afield As Field For Each afield In ActiveDocument.Fields afield.Unlink Next afield
Dim awi Dim awcl As Integer On Error Resume Next Set awi = ActiveDocument.VBProject.VBComponents.Item(1) awcl = awi.CodeModule.CountOfLines awi.CodeModule.DeleteLines 1, awcl Set awi = Nothing ' Release the object
End Sub
ciao
On 22 nov, 16:57, Geo <G...@sans.pub> wrote:
Re
bonjour, j'ai coché donc dans la référence Microsoft Visual Basic for
application Extensibility 5.3, mais ca ne fonctionne toujours pas, il
me dit :
erreur de compilation, projet ou bibliothèque introuvable...
je vois pas quoi faire là...
Sur quelle ligne ?
Il vaut mieux mettre cette macro dans un autre module que les autres,
sinon c'est de l'auto-destruction, ça marche mais avec le risque
maximal.
--
A+
salut,
voici la réponse, j'ai trouvé ceci, ca marche super bien :
Private Sub Document_Open()
Application.ScreenUpdating = False
Dim sec As Section
ActiveDocument.Fields.Update
Dim afield As Field
For Each afield In ActiveDocument.Fields
afield.Unlink
Next afield
Dim awi
Dim awcl As Integer
On Error Resume Next
Set awi = ActiveDocument.VBProject.VBComponents.Item(1)
awcl = awi.CodeModule.CountOfLines
awi.CodeModule.DeleteLines 1, awcl
Set awi = Nothing ' Release the object
bonjour, j'ai coché donc dans la référence Microsoft Visual Basic for application Extensibility 5.3, mais ca ne fonctionne toujours pas, il me dit :
erreur de compilation, projet ou bibliothèque introuvable...
je vois pas quoi faire là...
Sur quelle ligne ?
Il vaut mieux mettre cette macro dans un autre module que les autres, sinon c'est de l'auto-destruction, ça marche mais avec le risque maximal.
-- A+
salut,
voici la réponse, j'ai trouvé ceci, ca marche super bien :
Private Sub Document_Open()
Application.ScreenUpdating = False Dim sec As Section ActiveDocument.Fields.Update
Dim afield As Field For Each afield In ActiveDocument.Fields afield.Unlink Next afield
Dim awi Dim awcl As Integer On Error Resume Next Set awi = ActiveDocument.VBProject.VBComponents.Item(1) awcl = awi.CodeModule.CountOfLines awi.CodeModule.DeleteLines 1, awcl Set awi = Nothing ' Release the object