Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/01/2013, à 11:21

remixmaz

[Résolu] LibreOffice WRITER : recherche et numéros de pages

Bonjour,

J'utilise LibreOffice Writer et j'aimerais obtenir les numéros de page qui correspondent
aux résultats de ma recherche, ainsi qu'un extrait qui me permet, pour chaque résultat,
de voir le contexte d'apparition du mot que je cherche.
La fonction "mot suivant" est difficile à utiliser pour un document de 300 pages ..

Merci d'avance !

remixmaz

Dernière modification par remixmaz (Le 04/02/2013, à 11:09)

Hors ligne

#2 Le 28/01/2013, à 19:38

michcauch

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Bonsoir remixmaz

Je ne comprends pas vraiment ce que tu souhaites faire, mais peut-être que que l'extension altsearch est ce qu'il te faudrait.


Cordialement
Michel
___
Ubuntu 22.04 sur Clevo N141WU

Hors ligne

#3 Le 28/01/2013, à 19:47

remixmaz

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Merci beaucoup pour ta réponse.
Cette fonction est justement installée chez moi.
Cependant je n'arrive pas à l'utiliser pour ce que je veux faire.
Quand je cherche les occurrences d'un mot dans un document
de 300 pages, il y a une flèche qui permet
de passer à la suivante. Cela dit je trouve que c'est
très long. Ce serait beaucoup plus efficace
d'avoir une fonction qui permettrait de faire
une sorte de "grep" au sein de Writer
(n'afficher que les passages qui contiennent
le mot voulu),
en m'indiquant en même temps le numéro de page.

Hors ligne

#4 Le 28/01/2013, à 19:52

Blek85

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Bonjour,

Voici une petite fonction taillée sur mesure :

'---------------------------------------------------- ADLC, 28/01/2013
' Chercher une chaine de caractères dans un document texte.
' Pour chaque élément trouvé, indiquer :
' − le numéro de la page 
' − le contenu de la ligne où se trouve cette chaine
' Retourne un tableau t(x, 1) contenant ces informations.
'---------------------------------------------------------------------
function acTrouve(strCh as string, optional oDoc) as variant
dim oCurs as object, oCursV as object
dim oDsc as object, oTrouve as object, oElem
dim oPosDebut as object
dim nPage as integer, i as integer, buf as string
dim t(1,1), nbRet as integer

	if isMissing(oDoc) then oDoc = thisComponent
	oCursV = oDoc.currentController.viewCursor
	
	oDsc = oDoc.createSearchDescriptor
	oDsc.SearchString = strCh
	oDsc.SearchRegularExpression = false
	oTrouve = oDoc.findAll(oDsc)
	nbRet = oTrouve.count -1
	redim t(nbRet, 1)
	for i = 0 to nbRet
		oElem = oTrouve.getByIndex(i)	
		oCursV.gotoRange(oElem, false)
		nPage = oCursV.page
		t(i, 0) = nPage
		oCursV.gotoStartOfLine(false)
		oCursV.gotoEndOfLine(true)
		t(i, 1) = oCursV.string
	next
	acTrouve = t()
end function

et un exemple pour l'utiliser :

