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

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Macro Word

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Macro Word

n°2615285
brandtance
Posté le 15-01-2007 à 18:22:25  profilanswer
 

Bonjour,
Je dois faire une macro sous Word. Je vous montre d’abord à quoi ressemble les fichiers :
Titre 1
Titre 2
Texte
Et je dois mettre le Titre 1 entre 2 balises HTML (ca c’est bon). Ensuite je dois également mettre le Titre 2 entre 2 balises, mais le soucis, c’est que suivant les documents, le titre fait 1 ou 2 lignes…Puisque je fais ma macro au clavier ça me pose des soucis. Car si le titre 2 fait une ligne (et que j’enregistre ma macro sur un doc ou le titre en a 2) j’aurais une balise en plein milieu du Texte…
J’ai essayé d’être clair mais je ne sais pas si je l’ai été…Si vous avez des questions n’hésitez pas !
Merci

mood
Publicité
Posté le 15-01-2007 à 18:22:25  profilanswer
 

n°2615343
TAM136
Posté le 15-01-2007 à 19:43:59  profilanswer
 

Salut
 
Bloup, bloup, bloup. Tu m'as mis la tête bien profondément sous l'eau.Je dois avouer que je n'ai pas tout suivi.
Essayons de comprdendre. Tu as le titre 1 entre 2 balises, comme ça: <head><title>C'est un exemple</title>? Ton titre 2 est aussi entre deux balises mais sur deux lignes, comme ça?
<li><FONT COLOR="blue">Les déplacements</a></li><li><FONT COLOR="blue">En voiture</a></li>
Si j'ai bien compris, la balise qui est en gras va se retrouver au milieu du texte. C'est bien ça? Ce que je n'arrive pas à comprendre, c'est ce que tu cherches à obtenir?

n°2615437
TAM136
Posté le 15-01-2007 à 21:52:32  profilanswer
 

Re,
 
Si j'ai compris ce que tu souhaites, c'est insérer un saut de ligne
 
Sub Macro()
For i = 1 To 15
'15 si le texte fait 15 lignes
Selection.TypeText Text:="<BR>"
    Selection.MoveLeft Unit:=wdCharacter, Count:=2
    Selection.MoveDown Unit:=wdLine, Count:=1
    Next i
End Sub

n°2615463
SuppotDeSa​Tante
Aka dje69r
Posté le 15-01-2007 à 22:30:34  profilanswer
 

Bonsoir
 
Bien le bonsoir TAM136 et bonne année
 
Je pense que ce qu'il veut c'est detecter quelle longueur fait son titre2, puis l'inserer entre deux balises... Apres....
 
Cordialement

n°2615470
brandtance
Posté le 15-01-2007 à 22:36:32  profilanswer
 

Désolé de répondre aussi tardivement, mais ma connection faisait des caprices...En fait, je me suis mal expliqué, et j'ai réussi à avancer...
Ce que je veux, est écris la : http://forum.hardware.fr/hfr/Progr [...] 0294_1.htm
 
En tout cas, vraiment merci à tous !!
Tam ta solution n'est pas top car la longueur du fichier varie! De plus, puisqu'il y a un style Titre entre les deux Textes, les titres seront atteint par les balises.


Message édité par brandtance le 15-01-2007 à 22:40:29
n°2615604
TAM136
Posté le 16-01-2007 à 09:30:40  profilanswer
 

Re,
 
Tu écris dans le topic en lien:"J'aimerais réaliser une macro qui, à chaque début de ligne m'ajoute une balise <br>." C'set au début de chaque ligne ou uniquement avant le texte?Effectivement, avec ma cro, les titres seront atteints par les balises. Il faut donc remplacer Selection.MoveDown Unit:=wdLine, Count:=1 par Selection.MoveDown Unit:=wdLine, Count:=3 (toutes les 3 lignes) ou une autre donnée.
 
Salut dje, ça faisait un petit moment. Happy new year to you too.


