[VB6 -> VBA]Savoir où est la sélection sur une page Word en vue Écran [Résolu]

pjouv 5 Messages postés samedi 12 novembre 2011Date d'inscription 6 mai 2013 Dernière intervention - 22 avril 2013 à 14:34 - Dernière réponse :  Utilisateur anonyme
- 6 mai 2013 à 20:53
Bonjour.
Je suis sur Windows XP et Office 2010.
J’utilise plusieurs macros VBA qui me permettent de rechercher dans mes textes des éléments particuliers par Selection.Find.Execute.
Le problème est qu’après la recherche le texte est souvent masqué à demi, en haut ou en bas de la fenêtre, ce qui le rend illisible.
En vue Normal (wdNormalView), j’y arrive bien en réduisant la sélection, puis en la rétablissant, ce qui la remet dans la page, puis en faisant défiler comme souhaité.
[Code :
If Selection.Information(wdVerticalPositionRelativeToTextBoundary) = -1 Then
Set SelRa = Selection.Range
' Force la fenêtre à afficher la sélection :
Selection.MoveLeft Unit:=wdCharacter, Count:=1
SelRa.Select
Set SelRa = Nothing
ActiveWindow.ActivePane.LargeScroll Down:=1
Do While Selection.Information(wdVerticalPositionRelativeToTextBoundary) < 100
ActiveWindow.ActivePane.SmallScroll up:=1
Loop
End If
Fin de code]
Je voudrais maintenant pouvoir faire la même chose en vue Écran (wdWebView) mais l’information wdVerticalPositionRelativeToTextBoundary ne fonctionne pas ici.
Question : quelqu’un sait-il comment savoir, en vue Écran (vue « Web » dans la version anglaise de 2010), où se trouve le texte sélectionné dans la fenêtre – s'il est en haut, en bas, s’il est apparent ou non ?
Merci pour votre aide.
Pjouv
Afficher la suite 

9 réponses

Répondre au sujet
pjouv 5 Messages postés samedi 12 novembre 2011Date d'inscription 6 mai 2013 Dernière intervention - 6 mai 2013 à 17:06
+3
Utile
Bonjour.
Je me réponds à moi-même car j’ai fini par trouver la solution à mon problème d’affichage : c’est ActiveWindow.GetPoint.
Pour le code cf. http://www.vbfrance.com/codes/REPOSITIONNER-SELECTION-DANS-FENETRE-WORD_55130.aspx
Merci.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de pjouv
Utilisateur anonyme - 22 avril 2013 à 20:16
0
Utile
Bonjour,

Dans l'aide de VBA pour Word

Référence du développeur Word
Selection.End, propriété
Commenter la réponse de Utilisateur anonyme
pjouv 5 Messages postés samedi 12 novembre 2011Date d'inscription 6 mai 2013 Dernière intervention - 22 avril 2013 à 20:29
0
Utile
Bonsoir.
Merci pour votre réponse.
Selection.End me donne la position absolue de la sélection dans le texte, mais ne dit pas si cette sélection est visible ou non dans la fenêtre ouverte, si elle est en haut, en bas…
Commenter la réponse de pjouv
Utilisateur anonyme - 22 avril 2013 à 21:36
0
Utile
Bonjour,

si elle est en haut, en bas


Franchement !

Je prends le texte suivant directement de l'aide de VBA pour Word, à Selection.Start pour faire changement. Mais c'est moi qui est découragé et qui souligne.

Début de copie:

La position de début fait référence à la position du caractère la plus proche du début de l'article

Fin de copie

Donc avec Selection.Start, tu as la position du premier caractère en nombre de caractères depuis le début du document.

Avec Selection.End, tu as la position du dernier caractère sélectionné en nombre de caractères depuis le début du document.

Avec un peu d'intelligence tu devrais être capable de déduire si tu es près du début ou près de la fin.

Et puis, l'objet selection te permet de placer ton point d'insertion (curseur) à l'endroit où tu veux.
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 22 avril 2013 à 21:39
0
Utile
Et puis avec Selection.Extend et Selection.Collapse tu peux augmenter/réduire ta selection à l'écran.
Commenter la réponse de Utilisateur anonyme
pjouv 5 Messages postés samedi 12 novembre 2011Date d'inscription 6 mai 2013 Dernière intervention - 22 avril 2013 à 22:34
0
Utile
Ne nous énervons pas.
Je crois que tu ne comprends pas ce que je veux faire.
Sans doute que je ne suis pas clair ?
Je ne cherche pas à savoir quelle est la position du caractère dans le texte (son numéro d’ordre, que me donne effectivement les Selection.Start, .End etc.)
Je cherche à ce que mon code puisse connaître la position de la sélection à l’intérieur de la fenêtre, encore une fois si elle est en haut, en bas, ou si elle est cachée.
Tu es d’accord qu’il y a un ascenseur à droite de la fenêtre qui permet de faire défiler le texte ?
Donc, sans changer la valeur de ma sélection, je peux déplacer la sélection vers le haut, vers le bas, voire la faire disparaître si je sors de la fenêtre. Les valeurs de Selection.Start et .End resteront les mêmes quelle que soit la position de la sélection dans la fenêtre. Elles ne me sont donc d’aucune aide pour ce que je veux faire.
Comprends-tu maintenant ?
Merci.
Commenter la réponse de pjouv
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 6 mai 2013 à 19:04
0
Utile
Bonjour,
Je ne travaille pas avec Word du tout, mais l'ai sur ma machine et viens d'y jeter un petit coup-d'oeil :
Il me semble (je dis bien "me semble") que ceci devrait suffire :
Selection.Range.Select

A moins que j'aie mal compris le problème.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
pjouv 5 Messages postés samedi 12 novembre 2011Date d'inscription 6 mai 2013 Dernière intervention - 6 mai 2013 à 20:15
0
Utile
Bonsoir.
Non, cet ordre va sélectionner une plage du texte, mais ne gère pas sa position dans la fenêtre. Word décide de vous l’afficher un peu où il veut, en haut ou en bas de la fenêtre, selon ses critères…
Commenter la réponse de pjouv
Utilisateur anonyme - 6 mai 2013 à 20:53
0
Utile
Bonjour,

Tu peux toujours jeter un œil là-dessus. C'est en C aiguisé, mais il y a un convertisseur C aiguisé sur ce site; et un convertisseur autonome C aiguisé VB.net écrit en VB.net ici.
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.