VBA WORD - Récupérer le réultat d'une séléctionpour l'affecter à une variable

Signaler
Messages postés
47
Date d'inscription
mardi 3 juillet 2007
Statut
Membre
Dernière intervention
26 décembre 2013
-
Messages postés
47
Date d'inscription
mardi 3 juillet 2007
Statut
Membre
Dernière intervention
26 décembre 2013
-
Bonjour,

J'ai écrit ce code (VBA-WORD) afin de tenter de récupérer le résultat d'une selection en vue de l'affecter dans une variable. Je me servirais ensuite de cette variable pour un autre traitement.
En fin de code, je renvoie le résultat dans une msgbox afin d'en vérifier la réalité.. et surtout si c'est le résultat est celui attendu. Sauf que, la msg box me renvoit bien un résultat ... mais pas le bon !

Voici mon code ... Quelqu'un saurait me dire ce qui cloche ? Par avance merci pour vos contributions.

Sub Macro12()
    
    Dim PERS As Range
    
        Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="2"
            
            If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
                ActiveWindow.Panes(2).Close
            End If
            
            If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
                ActivePane.View.Type = wdOutlineView Then
                ActiveWindow.ActivePane.View.Type = wdPrintView
            End If
        
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
        
        Selection.Find.ClearFormatting
    
        With Selection.Find
            .Text = "N° de personne : "
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
    
        Selection.Find.Execute
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    
    Set PERS = ActiveDocument.Range(Selection.Start, Selection.End)
        MsgBox PERS.Text
    
    Selection.Copy
      ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
  
    Selection.Paste

End Sub

2 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
17
Difficile à voir sans le texte, mais tu sembles copier l'entête de page, c'est bien ça ?
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader

Si tu passes en mode pas à pas (F8), tu devrais pouvoir remarquer ce que la macro fait et déceler si celle-ci copie bien ce que tu veux, ce que je doute...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
47
Date d'inscription
mardi 3 juillet 2007
Statut
Membre
Dernière intervention
26 décembre 2013

Bonjour MPi²,

Tout d'abord je te remercie de t'interesser à mon problème.

Dans la macro je ne copie pas l'entête. Je l'active et recherche dans l'entête une chaine de caractère :

With Selection.Find
.Text = "N° de personne : "

Ensuite je demande à selectionner le mot suivants la chaine recherchée ... (j'ai fait un pas à pas et la macro fonctionne) :

Selection.Find.Execute
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend

C'est ce mot que je voudrais voir affecter à ma variable ... mais là par un grand mystère ... il ne me revoie pas le mot ... mais du vide.

En revanche cette partie de code fonctionne très bien et me renvoie correctement le mot :

Selection.Copy
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument

Selection.Paste

Un idée ?
Cordialement,