Message édité par TAM136 le 16-01-2007 à 12:48:31
n°2615621
phosphorel​oaded
Posté le 16-01-2007 à 10:02:23  profilanswer
 

Word et HTML? :ouch:  :pfff:  :ange:  :o  [:argv23]

 

:non:

 


Bon sinon tu peux remplacer l'appui sur la touche Fin par le truc suivant:
tu fais rechercher '^p' (Marque de paragraphe dans Plus / Spécial) 1 fois puis annuler, un appui sur flèche droite et tu es en début de ligne.
Ca donne dans mon Word 2000:

Sub Test_Fin_Para()
'
' Test_Fin_Para Macro
' test
'
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.TypeText Text:="blabla"
End Sub

 

EDIT: si tu veux pas les titres (ton autre sujet dans Prog), tu recherches un style particulier ou bien pas (?) les styles Titre1 à 9, enfin je te laisse bidouiller la recherche du paragraphe qui t'intéresse. La marque de paragraphe appartient au texte/titre qui précède le début de ligne, c'est peut-être pas simple ...


Message édité par phosphoreloaded le 16-01-2007 à 10:05:08
n°2615776
brandtance
Posté le 16-01-2007 à 14:04:20  profilanswer
 

Merci vraiment de vos réponses!
Mais maintenant seul le sujet que j'ai posé dans prog m'interesse!
PHOSPHOrel oaded merci pour ta macro mais il faut que j'insere pour chaque ligne (ligne pas ligne de texte) jusqu'à la fin du document. Pas seulement pour les paragraphes...
Désolé d'être chiant! Je suis perdu...et même les FAQ ne m'aide pas trop...

n°2615881
phosphorel​oaded
Posté le 16-01-2007 à 16:02:33  profilanswer
 

brandtance a écrit :

Merci vraiment de vos réponses!
Mais maintenant seul le sujet que j'ai posé dans prog m'interesse!
PHOSPHOrel oaded merci pour ta macro mais il faut que j'insere pour chaque ligne (ligne pas ligne de texte) jusqu'à la fin du document. Pas seulement pour les paragraphes...
Désolé d'être chiant! Je suis perdu...et même les FAQ ne m'aide pas trop...


Hein? Un paragraphe tient sur une ligne si la page fait 3m de large, nan? Et c'est Word qui va à la ligne si la page est pas assez large mais dans ce cas tu ne veux pas insérer quoi que ce soit, n'est-il pas?
 
Appuie sur Ctrl-(étoile du clavier principal): ce sont bien les q| (marques de fin de paragraphe) que tu recherches?

n°2615889
TAM136
Posté le 16-01-2007 à 16:08:11  profilanswer
 

brandtance a écrit :

Merci vraiment de vos réponses!
Mais maintenant seul le sujet que j'ai posé dans prog m'interesse!
PHOSPHOrel oaded merci pour ta macro mais il faut que j'insere pour chaque ligne (ligne pas ligne de texte) jusqu'à la fin du document. Pas seulement pour les paragraphes...
Désolé d'être chiant! Je suis perdu...et même les FAQ ne m'aide pas trop...


 
T'aurais pas un exemple précis à donner STP?

mood
Publicité
Posté le 16-01-2007 à 16:08:11  profilanswer
 

n°2615909
brandtance
Posté le 16-01-2007 à 16:24:57  profilanswer
 

TAM136 a écrit :

T'aurais pas un exemple précis à donner STP?


 
Voici à quoi ressemble le fichier à la base : Sachant que Titre signifie que j'utilise les styles Word! Donc détectable en VBA grâce à : ActiveDocument.Styles(wdStyleHeading1) et ActiveDocument.Styles(wdStyleHeading2)
 
Donc le document est structuré ainsi :
Titre 1
 
Titre 2
 
blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
blablablablablablablablablablablablablabla
 
blablablablablablablablablablablablablablablablablablablablablablablablablablablabla
 
Titre 1
 
