Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro word: forme automatique

5 réponses
Avatar
Anonyme
Bonjour à tous,

Je suis totalement ignorant en termes de programmation VBA (bien que ça doit être génial de maîtriser) et je suis confronté à un petit problème.
J'ai créé une macro pour afficher un trait vertical sur la gauche de mes pages word pour identifier un changement dans mon document (d'épaisseur 4,5 pts, ancré sur la marque de paragraphe que j'ai choisie au pif au moment de créer ma macro).
Je suis passé par "nouvelle macro" pour réaliser mon trait vertical.
Ce que je souhaite, c'est de voir apparaître mon trait de révision à l'endroit (verticalement parlant, j'entends) où j'ai sélectionné la marque de paragraphe voulue quand j'ai besoin d'ajouter ce trait sur une page de mon document word.
Je souhaite également que ce trait fasse 0,5 cm de hauteur (c'est fait) et qu'il soit centré sur la marque de paragraphe (comme le texte est forcément aligné sur la marque de paragraphe, cela évite de devoir positionner le trait de révision sur le texte qui a changé avec les flèches haut et bas.
Or, à l'heure actuelle, lorsque je sélectionne une marque de paragraphe d'un titre tout en haut d'une page, par exemple, mon trait s'affiche sur la page précédente et ce, malgré le saut de section.
J'ai édité la macro, comprends à peu près tous les paramètres et vois bien les coordonnées de mon trait mais je ne sais pas lui dire de se positionner (quelle que soit la page) en face de ma marque de paragraphe sélectionnée (ce sont ces coordonnées qui sont visiblement la cause du problème).
À chaque fois que je lance ma macro, il me crée mon trait à l'endroit où je l'ai créé pendant l'enregistrement de ma macro.
Si en plus il y a un tableau (positionné en haut de la page donc à peu près à l'endroit où j'ai créé mon trait penfdant l'enregistrement de la macro), là c'est encore plus la fête: il s'ancre dans une cellule et bref... La chienlit...
Voici ma macro:

Sub Trait4()
'
' Trait4 Macro
'
ActiveWindow.ActivePane.View.ShowAll = Not ActiveWindow.ActivePane.View. _
ShowAll
ActiveDocument.Shapes.AddLine(276#, 96.75, 276#, 113.25).Select
Selection.ShapeRange.Line.Weight = 4.5
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 0, 0)
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
Selection.ShapeRange.Line.BeginArrowheadLength = msoArrowheadLengthMedium
Selection.ShapeRange.Line.BeginArrowheadWidth = msoArrowheadWidthMedium
Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadNone
Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium
Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadNone
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 14.15
Selection.ShapeRange.Width = 0#
Selection.ShapeRange.Rotation = 0#
Selection.ShapeRange.RelativeHorizontalPosition = _
wdRelativeHorizontalPositionColumn
Selection.ShapeRange.RelativeVerticalPosition = _
wdRelativeVerticalPositionParagraph
Selection.ShapeRange.Left = CentimetersToPoints(-0.35)
Selection.ShapeRange.Top = CentimetersToPoints(0.1)
Selection.ShapeRange.LockAnchor = True
Selection.ShapeRange.WrapFormat.AllowOverlap = True
Selection.ShapeRange.WrapFormat.Side = wdWrapBoth
Selection.ShapeRange.WrapFormat.DistanceTop = CentimetersToPoints(0)
Selection.ShapeRange.WrapFormat.DistanceBottom = CentimetersToPoints(0)
Selection.ShapeRange.WrapFormat.DistanceLeft = CentimetersToPoints(0.32)
Selection.ShapeRange.WrapFormat.DistanceRight = CentimetersToPoints(0.32)
Selection.ShapeRange.WrapFormat.Type = 3
Selection.ShapeRange.ZOrder 5
End Sub

Si une bonne âme daigne m'éclairer...

Merci d'avance.

Cordialement.

5 réponses

Avatar
Geo
Bonjour

Pour la position dans un tableau, je ne trouve pas, apparemment les
paramétrage ne fonctionne pas.
Il faudrait faire un calcul avec la largeur des colonnes.
Sinon voici une macro qui positionne le trait en début du paragraphe où
est le point d'insertion :

Sub Trait5()
Dim S As Shape
Dim V As Single
Dim H As Single
' position du curseur dans la page
V = Selection.Information(wdVerticalPositionRelativeToPage)
' A gauche
H = 0
Set S = ActiveDocument.Shapes.AddLine(H, V, H, V + 20)
With S
.Line.Weight = 4.5 ' épaisseur du trait
.LockAspectRatio = msoFalse ' trait modifiable
' Règles de positionnement horizontal
.RelativeHorizontalPosition = _
wdRelativeHorizontalPositionPage
' En haut de paragraphe
.RelativeVerticalPosition = _
wdRelativeVerticalPositionParagraph
.Left = 15
.Top = 0
.LockAnchor = True
.Line.ForeColor.RGB = wdBlack
End With
ActiveDocument.ActiveWindow.View.ShowObjectAnchors = True
End Sub
Avatar
Geo
Re

Finalement, c'est encore plus simple :
Sub Trait5()
Dim S As Shape
Dim V As Single
Dim H As Single
' position du curseur dans la page
V = Selection.Information(wdVerticalPositionRelativeToPage)
' Position par rapport au bord gauche de la feuille
H = 20
Set S = ActiveDocument.Shapes.AddLine(H, V, H, V + 15)
With S
.Line.Weight = 4.5 ' épaisseur du trait
.LockAspectRatio = msoFalse ' trait modifiable
' En haut de paragraphe
.RelativeVerticalPosition = _
wdRelativeVerticalPositionParagraph
.Top = 0
.LockAnchor = True
.Line.ForeColor.RGB = wdBlack
End With
End Sub
Avatar
Gloops
Bonjour,

Est-ce qu'on ne gagnerait pas en simplicité à utiliser les bordures d e
paragraphes ?
Avatar
Geo
Bonjour

Est-ce qu'on ne gagnerait pas en simplicité à utiliser les bordures de paragraphes ?



Ou le suivi de modification ...
Avatar
Gloops
Geo a écrit, le 31/10/2012 11:47 :
Bonjour

Est-ce qu'on ne gagnerait pas en simplicité à utiliser les bordure s de
paragraphes ?



Ou le suivi de modification ...






dans le suivi de modification, effectivement ...