Macro Word - Logiciels - Windows & Software
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?
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
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
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.
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.
Marsh Posté le 16-01-2007 à 10:02:23
Word et HTML?
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() |
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 ...
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...
Marsh Posté le 16-01-2007 à 16:02:33
brandtance a écrit : Merci vraiment de vos réponses! |
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?
Marsh Posté le 16-01-2007 à 16:08:11
brandtance a écrit : Merci vraiment de vos réponses! |
T'aurais pas un exemple précis à donner STP?
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 ?
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.
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.
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.
Marsh Posté le 17-01-2007 à 15:03:07
brandtance a écrit : Maintenant je comprends pourquoi vous avez du mal à comprendre...lol |
Non, l'histoire de Titre1,c'était pour clarifier le truc.Rassures toi, on a compris.C'est juste pour en être sûr
Marsh Posté le 17-01-2007 à 18:59:52
brandtance a écrit : phosphoreloaded |
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?
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
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..
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.
Marsh Posté le 18-01-2007 à 11:05:55
brandtance a écrit : phosphoreloaded |
En mode 'Nouvelle macro', tu appuies sur la touche Fin (éventuellement flèche droite en plus) et tu te retrouves en fin de ligne (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 ...
Marsh Posté le 15-01-2007 à 18:22:25
Bonjour,
Je dois faire une macro sous Word. Je vous montre dabord à quoi ressemble les fichiers :
Titre 1
Titre 2
Texte
Et je dois mettre le Titre 1 entre 2 balises HTML (ca cest bon). Ensuite je dois également mettre le Titre 2 entre 2 balises, mais le soucis, cest 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 jenregistre ma macro sur un doc ou le titre en a 2) jaurais une balise en plein milieu du Texte
Jai essayé dêtre clair mais je ne sais pas si je lai été Si vous avez des questions nhésitez pas !
Merci