IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Créer plusieurs tableau dans doc word via VBS


Sujet :

VBScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Créer plusieurs tableau dans doc word via VBS
    Bonjour,

    Je suis débutant en VBS et j'ai un grand besoin d'aide

    Je m'explique,

    Je tente actuellement de créer un .VBS qui à pour rôle de créer un document Word puis d'y insérer un certain nombre de tableaux les uns après les autres...

    Problème, une fois le premier tableau créé, je n'arrive pas à sortir de celui-ci (baisser la position de mon curseur puis faire un saut de ligne) afin de créer un second tableau et ainsi de suite...

    Du coup, le second tableau n'est pas créé car je suis mal positionné et j'ai une erreur "Impossible de supprimer la plage"...

    Mon code :
    (Sub création tableau)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub TableauH(nbL, nbC, NumTab)
    	Set objRange = objDoc.Range()
    	objWord.Selection.Tables.Add objRange,nbL,nbC
    	Set oTbl = objDoc.Tables(NumTab)
    end sub
    (Sub principal)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True
    Set objDoc = objWord.Documents.Add()
     
    objWord.Selection.TypeText "blablabla"
    objWord.Selection.TypeParagraph
    call TableauH(2, 2, 1) 'création du premier tableau
    J'ai tenté avec les méthode suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    objWord.Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
    objWord.Selection.TypeParagraph
    		'---ou encore------'
    objWord.Selection.Expand unit:=wdTable
    objWord.Selection.Collapse direction:=wdCollapseEnd
    Mais j'ai toujours la même erreur : instruction attendue"

    Si une âme charitable peut me donner un coup de main

  2. #2
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bien le bonjour la communauté !

    Bon et bien je ne trouve toujours pas la méthode appropriée mais j’ai une piste.

    Après la création d'un objet, le curseur semble se placer automatiquement en début de fichier. Je m'en suis rendu compte en insérant du texte avant l'appel de ma procédure pour création de tableau et figurez-vous que le texte est écrasé par le tableau...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub TableauH(nbL, nbC, NumTab)
     
    	Set objRange = objDoc.Range()
    	objWord.Selection.Tables.Add objRange,nbL,nbC
    	Set oTbl = objDoc.Tables(NumTab)
     
                   oTbl.cell(2,1).range.select    'selectionne bien la cellule
                   Selection.MoveDown Unit:=wdLine, Count:=nbL 'renvoie l'erreur "instrucion attendue"
    end sub
    Si quelqu'un à la solution

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Je n'ai toujours pas trouvé de solution. J'ai parcouru le forum et le net de long en large et les méthodes trouvées pour résoudre le même problème ne donnent rien.

    Je n'arrive pas à appliquer les méthodes "MoveDown Unit:=wdLine, ..." , "Extend.Expand unit:=wdTable" et "Collapse direction:=wdCollapseEnd".

    Je dois mal les appliquer et je ne vois pas ce qui cloche dans mon code

    J'y arrive pourtant en VBA

    Personne pour un coup de main ?

    Merci

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bonjour,

    en VBS n'utilise pas les paramètres nommés...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.MoveDown wdLine,nbL

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Un grand merci pour votre réponse ! Je n'avais pas remarqué que les paramètres ne devaient pas être nommés...

    Grace à votre réponse j'ai adapté la méthode "Tables.add" afin de garder la position "objWord.Selection" pour que le text (blablabla) ne soit plus supprimé avant le tableau....

    Par contre je n'arrive toujours pas à quitter le tableau. J'ai une erreur "Objet requis" avec Selection. Puis-je vous demander encore un peu de votre temps ?

    Le nouveau code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub Tableau2(nbL, nbC, NumTab)
    	objDoc.Tables.Add objWord.Selection.Range, nbL, nbC
    	Dim oTbl 'As Table
    	Set oTbl = objDoc.Tables(NumTab)
    	
    	oTbl.cell(1,1).select    'selectionne bien la cellule
        Selection.MoveDown wdLine,nbL 	
    
    end sub 
    
    
    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True
    Set objDoc = objWord.Documents.Add()
    
    objWord.Selection.TypeText "blablabla"
    objWord.Selection.TypeParagraph
    
    call Tableau2(2, 2, 1) 'création du premier tableau 
    'call Tableau2(2, 2, 2) 'création du second tableau
    J'ai tenté aussi avec mais ca ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objWord.Selection.MoveDown wdLine,nbL

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bonjour,
    Je n'ai pas word sous la main ..mais essai d'appliquer ta methode move... directement as ton objet cellule .. Sans passer par un select.

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci pour cette réponse rapide

    Malheureusement la méthode move n'est applicable qu'à "selection" et "ContentControlListEntry" que je ne connais pas du tout

    cela donne donc avec cell... l'erreur "cet objet ne gère pas...."

    J'ai regardé dans l'éditeur VBA ce que l'on pouvait appliquer à cells et rows mais il ne me semble pas avoir vu grand chose...

    en VBA j'ai déjà réalisé ce code et il fonctionne correctement, je ne comprend pas du tt

    Code en VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ActiveDocument.Tables.Add Range:=Selection.Range, numrows:=nbL, numcolumns:=nbC
    Dim oTbl As Table
    Set oTbl = ActiveDocument.Tables(NumTab)
    oTbl.Rows(1).Select
    Selection.MoveDown Unit:=wdLine, Count:=nbL

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut [RESOLU]Créer plusieurs tableau dans doc word via VBS
    Bonjour,

    Bon et bien c'est résolu. Pour les futurs intéréssés la solution était rééllement simple

    En fait les différences entre VBA et VBS sont plutôt importantes. Dans le cas de MoveDown, il sufisait de donner une valeur à tout les paramètres contrairement avec le VBA :

    VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
    VBS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Selection.MoveDown 5, 1(Attention, le WdLine doit être à 5, je ne sais ce que représente cette valeur)
    Donc dans mon cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub Tableau(nbL, nbC, NumTab)
    	objDoc.Tables.Add objWord.Selection.Range, nbL, nbC
    	Dim oTbl 'As Table
    	Set oTbl = objDoc.Tables(NumTab)
    
                oSelection.MoveDown 5,nbL 	
                oSelection.TypeParagraph 'Ne pas oublier ce retour chariot afin de ne pas coller le pointeur sous le tableau nouvellement créé. En cas d'oubli, le futur tableau fusionnera avec l'existant
    end sub 
    
    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True
    Set objDoc = objWord.Documents.Add()
    
    objWord.Selection.TypeText "blablabla"
    Call Tableau(2, 2, 1)
    objWord.Selection.TypeText "blablabla2"
    Call Tableau(2, 2, 2)
    objWord.Selection.TypeText "blablabla3"
    Call Tableau(2, 2, 3)
    ...
    En tt cas merci pour tout bbil !

  9. #9
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Rectifications / petit supplément
    Bonjour,

    Rectification pour les prochains....

    La méthode MoveDown n'est finalement pas une solution.

    Cette méthode baisse le pointeur de N lignes mais prend en compte les sauts de lignes présentes dans chaque cellules. Ainsi, si votre tableau comporte de telles cellules, vous ne sortirez pas de celui-ci !

    Solution : Utiliser EndKey afin de pointer sur la fin de fichier plutôt que MoveDown.

    Attention le VBS n'est pas du VBA donc pour le EndKey c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Selection.EndKey (6) ' En VBS
    Selection.EndKey (wdstory) ' En VBA
    Enjoy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment recuperer le nombre de page d'un doc word via vba?
    Par megapacman dans le forum VBA Word
    Réponses: 7
    Dernier message: 14/11/2006, 13h37
  2. Créer un tableau dans une CDialog
    Par Sachiel31 dans le forum MFC
    Réponses: 5
    Dernier message: 29/08/2006, 16h55
  3. créer plusieurs graphes dans le meme rapport
    Par err dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 11/08/2006, 17h15
  4. [VB.NET] Créer plusieurs tableaux dans word
    Par Dj Thunder dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/06/2006, 00h04
  5. Réponses: 14
    Dernier message: 13/10/2005, 12h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo