Macro Word

Macro Word - Logiciels - Windows & Software

Marsh Posté le 15-01-2007 à 18:22:25    

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

Reply

Marsh Posté le 15-01-2007 à 18:22:25   

Reply

Marsh Posté le 15-01-2007 à 19:43:59    

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?

Reply

Marsh Posté le 15-01-2007 à 21:52:32    

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

Reply

Marsh Posté le 15-01-2007 à 22:30:34    

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

Reply

Marsh Posté le 15-01-2007 à 22:36:32    

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
Reply

Marsh Posté le 16-01-2007 à 09:30:40    

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
Reply

Marsh Posté le 16-01-2007 à 10:02:23    

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
Reply

Marsh Posté le 16-01-2007 à 14:04:20    

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...

Reply

Marsh Posté le 16-01-2007 à 16:02:33    

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?

Reply

Marsh Posté le 16-01-2007 à 16:08:11    

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?

Reply

Marsh Posté le 16-01-2007 à 16:08:11   

Reply

Marsh Posté le 16-01-2007 à 16:24:57    

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 ?

Reply

Marsh Posté le 16-01-2007 à 16:53:21    

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.

Reply

Marsh Posté le 17-01-2007 à 12:46:53    

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.

Reply

Marsh Posté le 17-01-2007 à 13:16:23    

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.

Reply

Marsh Posté le 17-01-2007 à 15:03:07    

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

Reply

Marsh Posté le 17-01-2007 à 18:59:52    

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?

Reply

Marsh Posté le 17-01-2007 à 19:06:01    

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

Reply

Marsh Posté le 17-01-2007 à 19:22:54    

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..

Reply

Marsh Posté le 18-01-2007 à 10:11:45    

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.

Reply

Marsh Posté le 18-01-2007 à 11:05:55    

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 ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed