Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2985 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Trouvez le paragraphe d'un mot sous word

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Trouvez le paragraphe d'un mot sous word

n°1907718
Nicosuisse
Posté le 22-07-2009 à 17:33:48  profilanswer
 

Bonjour,
 
Je souhaite créer une maccro sous Excell qui m'ouve un Word, cherche un mot, et me dit a quel paragraphe il se trouve (si ce n'est pas possible, alors a quel page il est)
 
J'ai deja effectué la partie ouverture du word et recherche du mot, par contre je n'ai aucune piste pour trouver le numero de paragraphe associé ou la page correspondante.......
 
Si vous avez des idées, je suis plus que preneur.
 
Merci d'avance

mood
Publicité
Posté le 22-07-2009 à 17:33:48  profilanswer
 

n°1907788
SuppotDeSa​Tante
Aka dje69r
Posté le 22-07-2009 à 23:02:06  profilanswer
 

Tu entends quoi par paragraphe ?
 
La plus part des gens appuis sur Entrée pour faire un retour chariot, or, dans Word c'est un saut de paragraphe...
 
Donc ca risque de faire beaucoup de paragraphe


---------------
Soyez malin, louez entre voisins !
n°1907822
Nicosuisse
Posté le 23-07-2009 à 08:26:59  profilanswer
 

Ah oui....... d'ailleurs je fais partie de ces gens la....
 
Sinon ce que j'entendais par paragraphe c'etait la valeur du dernier titre renseigné, par exemple:
 
1 Explication  
     1.1 Mise en relief
La mise en relief de mon exemple passe par ce corps de texte
 
Ici le paragraghe dont je parlais correspondrait a: 1.1
Je ne souhaite pas renvoyer le nom du paragraphe, mais juste son numero.
 
Sinon, comme je le disais, si ce n'est pas possible, je me contenterais de la page....

n°1907866
SuppotDeSa​Tante
Aka dje69r
Posté le 23-07-2009 à 10:43:41  profilanswer
 

Re
 
Pour avoir le numéro de page de la selection en cours :
MsgBox Selection.Information(wdActiveEndPageNumber)
 
Ensuite pour faire une recherche dans un doc Word, j'avais deja repondu a cette question ici, jettes y un oeil


Message édité par SuppotDeSaTante le 23-07-2009 à 10:44:01

---------------
Soyez malin, louez entre voisins !
n°1907987
Nicosuisse
Posté le 23-07-2009 à 14:06:44  profilanswer
 

Merci, j'arrive effectivement à avoir le numéro de page.
 
Si vous avez des idées pour le paragraphe, dites le moi ^^

n°1908002
SuppotDeSa​Tante
Aka dje69r
Posté le 23-07-2009 à 14:22:20  profilanswer
 

Bah vu la maniere dont tu ecris, c'est assez chaud, ca veut dire remonter caractere par caractere jusqu'a trouver qqchose qui ressemble a TON systeme de paragraphe... En l'occurence, 1.1 ou 1
 
Ce qui fait que si tu as ecrit "1" dans le corp du paragraphe, ca sera detecter comme le paragraphe en lui meme. Ou alors il faut tester sur un chiffre, puis sur la police, gras etc. Seulement si tu mets toujours la meme mise en forme pour tes titres de paragraphes.
 
 
Sinon, dans Word pour ecrire normalement :
 
Paragraphe 1:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Shift + Entrée
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Shift + Entrée
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Entrée
Paragraphe 2:
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Etc.


Message édité par SuppotDeSaTante le 23-07-2009 à 14:26:19

---------------
Soyez malin, louez entre voisins !
n°1908020
pyrof
Posté le 23-07-2009 à 14:59:26  profilanswer
 

Bonjour,
 
Voila le code
 

Code :
  1. Selection.ExtendMode = True
  2. Selection.HomeKey unit:=wdStory
  3. num_para = Selection.Paragraphs.Count
  4. Selection.ExtendMode = False


 

n°1908021
pyrof
Posté le 23-07-2009 à 15:01:03  profilanswer
 

J'ai oublié de préciser que tous les paragraphes dans les tableaux seront comptabilisés
 

n°1908022
SuppotDeSa​Tante
Aka dje69r
Posté le 23-07-2009 à 15:03:33  profilanswer
 

pyrof  :??:    
 
As tu bien lu la problématique ??? :heink:
 
Deja avec ta procédure, si on appuis 7 fois sur la touche entrée le num_para renverra 6...  :o


Message édité par SuppotDeSaTante le 23-07-2009 à 15:04:02

---------------
Soyez malin, louez entre voisins !
n°1908037
SuppotDeSa​Tante
Aka dje69r
Posté le 23-07-2009 à 15:49:19  profilanswer
 

Quelque chose comme ca devrait le faire :

Code :
  1. Sub Nicosuisse()
  2. 'Saisir ton texte a chercher
  3. MonTexte = InputBox("Saisir le texte à chercher", "Recherche" )
  4. 'Cherche le texte et le selectionne
  5. With Selection.Find
  6.     .ClearFormatting
  7.     .Text = MonTexte
  8.     .Execute Forward:=True
  9. End With
  10. 'Recuper le numéro de VRAI paragraphe word
  11. NumParag = ActiveDocument.Range(Start:=1, End:=Selection.End).Paragraphs.Count
  12. 'Recupere le texte complet du paragraphe
  13. Parag = ActiveDocument.Paragraphs(NumParag).Range
  14. 'Regarde le premier caractere du paragraphe
  15. NParag = Left(Parag, 1)
  16. 'Tant que le premier caractere n'est pas numérique (gestion du TAB avec le Chr(9)) il remonte les paragraphes
  17. Do While IsNumeric(NParag) = False
  18.     NumParag = NumParag - 1
  19.     Parag = ActiveDocument.Paragraphs(NumParag).Range
  20.     NParag = Left(Parag, 1)
  21.     TabParag = Asc(Left(Parag, 1))
  22.     If TabParag = 9 Then NParag = Left(Right(Parag, Len(Parag) - 1), 1)
  23. Loop
  24. 'Une fois trouvé un numéro en debut de paragraphe précédent il le selectionne.
  25. ActiveDocument.Paragraphs(NumParag).Range.Select
  26. End Sub


 
 
Edit :
Avec un texte comme ca :

Citation :

1 toto   khllhk
1.1 bravo
 
Dslfjsdlvjndsmv tata dfcjnsdmlcvjnsdlmnk
Msdmsdkcmsd,lc
 
   
Msc,msdc,dmsl,
 
 1.2
 
Smdflvsdmnvlsdkn tata msdlfjcsdmljcdsmlj
 
 1.3
tata
 

et si je cherche tata, ca me revoit bien le numéro du paragraphe precedent, genre le 1er tata me selectionne "1.1 bravo", le second tata me selectionne "1.2" etc.


Message édité par SuppotDeSaTante le 23-07-2009 à 15:55:23

---------------
Soyez malin, louez entre voisins !
mood
Publicité
Posté le 23-07-2009 à 15:49:19  profilanswer
 

n°1908121
homepyrof
Posté le 23-07-2009 à 21:12:56  profilanswer
 

Bonsoir,
 
Nicosuise demande comment récupérer le numéro du paragraphe qui contient le mot de recherche
 

Code :
  1. Merci, j'arrive effectivement à avoir le numéro de page.
  2. Si vous avez des idées pour le paragraphe, dites le moi ^^


 
une fois le mot trouvé, le code que Pyrof (Homepyrof = Pyrof à la maison) donne bien le nombre de paragraphe de ce mot au début du document, donc le numéro du paragraphe.
 
Voilà
 

n°1908144
SuppotDeSa​Tante
Aka dje69r
Posté le 24-07-2009 à 01:50:08  profilanswer
 

Hello
 
Donc, tu n'as pas lu.
 
