OVH Cloud OVH Cloud

Mise en page par macro

6 réponses
Avatar
Jean-Daniel Gallay
Bonjour.
J'ai une fichier très long (Obtenu par transfer RS232 via Hyper Terminal)
que je met en page avec la macro suivante:
Selection.MoveRight Unit:=wdCharacter, Count:=70
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.TypeParagraph
Selection.MoveRight Unit:=wdCharacter, Count:=70
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
etc.
La macro est très longue et je dois l'exécuter plussieur fois pour arriver à
la fin du fichier.

Il y a surement un moyen plus court pour répéter le bloc de 14 lignes
jusqu'à la fin du fichier, mais je n'y arrive pas .

Quelqu'un peut-il me donner le bon tuyau??

Merci d'avance
gallay jd

6 réponses

Avatar
AB
Bonjour,
Je n'ai pas très bien compris ce que tu veux obtenir. Peut-être pourrais-tu
t'expliquer plus clairement ?
Concernant ta macro, tu peux sans doute déjà la simplifier en utilisant des
boucles plutôt que de répéter la même instruction n fois.
Mais les experts en VBA vont sûrement trouver mieux.
AB

"Jean-Daniel Gallay" a écrit dans le message de news:
42b1a0e1$
Bonjour.
J'ai une fichier très long (Obtenu par transfer RS232 via Hyper Terminal)
que je met en page avec la macro suivante:
Selection.MoveRight Unit:=wdCharacter, Count:p
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.TypeParagraph
Selection.MoveRight Unit:=wdCharacter, Count:p
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
etc.
La macro est très longue et je dois l'exécuter plussieur fois pour arriver
à la fin du fichier.

Il y a surement un moyen plus court pour répéter le bloc de 14 lignes
jusqu'à la fin du fichier, mais je n'y arrive pas .

Quelqu'un peut-il me donner le bon tuyau??

Merci d'avance
gallay jd



Avatar
Marc
Bonjour

une façon simple serait la suivante: créer un subroutine doit() qui contient
toutes vos instructions et l'appeler 14 fois avec la "macro" DoitAll :

'______________________________
Sub DoitAll()
'
' Macro enregistrée le 2005-05-31 par Marc
'
Dim ctr As Integer
ctr = 0

Do
Call doit

Loop Until ctr = 14

End Sub
'_________________________________
Sub doit()
'
' Doit Macro
' Macro enregistrée le 2005-05-31 par Marc
'
Selection.MoveRight Unit:=wdCharacter, Count:p
'etc toutes les instructions que vous voulez répéter 14 fois.....
'etc

End Sub
'______________________________________

Marc

"AB" wrote in message
news:
Bonjour,
Je n'ai pas très bien compris ce que tu veux obtenir. Peut-être
pourrais-tu t'expliquer plus clairement ?
Concernant ta macro, tu peux sans doute déjà la simplifier en utilisant
des boucles plutôt que de répéter la même instruction n fois.
Mais les experts en VBA vont sûrement trouver mieux.
AB

"Jean-Daniel Gallay" a écrit dans le message de
news: 42b1a0e1$
Bonjour.
J'ai une fichier très long (Obtenu par transfer RS232 via Hyper Terminal)
que je met en page avec la macro suivante:
Selection.MoveRight Unit:=wdCharacter, Count:p
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.TypeParagraph
Selection.MoveRight Unit:=wdCharacter, Count:p
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
etc.
La macro est très longue et je dois l'exécuter plussieur fois pour
arriver à la fin du fichier.

Il y a surement un moyen plus court pour répéter le bloc de 14 lignes
jusqu'à la fin du fichier, mais je n'y arrive pas .

Quelqu'un peut-il me donner le bon tuyau??

Merci d'avance
gallay jd







Avatar
Anacoluthe
Bonjour !

'Jean-Daniel Gallay' nous a écrit ...
Bonjour.
J'ai une fichier très long (Obtenu par transfer RS232 via Hyper Terminal)
que je met en page avec la macro suivante:
Selection.MoveRight Unit:=wdCharacter, Count:p
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Il y a surement un moyen plus court pour répéter le bloc de 14 lignes
jusqu'à la fin du fichier, mais je n'y arrive pas .


