Problèmes exécution VBA word 2007

Le
nathoche
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 !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
heureux-oli
Le #1755081
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"
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 !
Geo
Le #1755080

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+

nathoche
Le #1755079
On 8 jan, 11:55, 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+


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 !


Anacoluthe
Le #1755078
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

nathoche
Le #1755076
On 8 jan, 12:51, 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... 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 !


Geo
Le #1772874

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+



Publicité
Poster une réponse
Anonyme