Titre 2
 
blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
 
J'ai donc réussi à obtenir ça à l'aide de macro :
 
<h1>Titre 1</h1>
 
<h2>Titre 2<h2>
 
blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
blablablablablablablablablablablablablabla
 
blablablablablablablablablablablablablablablablablablablablablablablablablablablabla
 
<h1>Titre 1</h1>
 
<h2>Titre 2<h2>
 
blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
 
Mais en plus faudrait que j'arrive à mettre des balise <br> à chaque ligne, vraiment toutes les lignes (pas que les saut de lignes) SAUF pour les titres.
 
J'espere avoir été clair ?

n°2615932
brandtance
Posté le 16-01-2007 à 16:53:21  profilanswer
 

phosphoreloaded
En fait ta macro pourrait être juste! mais le .Text = "^p" signifie fin de paragraphe! Et donc par conséquent, pas une fin de ligne...
Je ne trouve pas comment faire pour le dire en VBA.

n°2616560
TAM136
Posté le 17-01-2007 à 12:46:53  profilanswer
 

C'est ce que tu veux?
 
Titre 1  
 
Titre 2  
 
<br>blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablab<br>ablablablablablablablablablabla  
<br>blablablablablablablablablablablablablabla  
<br>
<br>blablablablablablablablablablablablablablablablablablablablablablablablablablablabla  
 
Titre 1  
 
Titre 2  
 
blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla  
blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla  
 
J'ai donc réussi à obtenir ça à l'aide de macro :  
 
<h1>Titre 1</h1>  
 
<h2>Titre 2<h2>  
 
<br>blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablab<br>lablablablablablablablablablabla  
<br>blablablablablablablablablablablablablabla  
 <br>
<br>blablablablablablablablablablablablablablablablablablablablablablablablablablablabla  
 
<h1>Titre 1</h1>  
 
<h2>Titre 2<h2>  
 
<br>blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablab<br>lablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla  
<br>blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla  
 
Soit le <br> est à la fin de la ligne, soit au début: oui, non?Par exemple, au lieu d'avoir:
<br>blablablablablablablablablablablablablablablablablablablablablablablablablablablabla  
on pourrait avoir
blablablablablablablablablablablablablablablablablablablablablablablablablablablabla<br>
Un truc de ce genre?  
 
Par ailleurs, quand tu écris
<h1>Titre 1</h1>
 
<h2>Titre 2<h2>  
 
<br>blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablab<br>lablablablablablablablablablabla  
<br>blablablablablablablablablablablablablabla  
 <br>
<br>blablablablablablablablablablablablablablablablablablablablablablablablablablablabla  
 
<h1>Titre 1</h1>
 
<h2>Titre 2<h2>  
 
je suppose que le titre 1, n'est pas le même dans les deux cas ou je me trompe.

n°2616578
brandtance
Posté le 17-01-2007 à 13:16:23  profilanswer
 

Maintenant je comprends pourquoi vous avez du mal à comprendre...lol
Alors effectivement le Titre n'est pas le même...J'ai mis 2 fois titre 1 car c'est l'effet de stye de Word qui s'appel Titre 1.
Ensuite, pr répondre à ta question, il faut que la balise <br> soit en début de ligne. et oui tu as juste, c'est ce que je veux.

n°2616684
TAM136
Posté le 17-01-2007 à 15:03:07  profilanswer
 

brandtance a écrit :

Maintenant je comprends pourquoi vous avez du mal à comprendre...lol
Alors effectivement le Titre n'est pas le même...J'ai mis 2 fois titre 1 car c'est l'effet de stye de Word qui s'appel Titre 1.
Ensuite, pr répondre à ta question, il faut que la balise <br> soit en début de ligne. et oui tu as juste, c'est ce que je veux.


 
Non, l'histoire de Titre1,c'était pour clarifier le truc.Rassures toi, on a compris.C'est juste pour en être sûr :D

