Problème avec les error et goto

Résolu
Robinwood01 Messages postés 153 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 3 juillet 2014 - 26 juil. 2006 à 12:29
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 27 juil. 2006 à 15:00
Bonjour

Voici le code qui me pose problème :

    On Error GoTo 1
        Word.ActiveDocument.Bookmarks("civilité").Select
        Word.Selection.InsertAfter Requete!civilité
1:
    On Error GoTo 2
        Word.ActiveDocument.Bookmarks("prénom").Select
        Word.Selection.InsertAfter Requete!prénom
2:
    On Error GoTo 3
        Word.ActiveDocument.Bookmarks("nom").Select
        Word.Selection.InsertAfter Requete!nom
3:
    On Error GoTo 4
        Word.ActiveDocument.Bookmarks("adresse").Select
        Word.Selection.InsertAfter Requete!adresse
4:


    On erreur GoTo 0

En faite ca me permet de faire des publipostage dans word.

J'ai plusieurs documents word certain non pas tous les champs, donc je me suis dis que j'allais gérer cela avec des erreurs.

Si je n'ai pas de signet dans le fichier word il me sort une erreur. Si dans un fichir word je n'ai pas le signet civilité, j'ai une erreur à la ligne : 
       Word.ActiveDocument.Bookmarks("civilité").Select

Et ca passe bien a mon 1: mais la ou ca marche plus c'est si j'ai encore une erreur, il l'affiche toujours et ne passe pas au 2:

D'où cela peut il venir ?

Merci d'avance

15 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
26 juil. 2006 à 18:33
Arf autant pour moi, j'ai lu trop vite.
Salut Julien, et oui, très peu là en ce moment (mais je trouve une heure ou deux qd même !!)
Tiens d'ailleurs ça me fait penser, j'ai pas eu le mail pour ce Topic (retour ici par hasard)

Bon, sinon, il faut jouer avec le numéro de l'erreur (humm si PCPT vois ça, je vais me faire gronder.. à cause des GoTo) lol








<small> Coloration syntaxique automatique </small>








   On Error Resume Next 
        Word.ActiveDocument.Bookmarks("civilité").Select 
        If Err.Number = ??? Then     'met le numéro de l'erreur
            GoTo 1 
        Else 
             Word.Selection.InsertAfter Requete!civilité 
        End If 

1: 
        Word.ActiveDocument.Bookmarks("prénom").Select 
        If Err.Number = ??? Then     'met le numéro de l'erreur
            GoTo 2 
        Else 
            Word.Selection.InsertAfter Requete!prénom 
        End If 

2: 
        Word.ActiveDocument.Bookmarks("nom").Select 
        If Err.Number = ??? Then     'met le numéro de l'erreur
            GoTo 3 
        Else 
            Word.Selection.InsertAfter Requete!nom 
        End If 

3: 
        Word.ActiveDocument.Bookmarks("adresse").Select 
        If Err.Number = ??? Then     'met le numéro de l'erreur
            GoTo 4
        Else 
            Word.Selection.InsertAfter Requete!adresse 
        End If 

4: 
    On erreur GoTo 0 

<small> Coloration syntaxique automatique </small>








@++

  Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à ce
sondage


Merci de prendre le temps de lire
le Règlement CS




    http://www.smileycentral.com/?partner=ZSzeb008_ZNxdm414YYFR
3
Robinwood01 Messages postés 153 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 3 juillet 2014
26 juil. 2006 à 20:16
Il faut mettre un
err.clear avant chaque Word.ActiveDocument.Bookmarks....
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 juil. 2006 à 08:59
Salut,


Sinon ce que tu peux faire c'est une SEULE procédure que tu appelles différemment.


EXEMPLE NON TESTE:




Private Sub BookMarksTest(BookMarkName as string) 
   On Error Got HandleError 
      Word.ActiveDocument.Bookmarks(BookMarkName).Select 
      'Petite modification ou je suppose que requete est un Recordset
      Word.Selection.InsertAfter Requete.Fields(BookMarkName)   
   Exit Sub 
   HandleError: 
   Err.Clear 
