Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problèmes exécution VBA word 2007

6 réponses
Avatar
nathoche
Bonjour,

J'aurais besoin d'aide SVP car j'ai "bidouill=E9" un petit programme
maison pour le bureau en VBA sur Word 2000 qui est devenu
indispensable =E0 mon travail mais que je dois maintenant faire
fonctionner sur Word 2007.

J'ai un bogue avec le remplissage des signets. En effet, le principe
de ce mod=E8le c'est que en fonction des choix effectu=E9s sur le
UserForm, certains documents sont ins=E9rer et d'autres non, donc il
arrive tout le temps que certains signets pr=E9vus dans le code
n'existent pas dans le document puisqu'ils ne correspondent pas aux
choix effectu=E9s.

Avec Word 2000 et le code << On error resume next >>, je n'ai pas de
probl=E8me, par contre avec Word 2007, il s'arr=EAte au premier signet
qu'il ne trouve pas dans le document.

Voici un exemple de mon code :

Private Sub CommandButton1_Click()
With ActiveDocument
On Error Resume Next
=2EBookmarks("Date1").Range =3D UserForm1.TextBox1
=2EBookmarks("Date2").Range =3D UserForm1.TextBox1
=2EBookmarks("Date3").Range =3D UserForm1.TextBox1
=2EBookmarks("Date4").Range =3D UserForm1.TextBox1
=2EBookmarks("Date5").Range =3D UserForm1.TextBox1
=2EBookmarks("Date6").Range =3D UserForm1.TextBox1
=2EBookmarks("Date7").Range =3D UserForm1.TextBox1
etc.

Quelqu'un aurait-il une id=E9e comment contourner ce probl=E8me en Word
2007 ?

Par avance, merci !

6 réponses

Avatar
heureux-oli
La solution serait de tester l'existence des signets avant d'affecter une
valeur

If ActiveDocument.Bookmarks.Exists("Date1") Then
ActiveDocument.Bookmarks("Date1").range.text = ....
--
Heureux-oli
http://heureuxoli.developpez.com/



"nathoche" a écrit dans le message de news:

Bonjour,

J'aurais besoin d'aide SVP car j'ai "bidouillé" un petit programme
maison pour le bureau en VBA sur Word 2000 qui est devenu
indispensable à mon travail mais que je dois maintenant faire
fonctionner sur Word 2007.

J'ai un bogue avec le remplissage des signets. En effet, le principe
de ce modèle c'est que en fonction des choix effectués sur le
UserForm, certains documents sont insérer et d'autres non, donc il
arrive tout le temps que certains signets prévus dans le code
n'existent pas dans le document puisqu'ils ne correspondent pas aux
choix effectués.

Avec Word 2000 et le code << On error resume next >>, je n'ai pas de
problème, par contre avec Word 2007, il s'arrête au premier signet
qu'il ne trouve pas dans le document.

Voici un exemple de mon code :

Private Sub CommandButton1_Click()
With ActiveDocument
On Error Resume Next
.Bookmarks("Date1").Range = UserForm1.TextBox1
.Bookmarks("Date2").Range = UserForm1.TextBox1
.Bookmarks("Date3").Range = UserForm1.TextBox1
.Bookmarks("Date4").Range = UserForm1.TextBox1
.Bookmarks("Date5").Range = UserForm1.TextBox1
.Bookmarks("Date6").Range = UserForm1.TextBox1
.Bookmarks("Date7").Range = UserForm1.TextBox1
etc.

Quelqu'un aurait-il une idée comment contourner ce problème en Word
2007 ?

Par avance, merci !
Avatar
Geo

Avec Word 2000 et le code << On error resume next >>, je n'ai pas de
problème, par contre avec Word 2007, il s'arrête au premier signet
qu'il ne trouve pas dans le document.


Même avec le On error... ?

--
A+

Avatar
nathoche
On 8 jan, 11:55, Geo wrote:

Avec Word 2000 et le code << On error resume next >>, je n'ai pas de
problème, par contre avec Word 2007, il s'arrête au premier signet
qu'il ne trouve pas dans le document.


Même avec le On error... ?

--
A+


Oui, malheureusement cela bogue même avec le "On error resume next".

Je remercie Heureux-Oli pour sa solution que je garde au cas où, mais
étant donné que j'ai des centaines de lignes dans ce genre cela
risque, en plus d'être fastidieux à écrire, de ralentir pas mal
l'exécution de mon code (enfin j'imagine, je ne suis pas non plus une
experte)... Avant d'essayer, je vais me donner le temps de chercher
une autre solution..

Si quelqu'un a une idée ... je suis preneur !

Encore merci !


Avatar
Anacoluthe
Bonjour !

'nathoche' nous a écrit ...
Oui, malheureusement cela bogue même avec le "On error resume next".


Donc ça bogue à la compilation, pas à l'exécution : On Error... traite les
erreurs d'exécution (comme l'erreur du signet qui n'existe pas), par contre
si l'objet UserForm1 ou Texbox1 de votre code n'existe pas/plus ou n'est pas
accessible ça plante exactement comme une faute de syntaxe à la compilation...

Cherchez encore, mais pas du côté des signets qui manquent.
Tant que vous n'avez pas un code propre désactivez la ligne
'On Error Resume Next' qui vous gêne pour y voir clair au déboguage.

Anacoluthe
« Aime la vérité, mais pardonne à l'erreur. »
- VOLTAIRE

Avatar
nathoche
On 8 jan, 12:51, Anacoluthe wrote:
Bonjour !

   'nathoche' nous a écrit ...

Oui, malheureusement cela bogue même avec le "On error resume next".


Donc ça bogue à la compilation, pas à l'exécution : On Error... tr aite les
erreurs d'exécution (comme l'erreur du signet qui n'existe pas), par con tre
si l'objet UserForm1 ou Texbox1 de votre code n'existe pas/plus ou n'est p as
accessible ça plante exactement comme une faute de syntaxe à la compil ation...

Cherchez encore, mais pas du côté des signets qui manquent.
Tant que vous n'avez pas un code propre désactivez la ligne
'On Error Resume Next' qui vous gêne pour y voir clair au déboguage.

Anacoluthe
« Aime la vérité, mais pardonne à l'erreur. »
   - VOLTAIRE


Merci pour le conseil, je me mets au travail !


Avatar
Geo

Avec Word 2000 et le code << On error resume next >>, je n'ai pas de
problème, par contre avec Word 2007, il s'arrête au premier signet
qu'il ne trouve pas dans le document.


Même avec le On error... ?


Oui, malheureusement cela bogue même avec le "On error resume next".


Comme on peut toujours avoir des doutes, je viens d'essayer votre bout
de code, il fonctionne bien alors que je n'ai pas ces signets.
Comme l'a écrit Anacoluthe, il faut chercher ailleurs.
Regardez bien le texte mis en surbrillance quand l'erreur vous est
signalée.
En mode pas à pas, vous pouvez essayer sans le Resume Next et passer à
la ligne suivante en déplaçant la flèche jaune dans la marge.
Ca aide en général à mieux comprendre ce qui se passe.

--
A+