none
Word 2013 VB erreur While sans Wend RRS feed

  • Question

  • Bonjour,

    Avec un collègue, on développe une macro VB permettant d'éditer la graphie du texte des pieds de pages de documents. On est prêt de la solution mais le temps nous presse. En pas à pas, ça fonctionne sauf à la fin où on obtient le message Erreur "While sans Wend". Si vous pouvez m'aider je vous transmets le code et un fichier modèle! Merci à l'avance!

    dimanche 23 mars 2014 15:00

Réponses

  • Re

    Je n'ai pas ce message d'erreur mais la macro boucle indéfiniment car i est égal à un.
    Vous voulez balayer tous les en-têtes et pieds de page pour le modifier ?
    Je verrais plutôt ce code :
    Sub Testxxx6()

    Dim s As Section
    Dim h As HeaderFooter
    For Each s In ActiveDocument.Sections
     For Each h In s.Headers
       h.Range.Select
       Call ModifierGraphieCAD
     Next h
     For Each h In s.Footers
       h.Range.Select
       Call ModifierGraphieCAD
     Next h
    Next s

    End Sub

    • Marqué comme réponse Aurel Bera mardi 25 mars 2014 10:20
    dimanche 23 mars 2014 20:21

Toutes les réponses

  • Bonjour

    Regardez sil ne manque pas un "end if" entre le while et le wend

    Sinon mettez le fichier sur www.cjoint.com et recopiez le lien ici.

    dimanche 23 mars 2014 19:33
  • Super! un gros merci : voici le lien vers le fichier de base (non nominatif) http://cjoint.com/?0CxuNrB5OWI.

    Voici le contenu de la macro (du Normal.dot)  - effectivement le problème semble être après le Wend. Pour préservé la confidentialité, j'ai retiré le vrai mot recherché mais on le lit en Header Footer du document.

    Note : le document comporte des sauts de sections sur page impaire, alors les pages ne sont pas consécutives..., c'est ce qui a compliqué la construction de la macro.

    Merci de me dire s'il vous manque de l'info. Si vous avez une solution ce serait super!! ;)

    Sub Testxxx5()

    Dim objPages As Pages

    Set objPages = ActiveDocument.ActiveWindow.Panes(1).Pages

    'Dim objPage As Page

    Dim NbSections As Integer

    NbSections = ActiveDocument.Sections.Count

    Dim i As Integer

    i = 1

    Dim j As Integer

     

    Set objPage = ActiveDocument.ActiveWindow.Panes(1).Pages.Item(i)

    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader

     

        While i <= NbSections

            j = i

        With ActiveDocument.Sections(i)

            ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader

            Call ModifierGraphieCAD

            ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter

            Call ModifierGraphieCAD

        End With

            i = Selection.Information(wdActiveEndSectionNumber)

            If i < NbSections Then

                ActiveWindow.ActivePane.View.NextHeaderFooter

                i = Selection.Information(wdActiveEndSectionNumber)

            End If

        Wend

     

    End Sub

    Sub ModifierGraphieCAD()

    With Selection.Find

            .Text = "xxx@distance"

            .Replacement.Text = "xxx à distance"

            .Forward = True

            .Wrap = wdFindContinue

            .Format = False

            .MatchCase = False

            .MatchWholeWord = False

            .MatchWildcards = False

            .MatchSoundsLike = False

            .MatchAllWordForms = False

        End With

        Selection.Find.Execute Replace:=wdReplaceAll

    End Sub

    dimanche 23 mars 2014 19:50
  • Re

    Je n'ai pas ce message d'erreur mais la macro boucle indéfiniment car i est égal à un.
    Vous voulez balayer tous les en-têtes et pieds de page pour le modifier ?
    Je verrais plutôt ce code :
    Sub Testxxx6()

    Dim s As Section
    Dim h As HeaderFooter
    For Each s In ActiveDocument.Sections
     For Each h In s.Headers
       h.Range.Select
       Call ModifierGraphieCAD
     Next h
     For Each h In s.Footers
       h.Range.Select
       Call ModifierGraphieCAD
     Next h
    Next s

    End Sub

    • Marqué comme réponse Aurel Bera mardi 25 mars 2014 10:20
    dimanche 23 mars 2014 20:21
  • Impeccable, effectivement!! Le problème est réglé. Un gros merci.
    dimanche 23 mars 2014 21:21