Champ de plus de 256 caractères dans un formulaire
Le
Patrick EVEN
Bonjour,
Dans un formulaire j'ai plusieurs champs texte
dont l'un d'entre eux peut dépasser 256 caractères.
Ce formulaire est protégé comme il se doit.
Par ailleurs, J'ai besoin de mettre à jour les entêtes de ce formulaire,
ce qui est impossible sans déprotéger le formulaire.
Je déprotège donc et je mets à jour les entêtes
puis je protège à nouveau.
Je constate alors que j'ai perdu toutes les données saisies.
Pour éviter ce désagrément, j'ai écrit une macro
qui fait une boucle de sauvegarde des champs dans un tableau de String :
TabValeurs(I) = ActiveDocument.FormFields(I).Result
Déprotection, actualisation des entêtes, Protection à nouveau
puis boucle de réinjection des données sauvegardées :
ActiveDocument.FormFields(I).Result = TabValeurs(I)
En pas à pas, j'observe que tout fonctionne parfaitement
jusqu'au moment de réinjecter le champ contenant plus de
256 caractères (Erreur :4609).
J'aimerais savoir s'il existe un moyen d'aller au delà
de cette limitation à 256 caractères.
Merci d'avance pour vos réponses.
Cordialement,
Patrick EVEN
Dans un formulaire j'ai plusieurs champs texte
dont l'un d'entre eux peut dépasser 256 caractères.
Ce formulaire est protégé comme il se doit.
Par ailleurs, J'ai besoin de mettre à jour les entêtes de ce formulaire,
ce qui est impossible sans déprotéger le formulaire.
Je déprotège donc et je mets à jour les entêtes
puis je protège à nouveau.
Je constate alors que j'ai perdu toutes les données saisies.
Pour éviter ce désagrément, j'ai écrit une macro
qui fait une boucle de sauvegarde des champs dans un tableau de String :
TabValeurs(I) = ActiveDocument.FormFields(I).Result
Déprotection, actualisation des entêtes, Protection à nouveau
puis boucle de réinjection des données sauvegardées :
ActiveDocument.FormFields(I).Result = TabValeurs(I)
En pas à pas, j'observe que tout fonctionne parfaitement
jusqu'au moment de réinjecter le champ contenant plus de
256 caractères (Erreur :4609).
J'aimerais savoir s'il existe un moyen d'aller au delà
de cette limitation à 256 caractères.
Merci d'avance pour vos réponses.
Cordialement,
Patrick EVEN

Poser une question


'Patrick EVEN' nous a écrit ...
Quelle version WORD svp ??????????
Merciiiiiiiiiiiiiii
WD2000 ?
Il est inutile de sauvegarder les valeurs de votre formulaire
- déprotégez avec .Unprotect
- reprotégez avec .Protect NoReset:=True
Avec NoReset les valeurs ne sont pas effacées
Concernant la pseudo-limite des 255 caractères d'un champ de
formulaire c'est un (ancien) bug de vba
Anacoluthe
« C'est un grand malheur de perdre par notre caractère
les droits que nos talents nous donnent sur la société. »
- Nicolas de CHAMFORT
Je confirme que je suis en Word 2000.
J'ai aussi constaté que le problème est le même en Word XP.
En définitive, sur tes conseils,
j'ai déprotégé puis reprotégé avec .Protect NoReset:=True
et en effet je n'ai plus besoin de sauvegarder et de restaurer les champs du
formulaire.
Les entêtes et les pieds de pages sont actualisés du même coup,
ce qui me convient parfaitement.
En fait, il semble que l'équivalent VBA de Ctrl+A puis F9 en mode normal,
inhibe l'option NoReset=True de la méthode .Protect.
C'est pour cette raison que j'ai été contraint de faire la Sauvegarde /
Restauration
des champs pour pallier cet inconvénient.
Merci de m'avoir mis sur la bonne voie.
Cordialement,
Patrick EVEN
"Anacoluthe"