Débutant en VBA sous word (j'ai plus l'habitude d'XL), j'ai quelques
problèmes pour définir et récupérer le contenu de mes signets.
J'ai un document contenant des informations fixes et des informations issues
d'une fusion préalable (donc changeant à chaque document)
Les informations issues de la fusion me servent à classer le document dans
ma GED via OLE.
Pour repérer mes informations nécessaires au classement , je fais une
recherche d'une donnée fixe, puis en me déplacant dans le document, je
définis un signet sur la zone qui m'interesse.
Cela fonctionne correctement sauf dans le cas où je sélectionne toute la
ligne comme variable. Dans l'exemple ci-desous, quand j'ai plusieurs mots
dans ma ligne c'est bon, par contre, quand j'ai qu'un seul mot, j'ai un
espace rajouté dans mon signet.
Je souhaite savoir s'il existe une fonction du style SUPPRESPACE en VBA sous
Word, où éventuellement une autre méthode pour définir mes signets
Ci-dessous extrait de mon code généré automatiquement par l'enregistreur
'signet Nom
Selection.ExtendMode = False
Selection.Find.ClearFormatting
With Selection.Find
.Text = "campagne"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute
Selection.MoveLeft Unit:=wdCharacter, Count:=4
With Selection
' Collapse current selection to insertion point.
.Collapse
' Turn extend mode on.
.Extend
' Extend selection to word.
.Extend
'Etend à la ligne complète
.Extend
End With
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="Nom"
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Anacoluthe
Bonjour !
'Eric' nous a écrit ...
Cela fonctionne correctement sauf dans le cas où je sélectionne toute la ligne comme variable.
Votre système d'Extend successif est assez aberrant : vous vous retrouvez avec un Extend (F8) de trop si la phrase ne contient qu'un mot et vous récupérez alors une marque de paragraphe (équivalent d'un 4ème Extend). Utilisez MoveLeft en extension pour sélectionner clairement par phrase Selection.MoveLeft Unit:=wdSentence, Count:=1, Extend:=wdExtend et vous n'aurez plus aucun problème !
Anacoluthe « La vraie question est : pourquoi sélectionner? Et je ne connais pas la réponse. » - Albert JACQUARD
'signet Nom Selection.ExtendMode = False Selection.Find.ClearFormatting With Selection.Find .Text = "campagne" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue End With
Selection.Find.Execute Selection.MoveLeft Unit:=wdCharacter, Count:=4 With Selection ' Collapse current selection to insertion point. .Collapse ' Turn extend mode on. .Extend ' Extend selection to word. .Extend 'Etend à la ligne complète .Extend End With
With ActiveDocument.Bookmarks .Add Range:=Selection.Range, Name:="Nom" .DefaultSorting = wdSortByName .ShowHidden = False End With
Selection.ExtendMode = False
D'avance merci Eric
Bonjour !
'Eric' nous a écrit ...
Cela fonctionne correctement sauf dans le cas où je sélectionne toute la
ligne comme variable.
Votre système d'Extend successif est assez aberrant : vous vous
retrouvez avec un Extend (F8) de trop si la phrase ne contient
qu'un mot et vous récupérez alors une marque de paragraphe
(équivalent d'un 4ème Extend).
Utilisez MoveLeft en extension pour sélectionner clairement par phrase
Selection.MoveLeft Unit:=wdSentence, Count:=1, Extend:=wdExtend
et vous n'aurez plus aucun problème !
Anacoluthe
« La vraie question est : pourquoi sélectionner?
Et je ne connais pas la réponse. »
- Albert JACQUARD
'signet Nom
Selection.ExtendMode = False
Selection.Find.ClearFormatting
With Selection.Find
.Text = "campagne"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute
Selection.MoveLeft Unit:=wdCharacter, Count:=4
With Selection
' Collapse current selection to insertion point.
.Collapse
' Turn extend mode on.
.Extend
' Extend selection to word.
.Extend
'Etend à la ligne complète
.Extend
End With
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="Nom"
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
Cela fonctionne correctement sauf dans le cas où je sélectionne toute la ligne comme variable.
Votre système d'Extend successif est assez aberrant : vous vous retrouvez avec un Extend (F8) de trop si la phrase ne contient qu'un mot et vous récupérez alors une marque de paragraphe (équivalent d'un 4ème Extend). Utilisez MoveLeft en extension pour sélectionner clairement par phrase Selection.MoveLeft Unit:=wdSentence, Count:=1, Extend:=wdExtend et vous n'aurez plus aucun problème !
Anacoluthe « La vraie question est : pourquoi sélectionner? Et je ne connais pas la réponse. » - Albert JACQUARD
'signet Nom Selection.ExtendMode = False Selection.Find.ClearFormatting With Selection.Find .Text = "campagne" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue End With
Selection.Find.Execute Selection.MoveLeft Unit:=wdCharacter, Count:=4 With Selection ' Collapse current selection to insertion point. .Collapse ' Turn extend mode on. .Extend ' Extend selection to word. .Extend 'Etend à la ligne complète .Extend End With
With ActiveDocument.Bookmarks .Add Range:=Selection.Range, Name:="Nom" .DefaultSorting = wdSortByName .ShowHidden = False End With
Selection.ExtendMode = False
D'avance merci Eric
Eric
merci, ça fonctionne bien comme cela, et merci pour l'explication complémentaire
bonne réception Eric
"Anacoluthe" a écrit dans le message de news:Ok$
Bonjour !
'Eric' nous a écrit ...
Cela fonctionne correctement sauf dans le cas où je sélectionne toute la ligne comme variable.
Votre système d'Extend successif est assez aberrant : vous vous retrouvez avec un Extend (F8) de trop si la phrase ne contient qu'un mot et vous récupérez alors une marque de paragraphe (équivalent d'un 4ème Extend). Utilisez MoveLeft en extension pour sélectionner clairement par phrase Selection.MoveLeft Unit:=wdSentence, Count:=1, Extend:=wdExtend et vous n'aurez plus aucun problème !
Anacoluthe « La vraie question est : pourquoi sélectionner? Et je ne connais pas la réponse. » - Albert JACQUARD
'signet Nom Selection.ExtendMode = False Selection.Find.ClearFormatting With Selection.Find .Text = "campagne" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue End With
Selection.Find.Execute Selection.MoveLeft Unit:=wdCharacter, Count:=4 With Selection ' Collapse current selection to insertion point. .Collapse ' Turn extend mode on. .Extend ' Extend selection to word. .Extend 'Etend à la ligne complète .Extend End With
With ActiveDocument.Bookmarks .Add Range:=Selection.Range, Name:="Nom" .DefaultSorting = wdSortByName .ShowHidden = False End With
Selection.ExtendMode = False
D'avance merci Eric
merci, ça fonctionne bien comme cela, et merci pour l'explication
complémentaire
bonne réception
Eric
"Anacoluthe" <nopub_anacoluthe@Ouanadoo.fr> a écrit dans le message de
news:Ok$zAV7pEHA.3716@TK2MSFTNGP10.phx.gbl...
Bonjour !
'Eric' nous a écrit ...
Cela fonctionne correctement sauf dans le cas où je sélectionne toute la
ligne comme variable.
Votre système d'Extend successif est assez aberrant : vous vous
retrouvez avec un Extend (F8) de trop si la phrase ne contient
qu'un mot et vous récupérez alors une marque de paragraphe
(équivalent d'un 4ème Extend).
Utilisez MoveLeft en extension pour sélectionner clairement par phrase
Selection.MoveLeft Unit:=wdSentence, Count:=1, Extend:=wdExtend
et vous n'aurez plus aucun problème !
Anacoluthe
« La vraie question est : pourquoi sélectionner?
Et je ne connais pas la réponse. »
- Albert JACQUARD
'signet Nom
Selection.ExtendMode = False
Selection.Find.ClearFormatting
With Selection.Find
.Text = "campagne"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute
Selection.MoveLeft Unit:=wdCharacter, Count:=4
With Selection
' Collapse current selection to insertion point.
.Collapse
' Turn extend mode on.
.Extend
' Extend selection to word.
.Extend
'Etend à la ligne complète
.Extend
End With
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="Nom"
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
merci, ça fonctionne bien comme cela, et merci pour l'explication complémentaire
bonne réception Eric
"Anacoluthe" a écrit dans le message de news:Ok$
Bonjour !
'Eric' nous a écrit ...
Cela fonctionne correctement sauf dans le cas où je sélectionne toute la ligne comme variable.
Votre système d'Extend successif est assez aberrant : vous vous retrouvez avec un Extend (F8) de trop si la phrase ne contient qu'un mot et vous récupérez alors une marque de paragraphe (équivalent d'un 4ème Extend). Utilisez MoveLeft en extension pour sélectionner clairement par phrase Selection.MoveLeft Unit:=wdSentence, Count:=1, Extend:=wdExtend et vous n'aurez plus aucun problème !
Anacoluthe « La vraie question est : pourquoi sélectionner? Et je ne connais pas la réponse. » - Albert JACQUARD
'signet Nom Selection.ExtendMode = False Selection.Find.ClearFormatting With Selection.Find .Text = "campagne" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue End With
Selection.Find.Execute Selection.MoveLeft Unit:=wdCharacter, Count:=4 With Selection ' Collapse current selection to insertion point. .Collapse ' Turn extend mode on. .Extend ' Extend selection to word. .Extend 'Etend à la ligne complète .Extend End With
With ActiveDocument.Bookmarks .Add Range:=Selection.Range, Name:="Nom" .DefaultSorting = wdSortByName .ShowHidden = False End With