sub main()
dim t2dim, i as integer, buf as string
const mots = "titre"

	t2dim = acTrouve(mots, thisComponent)
	buf = "Résultat de recherche de """ & mots & """ :" & chr(13)
	for i = 0 to uBound(t2dim(), 1)
		buf = buf & "p. " & t2dim(i,0) _
			& " : " & t2dim(i, 1) & chr(13)
	next
	msgBox buf, 64, "Test function acTrouve" & space(22)
end sub

Le tout à insérer bien entendu dans un module de macro Basic.
Pour toutes questions complémentaires sur les macros Basic pour AOO et dérivés, voir ma signature.


CM MSI B75A-G43 (MS-7758) / Intel G2030 3 GHz / 4 Go Kingston DDR3 1333 MHz / NVIDIA GT620 / 2 HD 500 Go
Macros et API Apache OpenOffice 4.1.2 sous Xubuntu Voyager 14.04.04

Hors ligne

#5 Le 28/01/2013, à 20:32

remixmaz

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Un grand merci pour votre réponse !
C'est bien cela que je voulais.
Hélas, je ne suis qu'un novice et
après avoir essayé d'insérer
le programme dans un module,
la macro ne fonctionne pas.
Je ne fais sans doute pas ce qu'il faut.
Je n'ai fait qu'un copier coller !
Il y a deux fonctions qui apparaissent :
main et acTrouve. Ce n'est sans doute
déjà pas normal. Quand je clique sur l'une
ou l'autre, évidemment ça ne marche pas ...

Hors ligne

#6 Le 28/01/2013, à 23:18

Blek85

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Il y a deux fonctions qui apparaissent : main et acTrouve.
Ce n'est sans doute déjà pas normal.

Si, c'est normal.

main est la procécure principale. Elle fait appel à la fonction acTrouve
en lui transmettant des arguments.
Dans la ligne

const mots = "titre"

vous devez remplacer "titre" par le mot ou la suite de mots à rechercher.

Ensuite c'est la macro main qu'il faut exécuter.


A cette adresse : Documentation Basic téléchargez le PDF
qui correspond au titre : "Introduction aux macros et au Basic" pour en savoir un peu plus sur le B.A.-BA des macros.

Comme apparemment vous n'avez jamais touché aux macros,
les tâtonnements sont tout à fait naturels.

Dernière modification par Blek85 (Le 28/01/2013, à 23:23)


CM MSI B75A-G43 (MS-7758) / Intel G2030 3 GHz / 4 Go Kingston DDR3 1333 MHz / NVIDIA GT620 / 2 HD 500 Go
Macros et API Apache OpenOffice 4.1.2 sous Xubuntu Voyager 14.04.04

Hors ligne

#7 Le 31/01/2013, à 19:49

remixmaz

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Bonjour,

Un grand merci pour votre réponse.

J'ai suivi vos conseils mais malheureusement je tâtonne encore.
Quand je clique sur acTrouve, j'obtiens ce message d'erreur :

"Une erreur de structure de script s'est produite lors de l'exécution du
script Standard.Module1.acTrouve" de Basic.

Message : wrong number of parameters!"

Si je clique sur main, ce n'est pas mieux :

"Valeur ou type de donnée incorrect(e).
Index hors de la plage définie"

Je voulais savoir ce que vous en pensiez.

Si cela est possible, ce serait bien également d'obtenir
une fonction qui demanderait le mot dans une boîte
de dialogue. En effet j'ai l'intention de l'installer
sur l'ordinateur de quelqu'un encore plus novice que moi.

Bien à vous,

remixmaz

Hors ligne

#8 Le 01/02/2013, à 09:32

Blek85

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Bonjour remixmaz

remixmaz a écrit :

Quand je clique sur acTrouve [...]

Non, non et non !
J'ai écrit

c'est la macro main qu'il faut exécuter.

Je vous ai aussi donné un lien vers un PDF qui vous permettrait d'en savoir un minimum sur la manière de stocker et d'utiliser une macro. hmm

Si je clique sur main, ce n'est pas mieux

Si je trouve comment joindre un document contenant cette macro sur ce site, je le ferai.

Bien cordialement, Alain


P.S. − Je n'ai pas trouvé comment joindre un document à ce message.
Je vous invite donc à poser votre question sur un forum spécialisé : Macros et API pour AOO et Libo en ayant bien lu les règles de postage avant, notamment sur la syntaxe du titre.
Pour vous éviter les foudres des vilains modos, je vous propose ce titre :
[Writer] Pages des éléments trouvés après recherche
Là bas, je pourrai vous fournir un fichier complet. cool

Dernière modification par Blek85 (Le 01/02/2013, à 10:06)


CM MSI B75A-G43 (MS-7758) / Intel G2030 3 GHz / 4 Go Kingston DDR3 1333 MHz / NVIDIA GT620 / 2 HD 500 Go
Macros et API Apache OpenOffice 4.1.2 sous Xubuntu Voyager 14.04.04

Hors ligne

#9 Le 01/02/2013, à 11:23

remixmaz

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Bonjour,

Je viens de poster mon message à l'adresse suivante :

http://forum.openoffice.org/fr/forum/vi … =8&t=37240

J'avais déjà parcouru le PDF avant le message de hier soir ..

Merci beaucoup pour votre attention.

remixmaz

Hors ligne

#10 Le 02/02/2013, à 12:34

remixmaz

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Bonjour,

Vous allez être content, cette fois j'y suis arrivé tout seul !
J'ai réussi à exporter la macro du document et même à lui
rajouter un icône dans la barre d'outil.
La macro fonctionne à merveille pour tous
mes documents.

Le seul problème est que quand je tape un mot
qui n'existe pas dans le document,
je reçois un message me parlant d'une erreur de
syntaxe : "la matrice doit être redimensionnée".

indexMaxElem = uBound(t2dim(), 1)

Normalement, je devrais avoir une fenêtre
m'indiquant "pas trouvé".

Bien à vous,

remixmaz

Hors ligne

#11 Le 02/02/2013, à 14:36

remixmaz

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Bizarre, après avoir redémarré la machine, le problème a disparu.

En testant la fonction, je me suis rendu compte que l'affichage
d'un document Calc (pour les résultats supérieurs à 20) ne fonctionnait pas pour ma
macro exportée, mais fonctionne en revanche très bien
dans le document que vous m'avez transmis.

Dans les autres documents, je reçois le message
d'erreur "variable non définie"...

Hors ligne

#12 Le 02/02/2013, à 15:03

remixmaz

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Je n'avais pas rajouté la fonction acTraceCreCalc, cela ne risquait pas de fonctionner !

Hors ligne

#13 Le 02/02/2013, à 18:56

Blek85

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Bonjour

Comme je n'assure pas de permanence big_smile je viens juste de voir vos trois messages d'un coup.

remixmaz a écrit :

Vous allez être content, cette fois j'y suis arrivé tout seul !

Un peu que je suis content !
Que ma "recette" est bonne fait partie des choses que j'aime entendre.

remixmaz a écrit :

Le seul problème est que quand je tape un mot qui n'existe pas dans le document, je reçois un message me parlant d'une erreur de
syntaxe : "la matrice doit être redimensionnée".

Etes-vous certain d'utiliser la bonne version, c'est-à-dire celle fournie dans le document que j'ai joint à mon message sur le site mentionné ci-avant ? Je suis presque sûr que non.
Dans le doc que je vous ai fourni, si je cherche bateau, j'ai en retour une fenêtre dont le titre est : Test function acTrouve et le texte "bateau" pas trouvé !

remixmaz a écrit :

ne fonctionnait pas pour ma macro exportée, mais fonctionne en revanche très bien dans le document que vous m'avez transmis.

La copie des modules de macros est incomplète.

remixmaz a écrit :

Je n'avais pas rajouté la fonction acTraceCreCalc, cela ne risquait pas de fonctionner !

Donc, finalement, tout va bien ? Et vous allez pouvoir baliser [Résolu] ici et là-bas ? wink

Dernière modification par Blek85 (Le 02/02/2013, à 19:01)


CM MSI B75A-G43 (MS-7758) / Intel G2030 3 GHz / 4 Go Kingston DDR3 1333 MHz / NVIDIA GT620 / 2 HD 500 Go
Macros et API Apache OpenOffice 4.1.2 sous Xubuntu Voyager 14.04.04

Hors ligne

#14 Le 04/02/2013, à 11:05

remixmaz

Re : [Résolu] LibreOffice WRITER : recherche et numéros de pages

Oui, finalement tout va bien ! Un grand merci pour votre aide.

Je laisse le lien pour les gens intéressés par cette fonction :

http://forum.openoffice.org/fr/forum/vi … =3&t=37239

C'est la discussion [Résolu] Pages des éléments trouvés après recherche
dans la section Traitement de texte.

Hors ligne