OVH Cloud OVH Cloud

VBA WORD pages, lignes, colonnes

5 réponses
Avatar
Michel41
Bonsoir

Word affiche dans la barre d'état (displaystatusbar) : les N° physiques de
la page, de la colonne et de la ligne : il s'agit de la position physique du
curseur qui est différente de sa position plus virtuelle dans un document en
général liée à la structure du document, à la sélection d'une phrase ou d'un
mot ou d'une cellule d'un tableau....
Il exite une fonction pour calculer le nombre de pages :
N=MonDoc.ComputeStatistics(wdStatisticPages)

Existe t'il un moyen semblable pour obtenir : la page courante, le N° de
colonne et le N° de ligne réels physiques du curseur ? Puisque manifestement
ces valeurs sont calculés par Word qui les affiche dans la barre d'état. La
barre d'état de Word ne fonctionne pas totalement comme celle d'Excel !

Merci.@+
M41

5 réponses

Avatar
Jean-Guy Marcil
Michel41 was telling us:
Michel41 nous racontait que :

Bonsoir

Word affiche dans la barre d'état (displaystatusbar) : les N°
physiques de la page, de la colonne et de la ligne : il s'agit de la
position physique du curseur qui est différente de sa position plus
virtuelle dans un document en général liée à la structure du
document, à la sélection d'une phrase ou d'un mot ou d'une cellule
d'un tableau.... Il exite une fonction pour calculer le nombre de pages :
N=MonDoc.ComputeStatistics(wdStatisticPages)

Existe t'il un moyen semblable pour obtenir : la page courante, le N°
de colonne et le N° de ligne réels physiques du curseur ? Puisque
manifestement ces valeurs sont calculés par Word qui les affiche dans
la barre d'état. La barre d'état de Word ne fonctionne pas totalement
comme celle d'Excel !


Amuse-toi avec ceci:

Sub CurPosition()

With Selection
MsgBox .Information(wdActiveEndPageNumber), vbInformation, "# de page"
MsgBox .Information(wdFirstCharacterLineNumber), vbInformation, "# de
ligne"
MsgBox .Information(wdFirstCharacterColumnNumber), vbInformation, "# de
colonne"
End With

End Sub

Note qu'il y a aussi
Selection.Information(wdActiveEndAdjustedPageNumber)
qui renvoi le numéro de page selon la numérotation en cours (utile quand on
veut le numéro quand il y a des "recommencer à" dans les sections et non le
numéro de page absolu).

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org

Avatar
ClémentMarcotte
Bonjour,

Amuse-toi avec ceci:

Sub CurPosition()

With Selection
MsgBox .Information(wdActiveEndPageNumber), vbInformation, "# de page"
MsgBox .Information(wdFirstCharacterLineNumber), vbInformation, "# de
ligne"
MsgBox .Information(wdFirstCharacterColumnNumber), vbInformation, "#
de

colonne"
End With

End Sub

Note qu'il y a aussi
Selection.Information(wdActiveEndAdjustedPageNumber)
qui renvoi le numéro de page selon la numérotation en cours (utile quand
on

veut le numéro quand il y a des "recommencer à" dans les sections et non
le

numéro de page absolu).

--


Et puis cela c'est sans compter que les instructions doivent être modifiées
quand le document est divisé en sections ;-)

Avatar
Michel41
Bonsoir et Merci

En fait j'ai écrit un module de classe qui analyse la structure de textes de
façon variable selon une macro de pilotage, pour tranférer des infos sur
Excel.
L'analyse se fait par sections mais certaines sections étant
multicolonnaires, il n'y a plus de correspondance entre la position
physique du curseur et sa position sur un mot, d'une ligne, d'une colonne ;
les lignes de la 2è colonne sont numérotées après celles de la première ce
qui fait que les caractères d'une même ligne physique (position curseur
comme dans les vieux basics) ne sont pas sur la même ligne logique
structurelle.

Le document de départ est un pdf transformé en Word par un logiciel et je me
demande si avec ces convertisseurs on ne risque pas d'avoir analogiquement
les mêmes problèmes au niveau structurel des textes qu'avec l'OCR au niveau
de la reconnaissance des formes de caractères.

Avez-vous déjà fait une double conversion Word>pdf>Word et observé des
modifications de la structure initiale : le document initial que je traite
est manifestement une série de tableaux (1 par page, au milieu d'autres
sections à identifier aussi) que le convertisseur a transformé en
présentation multicolonne.

@+
M.41

"ClémentMarcotte" a écrit dans le message de
news:
Bonjour,

Amuse-toi avec ceci:

Sub CurPosition()

With Selection
MsgBox .Information(wdActiveEndPageNumber), vbInformation, "# de
page"
MsgBox .Information(wdFirstCharacterLineNumber), vbInformation, "# de
ligne"
MsgBox .Information(wdFirstCharacterColumnNumber), vbInformation, "#
de

