Page 1 sur 1

[R] Word 2007 - Objet COM insérer forme

Posté : lun. 11 mai 2015 10:57
par jcaspar
B :D onjour à tous !

Je souhaiterais ajouter des formes dans un document Word
mon code ne génère pas d'erreur mais il n'est pas opérationnel

Peut être avez vous une idée sur ce qui que je dois modifier dans mon code :?: ?

Je vous remercie pour vos idées et conseils :mrgreen:


Jean-Marc

Code : Tout sélectionner

[spoiler=]$word = ObjCreate("Word.Application")
    $word.visible = True
    $word.Documents.Add

$word.ActiveDocument.Shapes.AddShape("msoShapeRectangle", 95.25, 78.75, 285.75,146.25).Select
    $word.Selection.ShapeRange.Fill.Solid
    $word.Selection.ShapeRange.Fill.ForeColor.ObjectThemeColor = "wdThemeColorAccent1"
    $word.Selection.ShapeRange.Fill.ForeColor.TintAndShade ="0#"
    $word.Selection.ShapeRange.Fill.BackColor.RGB = $word.RGB(255, 255, 255)
    $word.Selection.ShapeRange.Fill.Visible = "msoTrue"
    $word.Selection.ShapeRange.Line.ForeColor.ObjectThemeColor ="wdThemeColorMainLight1"
    $word.Selection.ShapeRange.Line.ForeColor.TintAndShade = -0.05
    $word.Selection.ShapeRange.Line.Weight = "3#"
    $word.Selection.ShapeRange.Line.Style = "msoLineSingle"
    $word.Selection.ShapeRange.Line.Visible = "msoTrue"
    $word.Selection.ShapeRange.Shadow.Type = "msoShadow3"
    $word.Selection.ShapeRange.Shadow.ForeColor.ObjectThemeColor ="wdThemeColorAccent1"
    $word.Selection.ShapeRange.Shadow.ForeColor.TintAndShade ="-0.5"
    $word.Selection.ShapeRange.Shadow.Transparency ="0.5"
    $word.Selection.ShapeRange.Shadow.OffsetX = "1#"
    $word.Selection.ShapeRange.Shadow.OffsetY = "2#"
    $word.Selection.ShapeRange.Shadow.Visible = "msoTrue"
    $word.Selection.ShapeRange.ThreeD.Visible = "msoFalse"[/spoiler]

Re: [..] Word 2007 - Objet COM insérer forme

Posté : lun. 11 mai 2015 14:16
par orax
jcaspar a écrit :mon code ne génère pas d'erreur
C'est parce que elles sont silencieuses. En ajoutant les lignes suivantes au début du code, on peut voir à quel endroit à lieu la première erreur.

Code : Tout sélectionner

#AutoIt3Wrapper_Run_Debug_Mode=Y                 ;(Y/N) Run Script with console debugging. Default=N
#AutoIt3Wrapper_Run_Debug=On                     ;(On/Off) Switch debugging on/off
0011: 0-0: $word.ActiveDocument.Shapes.AddShape("msoShapeRectangle", 95.25, 78.75, 285.75,146.25).Select
0012: 1-0: ConsoleWrite(@error & @CRLF)

Ceci indique que la ligne 11 a retourné le code d'erreur 1.

msoShapeRectangle n'est pas une chaîne dans Word, c'est une constante qui aura une valeur numérique ("msoShapeRectangle" = une chaîne). Même remarque pour wdThemeColorAccent1, wdThemeColorMainLight1, ... Walkson en parlait ici => http://autoitscript.fr/forum/viewtopic.php?f=5&t=13443

Re: [..] Word 2007 - Objet COM insérer forme

Posté : lun. 11 mai 2015 15:29
par walkson
Bonjour,
Je crois que vous êtes trompé par l'éditeur de macro et particulièrement par cette forme

Code : Tout sélectionner

$word.Selection.Style = "Titre 3"
En fait, l'éditeur aurait du écrire

Code : Tout sélectionner

Selection.Style = wdStyleHeading3
sachant que wdStyleHeading3 = -4
Sur une version Word anglais, "Titre 3" ne passerait pas.
Ce qui nous donne pour votre script:
► Afficher le texte
Ici, toutes les constantes sont rentrées sous forme numérique à défaut de les déclarer.
Pour rappel, je récupère les constantes soit dans l'aide VBA soit dans l’explorateur d'objets (F2) (surtout pour les mso...)