[R.] Word 2007 - Insérer tableau objet COM

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

[R.] Word 2007 - Insérer tableau objet COM

#1

Message par jcaspar »

Bonjour à tous

A présent que je sais comment modifier les styles je souhaiterais pouvoir insérer un tableau dans Word

j'ai donc suivi vos précédents conseils et créer une macro puis j'ai récupéré le code ...

mais je rame pour parvenir à la conversion autoit ....


Je vous remercie d'avance pour vos idées !


Jean-Marc

Code : Tout sélectionner

 

#include <Word.au3>
#include <MsgBoxConstants.au3>
local $oDoc
local $nom = "Le nom d'utilisateur est " & @username

$word = ObjCreate("Word.Application")
$word.visible = True
$word.Selection.WholeStory
$word.Documents.Add
$word.Selection.TypeText("test" & $nom)
$word.Selection.WholeStory
$word.Selection.Style = "Titre"
$word.Selection.insert
$word.Selection.TypeText($nom)
$word.Selection.Style = "Titre 1"
$word.Selection.TypeParagraph
$word.Selection.TypeText("Bonjour")
$word.Selection.Style = "Titre 2"
$word.Selection.TypeParagraph
$word.Selection.TypeText("Au revoir")
$word.Selection.Style = "Titre 3"
$word.Selection.TypeParagraph
$word.Selection.TypeText("fin du sujet")
$word.Selection.Style = "Titre 4"
$word.Selection.TypeParagraph


[b]$word.ActiveDocument.Tables.Add ($word.Selection.Range, 2,5, "wdWord9TableBehavior", "wdAutoFitFixed")
  With $word.Selection.Tables(1)
  .Columns.PreferredWidth = $word.CentimetersToPoints(1.8)
     If .Style <> "Grille du tableau" Then
         .Style = "Grille du tableau"
        EndIf
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = False
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = False
        .ApplyStyleRowBands = True
        .ApplyStyleColumnBands = False
    EndWith
    $word.Selection.MoveDown ("wdLine", 3)[/b]


 
Modifié en dernier par jcaspar le lun. 11 mai 2015 09:41, modifié 1 fois.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Word 2007 - Insérer tableau objet COM

#2

Message par walkson »

Vous ne pouvez pas écrire les constants comme ceci:
jcaspar a écrit :$word.Selection.MoveDown ("wdLine", 3)
Ou vous donnez la valeur de la constants ou vous déclarez la constant. En générale, elles s'écrivent par ex: Global Const $wdLine = ... Donc toutes les constants commencent par $
Je vous renvoie à une précédente réponse http://autoitscript.fr/forum/viewtopic. ... 422#p93854 ou vous trouverez pas mal de manière pour créer et configurer un tableau Word et un lien vers un UDF de constants.
Si vous l'utilisez, ne mettez pas #include<Word.au3> car vous aurez des déclarations en double, donc bug ! (Word.au3 n'est pas utile dans votre cas car vous passez par $word = ObjCreate("Word.Application") )
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

Re: [..] Word 2007 - Insérer tableau objet COM

#3

Message par jcaspar »

M :D erci beaucoup pour ces conseils !

Cela reviendrait à créer du code sous la forme suivante si je comprends bien .... bon j'ai encore du travail sur la planche pour tout comprendre
mais grâce à vos conseils j'avance petit à petit... :wink:

Jean-Marc

Code : Tout sélectionner

local $nom = "Le nom d'utilisateur est " & @username
local $ip = "L'adresse IP du PC est :" & @IPAddress1
local $domaine = "Vous êtes connecté au domaine:" & @LogonDomain
local $serveur = "Vous êtes connecté au serveur:" & @LogonServer
local $os = "Votre système d'exploitation est le suivant :" & @OSVersion & @LF & " La langue est " & @OSlang & @LF & "Le service Pack est: " & @OSServicePack
global Const $vbTab = 1
global Const $wdLine = 3
global const $NumRows = 6
global const $NumColumns = 10
global const $Range = "MyRange"
global const $DefaultTableBehavior = "wdWord9TableBehavior"
global const $AutoFitBehavior = " wdAutoFitFixed"
global const $Unit = "wdLine"
global const $Count = 5


$word = ObjCreate("Word.Application")
$word.visible = True
$word.Selection.WholeStory
$word.Documents.Add
$word.Selection.TypeText($nom)
$word.Selection.WholeStory
$word.Selection.Style = "Titre"
$word.Selection.insert
$word.Selection.TypeText($ip)
$word.Selection.Style = "Titre 1"
$word.Selection.TypeParagraph
$word.Selection.TypeText($nom)
$word.Selection.Style = "Titre 2"
$word.Selection.TypeParagraph
$word.Selection.TypeText($domaine)
$word.Selection.Style = "Titre 3"
$word.Selection.TypeParagraph
$word.Selection.TypeText($serveur)
$word.Selection.Style = "Titre 4"
$word.Selection.TypeParagraph
$word.Selection.TypeText($os)
$word.Selection.Style = "Titre 5"
$word.Selection.TypeParagraph
$word.Selection.TypeText($vbTab)
$word.Selection.EndOf(2, 0)
$word.Selection.MoveDown ($wdline)


