jpl38 | Salut
Si je déclare Ca As object, ça tourne, mais si jele déclare As Shape, ça plante.
Voici la macro modifiée :
Code :
- Sub CoordonnéesDansCanevas()
- 'On construit une boite 1 et un canevas dans le feuille, et une boite 2 dans le canevas
- Dim canevas As Shape, boite As Shape
-
- Set boite = ActiveDocument.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, Left:=40, Top:=20, Width:=28, Height:=20)
- With boite
- .TextFrame.TextRange.Text = CStr(1)
- .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
- .RelativeVerticalPosition = wdRelativeVerticalPositionPage
- .Name = "boite 1"
- End With
-
- Set canevas = ActiveDocument.Shapes.AddCanvas(Left:=100, Top:=100, Width:=100, Height:=100)
- With canevas
- .Name = "canevas"
- .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
- .RelativeVerticalPosition = wdRelativeVerticalPositionPage
- End With
-
- Set boite = canevas.CanvasItems.AddTextbox(Orientation:=msoTextOrientationHorizontal, Left:=60, Top:=40, Width:=28, Height:=20)
- boite.TextFrame.TextRange.Text = CStr(2): boite.Name = "boite 2"
-
- 'Nom et la position des formes de la feuille
- Debug.Print "Formes dans la feuille"
- Dim forme As Shape
- For Each forme In ActiveDocument.Shapes
- Debug.Print forme.Name, , forme.Left, forme.Top
- Next forme
-
- 'Nom et la position de la boite du canevas
- Debug.Print "Formes dans le canevas"
-
- 'En parcourant la collection CanvasItems : left et top sont mesurés en points
- Dim InCan As Object 'objet dans le canevas ; la boucle plante si InCan est déclaré As Shape !
- For Each InCan In canevas.CanvasItems
- Debug.Print InCan.Name; "(Boucle)", InCan.Left, InCan.Top
- Next InCan
-
- 'Sans parcourir la collection CanvasItems : left et top sont mesurés en vingtaines de points
- Set InCan = canevas.CanvasItems("boite 2" )
- Debug.Print InCan.Name; "(Direct)", InCan.Left, InCan.Top
-
- Set canevas = Nothing: Set boite = Nothing: Set forme = Nothing: Set InCan = Nothing
- End Sub
|
La boucle de la ligne 36 donne les distances en points, les lignes 41 et 42 donnent les distances en vingtaines de points. Il s'agit pourtant du même objet !
Voici la copie de la fenêtre Exécution : Formes dans la feuille
boite 1 40 19.95 canevas 100 99.95 Formes dans le canevas
boite 2(Boucle) 59.98189 39.98795 boite 2(Direct) 2.999094 1.999398 Pour la recherche "mondiale" j'ai déjà essayé, ça n'a rien donné.
Merci pour ta participation.
PS Sur l'autre forum, mon message a disparu. J'ai fait qqchose qu'il ne fallait faire ? Message édité par jpl38 le 09-07-2015 à 18:37:27
|