Etant donné qu'un utilisateur lambda de Word, pour aller a la ligne appuis sur la touche Entrée, et que Entrée sour Word = 1 Paragraphe, il ne retrouvera jamais le numéro de paragraphe comme Nicosuisse le numérote.
 
Rappel :

Nicosuisse a écrit :

Ah oui....... d'ailleurs je fais partie de ces gens la....
 
Sinon ce que j'entendais par paragraphe c'etait la valeur du dernier titre renseigné, par exemple:
 
1 Explication  
     1.1 Mise en relief
La mise en relief de mon exemple passe par ce corps de texte
 
Ici le paragraghe dont je parlais correspondrait a: 1.1


 
Donc si je garde cet exemple et qu'il recherche "Exemple" ca devrait lui ressortir 1.1, chose que pyrof (homepyrof au travail je suppose ;) )avec son code ne ressort pas, puisque ce code "ne sert qu'à" compter le nombre de fois ou un utilisateur lambda appuis sur Entrée. (a partir du curseur je te l'accorde)
 
Parcontre, le code de dje69r (a la maison ou au travail) rempli cette fonction.
 
Je ne dénigrais pas ce que tu as fait, c'est juste que tu n'as pas lu la problématique et donc que ta/tes réponses ne serviront pas a grand chose pour Nicosuisse.
 
Cordialement


Message édité par SuppotDeSaTante le 24-07-2009 à 02:01:52

---------------
Soyez malin, louez entre voisins !
n°1908156
pyrof
Posté le 24-07-2009 à 08:07:08  profilanswer
 

Bonjour,
 
Ok je n'avais tout vu,
maintenant comment sont générés les numéros  (1, 1.1)
 
1) saisis : ta macro fonctionne
2) automatiquement : (numération des styles) : ta macro ne devrait pas fonctionner. Dans ce cas  

Code :
  1. ActiveDocument.Range.ListFormat.ConvertNumbersToText


 
permet de transformer les numéros générés en vrai "texte"
 
 
 
 
 

n°1908182
Nicosuisse
Posté le 24-07-2009 à 09:27:24  profilanswer
 

Bonjour a tous,
Déjà, merci pour vos réponses, après le soucis c'est que ce n'est pas moi qui rédige les documents dans lesquel ma macro devrait effectuer ces recherches.... Ce qui fait que je ne peux prédire le fait que quelqu'un commence par un chiffre, ce qui empeche ta macro de fonctionner correctement Dje.
Ensuite la plupart des douments utilisent une saisie automatique des titres. Au départ quand j'ai poser la question, je pensais que word, dans les informations de selection pouvaient dire a quel titre le texte correspondait comme corp de texte. (j'avais basé ma reflexion sur le fait que lorsque l'on fait du scrolling on voit apparaitre a coté du numero de page le titre en haut de page.....)....
 
Enfin bref, le numéro de page fonctionne aussi pas mal, donc je pense je vais resté la dessus.
 
Merci pour tout

n°1908183
SuppotDeSa​Tante
Aka dje69r
Posté le 24-07-2009 à 09:31:41  profilanswer
 

Bah si ca ne commence pas par un chiffre, c'est que ton exemple n'etait pas démonstratif. Je suis parti sur ton exemple.
 
Sinon, comme dit plus haut, et comme le suggere pyrof (au boulot donc, :p ) tu peux definir en amont en fonction du style si c'est un titre ou pas, (faut il encore que la personne se serve correctement de Word) et en fonction donner le paragraphe (Ou numéro d'occurence de ce style).


---------------
Soyez malin, louez entre voisins !
n°1908195
pyrof
Posté le 24-07-2009 à 10:00:22  profilanswer
 

Et oui Pyrof au boulot  :sarcastic:  
 
Car mon travail depuis une vingtaine d'année est de faire des macros dans word  excel et d'autres logiciels
 
évidemment s'il n'y a pas une certaine rigueur dans les fichiers word, il sera bien difficile de faire du 100%
 