Outre le principe des boucles pour les 14 lignes comme l'a dit
André, signalons quand même que répéter 5 lignes
Selection.Delete Unit:=wdCharacter, Count:=1
(supprimer 1 caractère)
s'écrit bien plus simplement
Selection.Delete Unit:=wdCharacter, Count:=5
(supprimer 5 caractères)
l'argument Count étant précisément là pour ça ...

Cette macro utilisant l'objet Selection a été enregistrée :
on est donc extrêmement loin d'un programme optimisé.

Anacoluthe
« Il est très difficile d'imaginer quelque chose de simple. »
- Pierre MAC ORLAN

Avatar
Geo
Bonjour Jean-Daniel Gallay


Bonjour.
J'ai une fichier très long (Obtenu par transfer RS232 via Hyper
Terminal) que je met en page avec la macro suivante:


Sub MiseEnPage()
Do
If Selection.MoveRight(wdCharacter, 70) = 0 Then Exit Sub
Selection.Delete Unit:=wdCharacter, Count:=5
If Selection.MoveRight(wdCharacter, 5) = 0 Then Exit Sub
Selection.Delete Unit:=wdCharacter, Count:=5
If Selection.MoveRight(wdCharacter, 5) = 0 Then Exit Sub
Selection.TypeParagraph
Loop
End Sub

Si tu veux des commentaires, n'hesite pas.

--

A+

Avatar
Jean-Daniel Gallay
Bonjour.
Grand merci à tous. Chacun m'a permi d'améliorer mes connaissances.
Un merci particulier à Géo. Le "Sub MiseEnPage()" fonctionne à merveille.
C'est exactement ce qu'il ne fallait.
Meilleures salutations.

gallay jd

"Geo" a écrit dans le message de news:

Bonjour Jean-Daniel Gallay


Bonjour.
J'ai une fichier très long (Obtenu par transfer RS232 via Hyper
Terminal) que je met en page avec la macro suivante:


Sub MiseEnPage()
Do
If Selection.MoveRight(wdCharacter, 70) = 0 Then Exit Sub
Selection.Delete Unit:=wdCharacter, Count:=5
If Selection.MoveRight(wdCharacter, 5) = 0 Then Exit Sub
Selection.Delete Unit:=wdCharacter, Count:=5
If Selection.MoveRight(wdCharacter, 5) = 0 Then Exit Sub
Selection.TypeParagraph
Loop
End Sub

Si tu veux des commentaires, n'hesite pas.

--

A+




Avatar
Jean-Daniel Gallay
Bonjoue AB
Je m'explique:
Le fichier obtenu par Hyper Terminal et au kilomètre et je veut le mettre en
page de la façon suivante:
Depuis le début, avancer de 70 caractères, effacer le 5 suivants, avancer de
5, effacer les 5 suivants, fin de ligne (touche ENTER).
Répéter ceci jusqu'à la fin du fichier.
Le sub proposé par Géo fait exactement celà.
Meilleurs salutations
gallay jd
"AB" a écrit dans le message de news:

Bonjour,
Je n'ai pas très bien compris ce que tu veux obtenir. Peut-être
pourrais-tu t'expliquer plus clairement ?
Concernant ta macro, tu peux sans doute déjà la simplifier en utilisant
des boucles plutôt que de répéter la même instruction n fois.
Mais les experts en VBA vont sûrement trouver mieux.
AB

"Jean-Daniel Gallay" a écrit dans le message de
news: 42b1a0e1$
Bonjour.
J'ai une fichier très long (Obtenu par transfer RS232 via Hyper Terminal)
que je met en page avec la macro suivante:
Selection.MoveRight Unit:=wdCharacter, Count:p
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.TypeParagraph
Selection.MoveRight Unit:=wdCharacter, Count:p
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
etc.
La macro est très longue et je dois l'exécuter plussieur fois pour
arriver à la fin du fichier.

Il y a surement un moyen plus court pour répéter le bloc de 14 lignes
jusqu'à la fin du fichier, mais je n'y arrive pas .

Quelqu'un peut-il me donner le bon tuyau??

Merci d'avance
gallay jd