n°2616927
TAM136
Posté le 17-01-2007 à 18:59:52  profilanswer
 

brandtance a écrit :

phosphoreloaded
Et donc par conséquent, pas une fin de ligne...
Je ne trouve pas comment faire pour le dire en VBA.


 
Re
 
A mon avis, il faut que tu passes par l'enregistreur pour déterminer avec exactitude ce que tu veux.
Tu peux tomber sur ça:
Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
Selection.MoveRight Unit:=wdCharacter, Count:=1
 
ou ça:
Selection.MoveDown Unit:=wdLine, Count:=1
 
Le problème est:
1/Une fois arrivé en fin de ligne, tu te retrouves au début de la ligne suivante (enfin, c'est mon avis)
2/Comment raccrocher le morceau de code puisque, rien dans la macro ne permet de distinguer le titre 1 du titre 2 et de connaitre la longueur de la chaîne de caractères?

n°2616930
brandtance
Posté le 17-01-2007 à 19:06:01  profilanswer
 

Ben moi j'arrive à detecter les titre 1 et 2 grâce a :
ActiveDocument.Styles(wdStyleHeading1)
 
J'ai pas trop compris ce que tu me dis...
En fait ce qu'il faudrait faire, c'est comme tu dis : aller à la fin de la ligne, ensuite, aller un cran à droite et mettre ta balise <br> tu fais une boucle et dans la boucle tu dis qu'il doit faire ça sauf quand le style c'est titre 1 et 2.
Mais je sais pas faire ça en VBA

n°2616945
brandtance
Posté le 17-01-2007 à 19:22:54  profilanswer
 

Ton système est pas mal.
Mais commet faire pour inserer ? je ne connais pas la fonction.
Car là il arrive devant chaque ligne. Il faut faire une boucle pour qu'il le fasse sur tout le document et tu mets SI ce n'est pas un Titre alors tu mets <br> Quelque chose dans le genre...mais puisque je connais pas le VBA..

n°2617245
TAM136
Posté le 18-01-2007 à 10:11:45  profilanswer
 

brandtance a écrit :

tu mets SI ce n'est pas un Titre alors tu mets <br> Quelque chose dans le genre...mais puisque je connais pas le VBA..


 
Re,
 
Je ne crois pas que ce soit possible mais je me trompe peut-être ou alors il faut une instruction qui fait comprendre que c'est un titre. Même avec ton instruction ActiveDocument.Styles(wdStyleHeading1) que je ne connais pas, ça ne me parait pas simple.Je pense qu'il faut partir sur une autre piste qui n'est pas simple pour autant, c'est chercher une chaine de caractères entre deux chaines de caractères. Il faut utiliser pour celà l'instruction Instr mais sincèrement, je ne vois pas comment faire.Pour ce qui est de la boucle, je pensais que ce serait possible avec For ....mais il y a cette histoire de détection des titres.

n°2617288
phosphorel​oaded
Posté le 18-01-2007 à 11:05:55  profilanswer
 

brandtance a écrit :

phosphoreloaded
En fait ta macro pourrait être juste! mais le .Text = "^p" signifie fin de paragraphe! Et donc par conséquent, pas une fin de ligne...
Je ne trouve pas comment faire pour le dire en VBA.


En mode 'Nouvelle macro', tu appuies sur la touche Fin (éventuellement flèche droite en plus) et tu te retrouves en fin de ligne :D (après tu regardes le code VBA que ça donne)
 
Bon par contre les If et les For, là ça va dépendre de ce que tu veux faire exactement à ton document ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Macro Word

 

Sujets relatifs
[Word]: Macro pour cacher paragrapheProbleme Macro Word
Word => help sur création macro svpMacro Excel Exporter Tableau de données au format image dans Word
Macro avec Wordlancement automatique de macro word
macro wordMacro Word pour mot en double
Macro, word 2000 et recupération de texteUn probleme de macro sous Word
Plus de sujets relatifs à : Macro Word


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