End Sub 

'Et Tu l'appelle de cette maniere
Call BookMarksTest("civilité") 
Call BookMarksTest("prénom") 
Call BookMarksTest("nom") 
Call BookMarksTest("adresse") 
 







<small> Coloration syntaxique automatique [AFCK]</small>

       





Voila en espérant que cela puisse t'aider.
@+, Julien
Pensez: Règlement/STRONG>
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 juil. 2006 à 13:51
Salut,


J ai les meme erreurs.


Pourquoi n'essaie tu pas On Error Resume Next (ceci ignore les erreurs)

@+, Julien
Pensez: Règlement/STRONG>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 juil. 2006 à 13:59
Re,


Sinon essaie ceci (petit bout de code fait en vb6) mais c'est pour l'idee








Dim i As Integer 
On Error GoTo 1 
i = 65879 
1: 
Resume Next 
On Error GoTo 2 
i = 89789 
2: 
MsgBox "yououou" 

 







<small> Coloration syntaxique automatique [AFCK]</small>

       












@+, Julien
Pensez: Règlement/STRONG>
0
Robinwood01 Messages postés 153 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 3 juillet 2014
26 juil. 2006 à 15:12
Ca marche pas le resume next car il me fait la ligne suivante qu'il ne doit pas faire justement, puisque j'ai mis un label pour qu'il saute la ligne.

Je vais essayer ton bout de code mais a part le resume next en début de label je vois pas de différence.

Merci pour ton aide, j'essais toute à l'heure.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
26 juil. 2006 à 16:05
Salut,

pourquoi ne pas faire tout simplement :

   On Error Resume Next
        Word.ActiveDocument.Bookmarks("civilité").Select
        Word.Selection.InsertAfter Requete!civilité
' si erreur, passe à la ligne suivante

        Word.ActiveDocument.Bookmarks("prénom").Select
        Word.Selection.InsertAfter Requete!prénom
' si erreur, passe à la ligne suivante

        Word.ActiveDocument.Bookmarks("nom").Select
        Word.Selection.InsertAfter Requete!nom
' si erreur, passe à la ligne suivante

        Word.ActiveDocument.Bookmarks("adresse").Select
        Word.Selection.InsertAfter Requete!adresse
' si erreur, passe à la ligne suivante
    On erreur GoTo 0

@++

  Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à ce