$word.ActiveDocument.Tables.Add($word.Selection.Range, $NumRows, $NumColumns, $DefaultTableBehavior, $AutoFitBehavior)
With $word.Selection.Tables(1)
    .ApplyStyleHeadingRows = True
    .ApplyStyleLastRow = False
    .ApplyStyleFirstColumn = True
    .ApplyStyleLastColumn = False
    .ApplyStyleRowBands = True
    .ApplyStyleColumnBands = False
EndWith


$word.Selection.MoveDown($Unit, $Count)
$word.Selection.TypeParagraph
$word.ActiveDocument.Tables.Add($Range, $NumRows, $NumColumns)
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Word 2007 - Insérer tableau objet COM

#4

Message par walkson »

Bonsoir,
Vous mélangez variable et constant.
► Afficher le texte
Word n'est pas évident pour se déplacer dans un texte ou simplement de savoir où on en est (la sélection)
Si ca peut vous consoler, moi aussi je rame des fois.... :(
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

Re: [..] Word 2007 - Insérer tableau objet COM

#5

Message par jcaspar »

M :mrgreen: erci pour vos conseils !

voici mes avancées le code fonctionne sous Word 2007 je coince encore pour modifier la couleur des cellules du tableau.... mais bon j'avance doucement mais surement

ensuite je voudrais pouvoir insérer des formes ... ce n'est pas forcément évident mais cet apprentissage permet d'étendre les possibilités à Excel, Outlook, Powerpoint etc...

Jean-Marc

Code : Tout sélectionner

[spoiler=]
local $nom = "Le nom d'utilisateur est " & @username
local $ip = "L'adresse IP du PC est :" & @IPAddress1
local $domaine = "Vous êtes connecté au domaine:" & @LogonDomain
local $serveur = "Vous êtes connecté au serveur:" & @LogonServer
local $os = "Votre système d'exploitation est le suivant :" & @OSVersion & @LF & " La langue est " & @OSlang & @LF & "Le service Pack est: " & @OSServicePack
Global  $wdColorRed
$word = ObjCreate("Word.Application")
$word.visible = True
$word.Selection.WholeStory
$word.Documents.Add
$word.Selection.TypeText($nom)
$word.Selection.WholeStory
$word.Selection.Style = "Titre"
$word.Selection.insert
$word.Selection.TypeText($ip)
$word.Selection.Style = "Titre 1"
$word.Selection.TypeParagraph
$word.Selection.TypeText($nom)
$word.Selection.Style = "Titre 2"
$word.Selection.TypeParagraph
$word.Selection.TypeText($domaine)
$word.Selection.Style = "Titre 3"
$word.Selection.TypeParagraph
$word.Selection.TypeText($serveur)
$word.Selection.Style = "Titre 4"
$word.Selection.TypeParagraph
$word.Selection.TypeText($os)
$word.Selection.Style = "Titre 5"
$word.Selection.TypeParagraph

;~  tableau automatique
$word.ActiveDocument.Tables.Add ($word.Selection.Range, 5,7)

With $word.Selection.Tables(1)
        If .Style <> "Grille du tableau" Then
            .Style = "Grille du tableau"
        EndIf
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = False
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = False
        .ApplyStyleRowBands = True
        .ApplyStyleColumnBands = False
    EndWith


for $i=0 to 34 step 1
$j=$i+5
$word.Selection.TypeText ("La valeur de la cellule "& $i& "est de" &$j)
sleep(100)
$word.Selection.MoveRight (1)
$word.Selection.Font.Color = $wdColorRed
$word.Selection.Font.Color ($wdColorRed)
Next

$word.Selection.TypeParagraph
$word.Selection.TypeText("  ")


;~ tableau manuel

$word.ActiveDocument.Tables.Add ($word.Selection.Range, 5,7)

With $word.Selection.Tables(1)
        If .Style <> "Grille du tableau" Then
            .Style = "Grille du tableau"
        EndIf
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = False
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = False
        .ApplyStyleRowBands = True
        .ApplyStyleColumnBands = False

    EndWith

$word.Selection.TypeText("Leo")
$word.Selection.Font.ColorIndex = 10
$word.Selection.MoveRight (1)
$word.Selection.TypeText("Firmin")
$word.Selection.Font.Color(5)
$word.Selection.MoveRight (1)
$word.Selection.Font.Color = "wdColorRed"
$word.Selection.TypeText ("Louis")
$word.Selection.MoveRight (1)
$word.Selection.TypeText("Elise")
$word.Selection.MoveRight(1)
$word.Selection.TypeText ("Lucie")

$word.Selection.MoveRight(1)
$word.Selection.TypeText ("Tom")
$word.Selection.MoveRight(1)
$word.Selection.TypeText ("Jules")
$word.Selection.MoveRight(1)
;~ $word.Selection.MoveLeft
;~ $word.Selection.MoveDown
$word.Selection.TypeText ("Lupita")

;~ $word.ActiveDocument.Tables(1).Cell(1, 1).Range.Shading.BackgroundPatternColor("wdColorAqua")





[/spoiler]

 
Modifié en dernier par jcaspar le ven. 08 mai 2015 11:52, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Word 2007 - Insérer tableau objet COM

#6

Message par jguinch »

@jcaspar : merci d'utiliser la balise Spoiler pour le code :evil:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

Re: [..] Word 2007 - Insérer tableau objet COM

#7

Message par jcaspar »

:( oups désolé pour cet oubli voilà qui est corrigé :) !
Répondre