colonne"
End With

End Sub

Note qu'il y a aussi
Selection.Information(wdActiveEndAdjustedPageNumber)
qui renvoi le numéro de page selon la numérotation en cours (utile quand
on

veut le numéro quand il y a des "recommencer à" dans les sections et non
le

numéro de page absolu).

--


Et puis cela c'est sans compter que les instructions doivent être
modifiées
quand le document est divisé en sections ;-)





Avatar
Anacoluthe
Bonjour !

'Michel41' nous a écrit ...
Avez-vous déjà fait une double conversion Word>pdf>Word et observé des
modifications de la structure initiale


Pas tout compris le pourquoi du comment de la chose mais c'est sûr
que quels que soient les outils de conversions utilisés le résultat
ne peut manquer d'être surprenant et très décevant. De part la
nature même du rôle de ces formats, un pdf n'est /jamais/ l'exacte
reproduction d'un doc et un doc n'est /jamais/ l'exacte reproduction
d'un pdf. Le pdf n'est pas un format de traitement de texte et le
doc n'est pas un format de description de page.

Pensez par exemple qu'un même doc peut donner deux résultats
totalement différents dans Word selon deux imprimantes par défaut
différentes !

Alors avec les pdf eux-mêmes paramétrables de mille manières...

C'est exactement comme une traduction : traduisez un texte
français>chinois>français et regardez le résultat !

Anacoluthe
« Traduire : transvaser un liquide d'un vase à col large
dans un vase à col étroit. Il s'en perd toujours. »
- Victor HUGO

Avatar
Michel41
Bonjour

Pas très compliqué sur le principe en fait :

Un module de classe fait une analyse de structure et met a disposition des
outils d'extraction dans un texte Word (ou ex pdf) quelconque
Une des propriétés de ce module est d'avoir un n° de version testable avec
une compatibilité ascendante
Une macro dans un module classique utilise cet objet pour extraire in fine
les données d'un type de texte Word donné après avoir vérifié sa
compatibilité avec la version du module de classe
On pourrait envisager même que cette macro choisisse la méthode la plus
adaptée résultant de l'analyse faite par le module de classe, par un
algorithme VBA simulant un moteur d'inférences à chaînage avant (IA) :

Do
A=True
If...Then...:Aúlse
If...Then...:Aúlse
If...Then...:Aúlse
If...Then...:Aúlse
...
Loop Until A

Intérêt : le module de classe comme le module classique sont im/exportables
donc on importe 2 modules dans un document Word et on fait une extraction
Intérêt : le module de classe peut évoluer et grossir (versions compatibles)
mais on a pas a réinventer la poudre à chaque fois puisqu'il suffit de
rajouter des fonctionnalités ou lier des fonctionnalités déjà existantes
(modification superficielle) : pour un module de macros classiques lié à
chaque type de document, il n'y a qu'un module de classe nécessaire, celui
de la dernière version
Intérêt : c'est le module de classe qui gère l'ouverture/fermeture d'Excel
et la création du document Excel ; Excel devient transparent
Intérêt : les documents sources pdf ou Word peuvent être très ciblés
(professionnels par exemple), faiblement évolutifs dans leur structure mais
énormément dans leurs contenus ; ceci permet d'utiliser la flexibilité et la
puissance de calcul d'Excel (sur des données textuelles connues ou
numériques) sur des données évolutives présentées de la même façon (sur
Excel, un module de classe générique et un module de macros classiques peut
là à nouveau automatiser la manip)
Intérêt : l'outil peut aussi s'adapter à une ou plusieurs zones
sélectionnées de texte, dans le contexte d'une analyse globale du document

Contrainte : si le document d'origine est pdf, il faut toujours utiliser le
même logiciel de conversion avec le même paramétrage

@+
M41



"Anacoluthe" a écrit dans le message de news:

Bonjour !

'Michel41' nous a écrit ...
Avez-vous déjà fait une double conversion Word>pdf>Word et observé des
modifications de la structure initiale


Pas tout compris le pourquoi du comment de la chose mais c'est sûr
que quels que soient les outils de conversions utilisés le résultat
ne peut manquer d'être surprenant et très décevant. De part la
nature même du rôle de ces formats, un pdf n'est /jamais/ l'exacte
reproduction d'un doc et un doc n'est /jamais/ l'exacte reproduction
d'un pdf. Le pdf n'est pas un format de traitement de texte et le
doc n'est pas un format de description de page.

Pensez par exemple qu'un même doc peut donner deux résultats
totalement différents dans Word selon deux imprimantes par défaut
différentes !

Alors avec les pdf eux-mêmes paramétrables de mille manières...

C'est exactement comme une traduction : traduisez un texte
français>chinois>français et regardez le résultat !

Anacoluthe
« Traduire : transvaser un liquide d'un vase à col large
dans un vase à col étroit. Il s'en perd toujours. »
- Victor HUGO