[/infomsg_SONDAGE-POP3-POUR-CS_769706.aspx
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 juil. 2006 à 16:12
>647037 mortalino: Ben dis donc t'es sorti aujourd hui ...

Non en fait c est ce que je pensais mais il ne souhaite pas le Resume Next car en fait si erreur sur

Word.ActiveDocument.Bookmarks("civilité").Select

Et bien il ne veux pas effetuer cette ligne : => Word.Selection.InsertAfter Requete!civilité

@+, Julien
Pensez: Règlement/STRONG>
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 juil. 2006 à 21:58
Salut,
Tu n' as pas précisé en quel langage. Si c' est  en VB6, je propose :

Sub ...

On error goto 1
    ligne 1 .....................
    ligne 2 .....................

On error goto 2
    ligne 3 .....................
    ligne 4.....................

On error goto 3
    ligne 5 .....................
    ligne 6 .....................

On error goto 4
    ligne 7 .....................
    ligne 8 .....................

Exit Sub

1:
Message d' erreur
 Exit sub

2:
Message d' erreur
 Exit sub

3:
Message d' erreur
 Exit sub

4:
Message d' erreur
 Exit sub

End Sub

A+
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 juil. 2006 à 22:14
Réctifier

Sub ...
On error goto 1
    ligne 1 .....................
    ligne 2 .....................
On error goto 2
    ligne 3 .....................
    ligne 4.....................
On error goto 3
    ligne 5 .....................
    ligne 6 .....................
On error goto 4
    ligne 7 .....................
    ligne 8 .....................

Exit Sub  'Tout ce passe bien

1:
Message d' erreur
 On error goto 2
    ligne 3 .....................
    ligne 4.....................
On error goto 3
    ligne 5 .....................
    ligne 6 .....................
On error goto 4
    ligne 7 .....................
    ligne 8 .....................
Exit sub

2:
Message d' erreur
 On error goto 3
    ligne 5 .....................
    ligne 6 .....................
On error goto 4
    ligne 7 .....................
    ligne 8 .....................
Exit sub

3:
Message d' erreur
 On error goto 4
    ligne 7 .....................
    ligne 8 .....................
 Exit sub

4:
Message d' erreur
End Sub
0
Robinwood01 Messages postés 153 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 3 juillet 2014
26 juil. 2006 à 22:35
oui en VB6

Pour ca marche pas ca :

C'est la même chose : 

   On Error GoTo 1
        Word.ActiveDocument.Bookmarks("civilité").Select
        Word.Selection.InsertAfter Requete!civilité
1:
    On Error GoTo 2
        Word.ActiveDocument.Bookmarks("prénom").Select
        Word.Selection.InsertAfter Requete!prénom
2:
    On Error GoTo 3
        Word.ActiveDocument.Bookmarks("nom").Select
        Word.Selection.InsertAfter Requete!nom
3:
    On Error GoTo 4
        Word.ActiveDocument.Bookmarks("adresse").Select
        Word.Selection.InsertAfter Requete!adresse
4:
    On erreur GoTo 0
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
27 juil. 2006 à 00:01
Qu' est-ce qui ne marche pas ?
Ce que je t' ai proposé ou ce que toi tu as testé au départ?
Tu' as reproduis là la même procédure qu' au début de ta question.
Montre-nous ou ça bloque dans la dernière réponse pour qu' on puisse faire évoluer la chose..
A+
0
Robinwood01 Messages postés 153 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 3 juillet 2014
27 juil. 2006 à 08:45
Ce qui ne marche pas c'est ce que j'avais mis. Mais pour ce que tu propose ca me parait long comme méthode.

Car je vais avoir 20 x 2 ligne donc comme a chaque paquet je dois géré l'erreur et ensuite recopier les autres double ligne restante tu imagines ...

Sinon la réponse accepté marche bien.

Mais soit je comprend mal la logique des error et goto, soit il y a un truc, même ca ne passe pas :

err.clear
On Error GoTo 1
        Word.ActiveDocument.Bookmarks("civilité").Select
        Word.Selection.InsertAfter Requete!civilité
1:
err.clear
    On Error GoTo 2
        Word.ActiveDocument.Bookmarks("prénom").Select
        Word.Selection.InsertAfter Requete!prénom
2:
err.clear
    On Error GoTo 3
        Word.ActiveDocument.Bookmarks("nom").Select
        Word.Selection.InsertAfter Requete!nom
3:
err.clear
    On Error GoTo 4
        Word.ActiveDocument.Bookmarks("adresse").Select
        Word.Selection.InsertAfter Requete!adresse
4:
err.clear


    On erreur GoTo 0
0
Robinwood01 Messages postés 153 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 3 juillet 2014
27 juil. 2006 à 12:22
Oui c'est bien un reccordset, la fonction est très bien.

Il faut juste mettre la variable Word en public.

Merci pour ton aide.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
27 juil. 2006 à 15:00
Bonjour tout le monde,
Tant mieux si ça marche.
Je crois que j' ai trouvé une explication au problème.
La raison pour laquelle il ne tient pas compte de On error goto 2, c' est tout simplement
parce qu' il ne la lit pas.
Autrement dit on ne peut pas lire l' instruction on error deux foix de suite.
Je m' explique :S' il rencontre une une erreure au niveau on error goto 1, lorsqu' il se pointe
 vers l' etiquette 1, il ignore on error goto 2 et va directement vers WORD.....
La solution consiste donc à insérer une instruction bidon entre l' etiquette et le on error suivante.
Je vois que j' arrive trop tard, mais c' est bon à savoir.
0
Rejoignez-nous