VBA Word - Probleme macro et protection formulaire
4 réponses
benco
bonsoir j'ai fait un formualire (type facture, devis) qui se numerote
automatiquement et crée une copie. Ce numero se met dans l'en tete de page.
Le probleme c'est que sur cet imprimé, il y a des champs (case à cocher et
texte), afin de les rendre valident, je dois mettre la protection du
formulaire. Mais si je mets cette protection, ma macro ne fonctionne plus!!!!
Si quelqu'un pouvait me dire, si je n'ai pas pris la meilleur des methodes ?
si il a deja concu un imprimé de ce type ? me dire ce que je dois faire pour
eviter mon probleme ? j'aurais bien mis ce numero ailleurs mais impossible de
le positionner exactement là où je veux !! je ne sais pas comment faire
(connais pas le code) pour donner des coordonnés, sous Word avecVBA, à ce
numero pour qu'il se mette au bon endroit.
Voici mon code :
Code:
num = ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value
num = num + 1
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value = num
Selection.TypeText Text:="N° " & num & /2006
num = Right("0000" & num, 4)
SendKeys "o"
ActiveDocument.SaveAs FileName:="N" & num & ".doc"
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
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
Anacoluthe
Bonjour !
'benco' nous a écrit ...
bonsoir j'ai fait un formualire (type facture, devis) qui se numerote automatiquement et crée une copie. Ce numero se met dans l'en tete de page. Le probleme c'est que sur cet imprimé, il y a des champs (case à cocher et texte), afin de les rendre valident, je dois mettre la protection du formulaire. Mais si je mets cette protection, ma macro ne fonctionne plus!!!!
Les macros, automatiques ou non, fonctionnent très bien dans un formulaire protégé. Là n'est pas le problème.
Mais votre macro ne peut pas vouloir écrire dans la partie /protégée/ du document !!! Il suffit dans ce cas de lever la protection le temps de modifier le document : ActiveDocument.Unprotect ' je déprotège le document ..... ici l'écriture du N° automatique dans le document ' et je reprotège le document : ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
Concernant l'emplacement du numéro, le plus simple est d'aller le mettre dans un signet.
Anacoluthe « On se protège des autres au lieu de se protéger de soi-même. » - Michel RANDOM
Bonjour !
'benco' nous a écrit ...
bonsoir j'ai fait un formualire (type facture, devis) qui se numerote
automatiquement et crée une copie. Ce numero se met dans l'en tete de page.
Le probleme c'est que sur cet imprimé, il y a des champs (case à cocher et
texte), afin de les rendre valident, je dois mettre la protection du
formulaire. Mais si je mets cette protection, ma macro ne fonctionne plus!!!!
Les macros, automatiques ou non, fonctionnent très bien
dans un formulaire protégé. Là n'est pas le problème.
Mais votre macro ne peut pas vouloir écrire dans la partie /protégée/
du document !!! Il suffit dans ce cas de lever la protection le temps de
modifier le document :
ActiveDocument.Unprotect ' je déprotège le document
..... ici l'écriture du N° automatique dans le document
' et je reprotège le document :
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
Concernant l'emplacement du numéro, le plus simple est d'aller le mettre
dans un signet.
Anacoluthe
« On se protège des autres au lieu de se protéger de soi-même. »
- Michel RANDOM
bonsoir j'ai fait un formualire (type facture, devis) qui se numerote automatiquement et crée une copie. Ce numero se met dans l'en tete de page. Le probleme c'est que sur cet imprimé, il y a des champs (case à cocher et texte), afin de les rendre valident, je dois mettre la protection du formulaire. Mais si je mets cette protection, ma macro ne fonctionne plus!!!!
Les macros, automatiques ou non, fonctionnent très bien dans un formulaire protégé. Là n'est pas le problème.
Mais votre macro ne peut pas vouloir écrire dans la partie /protégée/ du document !!! Il suffit dans ce cas de lever la protection le temps de modifier le document : ActiveDocument.Unprotect ' je déprotège le document ..... ici l'écriture du N° automatique dans le document ' et je reprotège le document : ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
Concernant l'emplacement du numéro, le plus simple est d'aller le mettre dans un signet.
Anacoluthe « On se protège des autres au lieu de se protéger de soi-même. » - Michel RANDOM
benco
bonsoir,
c'est bon ma numerotation s'effectue correctement par contre elle se met sur les 2 pages, je cherche donc à ne l'avoir que sur la premiere feuille. Si quelqu'un connait le code, merci
par ailleurs, à chaque ouverture, il crée un ".doc", qui permet d'etre une sauvegarde, mais si en cas d'erreur apres ouverture, je decide de supprimer le ".doc", et que je rouvre de nouveau le modele, la numerotation ne tient pas compte de la suppression et continue la numerotation +1. Il y a donc un trou dans les numeros !! si quelqu'un connait un truc ? merci
bonsoir j'ai fait un formualire (type facture, devis) qui se numerote automatiquement et crée une copie. Ce numero se met dans l'en tete de page.
Le probleme c'est que sur cet imprimé, il y a des champs (case à cocher et texte), afin de les rendre valident, je dois mettre la protection du formulaire. Mais si je mets cette protection, ma macro ne fonctionne plus!!!!
Si quelqu'un pouvait me dire, si je n'ai pas pris la meilleur des methodes ? si il a deja concu un imprimé de ce type ? me dire ce que je dois faire pour eviter mon probleme ? j'aurais bien mis ce numero ailleurs mais impossible de le positionner exactement là où je veux !! je ne sais pas comment faire (connais pas le code) pour donner des coordonnés, sous Word avecVBA, à ce numero pour qu'il se mette au bon endroit.
Voici mon code : Code: num = ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value num = num + 1 ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value = num Selection.TypeText Text:="N° " & num & /2006 num = Right("0000" & num, 4) SendKeys "o" ActiveDocument.SaveAs FileName:="N" & num & ".doc" ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
bonsoir,
c'est bon ma numerotation s'effectue correctement par contre elle se met sur
les 2 pages, je cherche donc à ne l'avoir que sur la premiere feuille. Si
quelqu'un connait le code, merci
par ailleurs, à chaque ouverture, il crée un ".doc", qui permet d'etre une
sauvegarde, mais si en cas d'erreur apres ouverture, je decide de supprimer
le ".doc", et que je rouvre de nouveau le modele, la numerotation ne tient
pas compte de la suppression et continue la numerotation +1. Il y a donc un
trou dans les numeros !! si quelqu'un connait un truc ? merci
bonsoir j'ai fait un formualire (type facture, devis) qui se numerote
automatiquement et crée une copie. Ce numero se met dans l'en tete de page.
Le probleme c'est que sur cet imprimé, il y a des champs (case à cocher et
texte), afin de les rendre valident, je dois mettre la protection du
formulaire. Mais si je mets cette protection, ma macro ne fonctionne plus!!!!
Si quelqu'un pouvait me dire, si je n'ai pas pris la meilleur des methodes ?
si il a deja concu un imprimé de ce type ? me dire ce que je dois faire pour
eviter mon probleme ? j'aurais bien mis ce numero ailleurs mais impossible de
le positionner exactement là où je veux !! je ne sais pas comment faire
(connais pas le code) pour donner des coordonnés, sous Word avecVBA, à ce
numero pour qu'il se mette au bon endroit.
Voici mon code :
Code:
num = ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value
num = num + 1
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value = num
Selection.TypeText Text:="N° " & num & /2006
num = Right("0000" & num, 4)
SendKeys "o"
ActiveDocument.SaveAs FileName:="N" & num & ".doc"
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
c'est bon ma numerotation s'effectue correctement par contre elle se met sur les 2 pages, je cherche donc à ne l'avoir que sur la premiere feuille. Si quelqu'un connait le code, merci
par ailleurs, à chaque ouverture, il crée un ".doc", qui permet d'etre une sauvegarde, mais si en cas d'erreur apres ouverture, je decide de supprimer le ".doc", et que je rouvre de nouveau le modele, la numerotation ne tient pas compte de la suppression et continue la numerotation +1. Il y a donc un trou dans les numeros !! si quelqu'un connait un truc ? merci
bonsoir j'ai fait un formualire (type facture, devis) qui se numerote automatiquement et crée une copie. Ce numero se met dans l'en tete de page.
Le probleme c'est que sur cet imprimé, il y a des champs (case à cocher et texte), afin de les rendre valident, je dois mettre la protection du formulaire. Mais si je mets cette protection, ma macro ne fonctionne plus!!!!
Si quelqu'un pouvait me dire, si je n'ai pas pris la meilleur des methodes ? si il a deja concu un imprimé de ce type ? me dire ce que je dois faire pour eviter mon probleme ? j'aurais bien mis ce numero ailleurs mais impossible de le positionner exactement là où je veux !! je ne sais pas comment faire (connais pas le code) pour donner des coordonnés, sous Word avecVBA, à ce numero pour qu'il se mette au bon endroit.
Voici mon code : Code: num = ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value num = num + 1 ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value = num Selection.TypeText Text:="N° " & num & /2006 num = Right("0000" & num, 4) SendKeys "o" ActiveDocument.SaveAs FileName:="N" & num & ".doc" ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Geo
par ailleurs, à chaque ouverture, il crée un ".doc", qui permet d'etre une sauvegarde, mais si en cas d'erreur apres ouverture, je decide de supprimer le ".doc", et que je rouvre de nouveau le modele, la numerotation ne tient pas compte de la suppression et continue la numerotation +1. Il y a donc un trou dans les numeros !! si quelqu'un connait un truc ? merci
Corriger l'insertion automatique à la main. Ça me parait le plus simple.
-- A+
par ailleurs, à chaque ouverture, il crée un ".doc", qui permet d'etre une
sauvegarde, mais si en cas d'erreur apres ouverture, je decide de supprimer
le ".doc", et que je rouvre de nouveau le modele, la numerotation ne tient
pas compte de la suppression et continue la numerotation +1. Il y a donc un
trou dans les numeros !! si quelqu'un connait un truc ? merci
Corriger l'insertion automatique à la main.
Ça me parait le plus simple.
par ailleurs, à chaque ouverture, il crée un ".doc", qui permet d'etre une sauvegarde, mais si en cas d'erreur apres ouverture, je decide de supprimer le ".doc", et que je rouvre de nouveau le modele, la numerotation ne tient pas compte de la suppression et continue la numerotation +1. Il y a donc un trou dans les numeros !! si quelqu'un connait un truc ? merci
Corriger l'insertion automatique à la main. Ça me parait le plus simple.
-- A+
benco
bonjour, j'y suis presque, mais j'ai un debigage sur la derniere ligne de code, il me met " Erreur d'exe 4641 L'instruction ToolsProtectDocument est actuellement désactivée"
voici mon code
Private Sub CommandButton1_ Click
num = ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value num = num + 1
ActiveDocument.Unprotect ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value = num Selection.TypeText Text:="N° " & num & /2006 num = Right("0000" & num, 4) SendKeys "o" ActiveDocument.SaveAs FileName:="N" & num & ".doc" ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True 'meme avec False ça ne marche pas
End Sub
Bonjour !
'benco' nous a écrit ...
bonsoir j'ai fait un formualire (type facture, devis) qui se numerote automatiquement et crée une copie. Ce numero se met dans l'en tete de page. Le probleme c'est que sur cet imprimé, il y a des champs (case à cocher et texte), afin de les rendre valident, je dois mettre la protection du formulaire. Mais si je mets cette protection, ma macro ne fonctionne plus!!!!
Les macros, automatiques ou non, fonctionnent très bien dans un formulaire protégé. Là n'est pas le problème.
Mais votre macro ne peut pas vouloir écrire dans la partie /protégée/ du document !!! Il suffit dans ce cas de lever la protection le temps de modifier le document : ActiveDocument.Unprotect ' je déprotège le document ...... ici l'écriture du N° automatique dans le document ' et je reprotège le document : ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
Concernant l'emplacement du numéro, le plus simple est d'aller le mettre dans un signet.
Anacoluthe « On se protège des autres au lieu de se protéger de soi-même. » - Michel RANDOM
bonjour, j'y suis presque, mais j'ai un debigage sur la derniere ligne de
code, il me met " Erreur d'exe 4641 L'instruction ToolsProtectDocument est
actuellement désactivée"
voici mon code
Private Sub CommandButton1_ Click
num = ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value
num = num + 1
ActiveDocument.Unprotect
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value = num
Selection.TypeText Text:="N° " & num & /2006
num = Right("0000" & num, 4)
SendKeys "o"
ActiveDocument.SaveAs FileName:="N" & num & ".doc"
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True 'meme
avec False ça ne marche pas
End Sub
Bonjour !
'benco' nous a écrit ...
bonsoir j'ai fait un formualire (type facture, devis) qui se numerote
automatiquement et crée une copie. Ce numero se met dans l'en tete de page.
Le probleme c'est que sur cet imprimé, il y a des champs (case à cocher et
texte), afin de les rendre valident, je dois mettre la protection du
formulaire. Mais si je mets cette protection, ma macro ne fonctionne plus!!!!
Les macros, automatiques ou non, fonctionnent très bien
dans un formulaire protégé. Là n'est pas le problème.
Mais votre macro ne peut pas vouloir écrire dans la partie /protégée/
du document !!! Il suffit dans ce cas de lever la protection le temps de
modifier le document :
ActiveDocument.Unprotect ' je déprotège le document
...... ici l'écriture du N° automatique dans le document
' et je reprotège le document :
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
Concernant l'emplacement du numéro, le plus simple est d'aller le mettre
dans un signet.
Anacoluthe
« On se protège des autres au lieu de se protéger de soi-même. »
- Michel RANDOM
bonjour, j'y suis presque, mais j'ai un debigage sur la derniere ligne de code, il me met " Erreur d'exe 4641 L'instruction ToolsProtectDocument est actuellement désactivée"
voici mon code
Private Sub CommandButton1_ Click
num = ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value num = num + 1
ActiveDocument.Unprotect ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader ActiveDocument.AttachedTemplate.AutoTextEntries("numéro").Value = num Selection.TypeText Text:="N° " & num & /2006 num = Right("0000" & num, 4) SendKeys "o" ActiveDocument.SaveAs FileName:="N" & num & ".doc" ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True 'meme avec False ça ne marche pas
End Sub
Bonjour !
'benco' nous a écrit ...
bonsoir j'ai fait un formualire (type facture, devis) qui se numerote automatiquement et crée une copie. Ce numero se met dans l'en tete de page. Le probleme c'est que sur cet imprimé, il y a des champs (case à cocher et texte), afin de les rendre valident, je dois mettre la protection du formulaire. Mais si je mets cette protection, ma macro ne fonctionne plus!!!!
Les macros, automatiques ou non, fonctionnent très bien dans un formulaire protégé. Là n'est pas le problème.
Mais votre macro ne peut pas vouloir écrire dans la partie /protégée/ du document !!! Il suffit dans ce cas de lever la protection le temps de modifier le document : ActiveDocument.Unprotect ' je déprotège le document ...... ici l'écriture du N° automatique dans le document ' et je reprotège le document : ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
Concernant l'emplacement du numéro, le plus simple est d'aller le mettre dans un signet.
Anacoluthe « On se protège des autres au lieu de se protéger de soi-même. » - Michel RANDOM