Une autre vision :
Si tes titres sont bien balisé, tu fais une table des matières
Tes mots tu les balises de façon à en faire un index
tout ça est possible dans word
 
Et après tu fais tu extrapoles la tables des matières et l'index
Y a du boulot .........
 
Bon courage

n°1908200
SuppotDeSa​Tante
Aka dje69r
Posté le 24-07-2009 à 10:18:31  profilanswer
 

pyrof a écrit :


Car mon travail depuis une vingtaine d'année est de faire des macros dans word  excel et d'autres logiciels

Ca n'aurait pas pu etre plus... Le bon vieux temps des macro excel 4....  :love:  
 

pyrof a écrit :

évidemment s'il n'y a pas une certaine rigueur dans les fichiers word, il sera bien difficile de faire du 100%

Comme souvent les gens utilisent word comme un bloc note ou on peut mettre du gras
 

pyrof a écrit :

Y a du boulot .........

+1
 
Sinon aussi je vois de plus en plus de personnes qui mettent des signets pour les titres. C'est pratique, table des matieres faite rapidement, et surtout atteindre le signet est un jeu d'enfant.
Mais dans tous les cas il faut que ton fichier soit un minimum rédiger correctement.
 
 
Sujet clos pour ma part.
 
Bonne journée les gars.


Message édité par SuppotDeSaTante le 24-07-2009 à 10:18:59

---------------
Soyez malin, louez entre voisins !
n°1926341
chimson
etudiant
Posté le 24-09-2009 à 11:37:10  profilanswer
 

Bonjour a tous  
 
j ai le même problème a résoudre par contre chez moi voici mon texte  
 
 
1 toto   khllhk  
1.1 bravo  
 
Dslfjsdlvjndsmv tata dfcjnsdmlcvjnsdlmnk  
Msdmsdkcmsd,lc  
........
 
1.1.2 exe..
     
Msc,msdc,dmsl,  
 
 2 ...
 
Smdflvsdmnvlsdkn tata msdlfjcsdmljcdsmlj  
 
 2.1 ....  
tata  
 
....
 
2.3.1 ...
 
 
Je dois copier le paragraphe dans une autre page Word si le mot tata figure dans  le paragraphe.
 
 
merci

n°1926369
SuppotDeSa​Tante
Aka dje69r
Posté le 24-09-2009 à 13:00:13  profilanswer
 

Le code que j'ai donné plus haut devrait fonctionner, je ne vois pas ou se situe le probleme ?


---------------
Soyez malin, louez entre voisins !
n°1926405
chimson
etudiant
Posté le 24-09-2009 à 15:30:38  profilanswer
 

mais chez moi ca ne marche pas  

n°1926492
SuppotDeSa​Tante
Aka dje69r
Posté le 24-09-2009 à 19:53:31  profilanswer
 

Bah normal, il faut l'adapter pour qu'elle te selectionne le paragraphe, puis te copier/colle ailleurs.
 
Mais normalement la procédure de recherche et de positionnement en debut de paragraphe devrait fonctionner.


---------------
Soyez malin, louez entre voisins !
n°1926597
chimson
etudiant
Posté le 25-09-2009 à 01:06:15  profilanswer
 


 
je ne suis pas du tout un programmeur VBA c est juste  
 
j ai juste besoin d'une aide  
 
merci  
 
Chimson

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Trouvez le paragraphe d'un mot sous word

 

Sujets relatifs
prog pour supprimer tous les caractères entre parenthèses WORD 2007[macro word]Ajouter automatiquement des balises à une liste de liens
WORD 2007 mis a jour champ dans zone de texteFermer fenetre sous Word
afficher un doc PDF ou word dans la même page HTMLImpact d'un changement de min word length sur recherche full text ?
[php][COM] objet com coté serveur (word)[VBAExcel Résolu] Copier coller de excel dans word
[word] Compter les lignes d'une page, savoir si une image est présenteSurligner une ligne d'un paragraphe au passage de la souris
Plus de sujets relatifs à : Trouvez le paragraphe d'un mot sous word


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR