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

VBA Word Discussion :

positionner tableau word en VBA


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 62
    Points : 39
    Points
    39
    Par défaut positionner tableau word en VBA
    Bonjour,

    Comment positionner avec une ligne de commande en VBA un tableau dans un doc word.
    Je souhaite que mon tableau soit centré sur la page.

    Merci de vos conseils

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,


    Il faut travailler avec un objet sélection.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ActiveDocument.Tables(1).Select
        With Selection.Tables(1).Rows
            .WrapAroundText = True
            .HorizontalPosition = wdTableCenter
            .RelativeHorizontalPosition = wdRelativeHorizontalPositionColumn
            .DistanceLeft = CentimetersToPoints(0.32)
            .DistanceRight = CentimetersToPoints(0.32)
            .VerticalPosition = wdTableCenter
            .RelativeVerticalPosition = wdRelativeVerticalPositionMargin
            .DistanceTop = CentimetersToPoints(0)
            .DistanceBottom = CentimetersToPoints(0)
            .AllowOverlap = False
        End With
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 62
    Points : 39
    Points
    39
    Par défaut ca marche pas !!
    Merci pour les conseils mais ca marche pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set tableau2 = docword.Tables.Add(docword.Bookmarks.Item("Tableau_implantation").Range, vnbr_implantation * 3, 2)
    Voici la commande utilisé pour créer le tableau.
    Cette création se fait via une appli acces. Création d'un tableau (tableau2) dans un document word ou un signet ("Tableau_implantation") a été placé.
    Le probleme est que le tableau ainsi créé se retrouve à 0,5 cm de la marge de gauche du document comment agrandir cette marge ?

    Cordialement

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Citation Envoyé par cornet04 Voir le message
    Bonjour,

    Comment positionner avec une ligne de commande en VBA un tableau dans un doc word.
    Je souhaite que mon tableau soit centré sur la page.

    Merci de vos conseils
    Par rapport à la demande initiale, je peux certifier que le code fonctionne.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 86
    Points : 41
    Points
    41
    Par défaut
    Bonjour, je relance le sujet car je n'arrive pas à user de la bonne façon le code.

    Voici ma macro originelle:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub Tableauexport()
        Dim oWord As Word.Application
        'Créer une instance de word
       Dim oTbl As Table
       Dim Graphe As ChartObject, w As Integer, h As Integer
     
       Set oWord = GetObject(, "Word.Application")
     
    Range("H26:J32").Select
     Selection.Copy
     
     
     
        'rendre le document word visible
        oWord.Visible = True
     
        'cherche le signet dans la feuille word
      oWord.Selection.Goto What:=wdGoToBookmark, Name:="tabcassite1"
     
      'Coller la plage dans Word
      oWord.Selection.PasteAndFormat (wdPasteDefault)
     
       'aligne le tableau au milieu de la page
      oWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
      For Each oTbl In ActiveDocument.Tables
    oTbl.Rows.Alignment = wdAlignRowCenter
     Next oTbl
     'Annuler le mode couper/copier
    Application.CutCopyMode = False
     
    End Sub
    Quand je met le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ActiveDocument.Tables(1).Select
        With Selection.Tables(1).Rows
            .WrapAroundText = True
            .HorizontalPosition = wdTableCenter
            .RelativeHorizontalPosition = wdRelativeHorizontalPositionColumn
            .DistanceLeft = CentimetersToPoints(0.32)
            .DistanceRight = CentimetersToPoints(0.32)
            .VerticalPosition = wdTableCenter
            .RelativeVerticalPosition = wdRelativeVerticalPositionMargin
            .DistanceTop = CentimetersToPoints(0)
            .DistanceBottom = CentimetersToPoints(0)
            .AllowOverlap = False
        End With
    j'ai une erreur: propriété ou méthode non gérée par cet objet.


    J'ai essayé ce code aussi:

    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
    Sub EnvoyerTableauxExcelVersWord_V02()
    'necessite d'activer la reference Microsoft Word xx.x Object Library
    Dim DocWord As Word.Document
    Dim AppWord As Word.Application
     
    Set AppWord = New Word.Application
    AppWord.Visible = True
    Set DocWord = AppWord.Documents.Add
     
    Range("A1:H10").Copy
     
    AppWord.Selection.Paste
    DocWord.Tables(1).AutoFitBehavior wdAutoFitWindow
     
    Application.CutCopyMode = False
    End Sub
    Mais ça marche pas. je l'ai inséré de cette façon:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    Sub Tableauexport()
        Dim oWord As Word.Application
        'Créer une instance de word
       Dim oTbl As Table
       Dim Graphe As ChartObject, w As Integer, h As Integer
     
       Set oWord = GetObject(, "Word.Application")
     
    Range("H26:J32").Select
     Selection.Copy
     
     
     
        'rendre le document word visible
        oWord.Visible = True
     
        'cherche le signet dans la feuille word
      oWord.Selection.Goto What:=wdGoToBookmark, Name:="tabcassite1"
     
      'Coller la plage dans Word
      oWord.Selection.PasteAndFormat (wdPasteDefault)
     
      oWord.Selection.Paste
    oTbl.Tables(1).AutoFitBehavior wdAutoFitWindow
     'Annuler le mode couper/copier
    Application.CutCopyMode = False
     
    End Su
    b

    Erreur: variable objet ou variable de bloc With non définie.

    Je ne comprends pas dans les 2 cas (même si c'est le deuxième code qui m'intéresse le plus)

    Merci d'avance, j'espère avoir été clair.

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Le sujet traite de la façon de centrer un tableau sur une page.

    Dans ton cas, que souhaites tu faire ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 86
    Points : 41
    Points
    41
    Par défaut
    En effet mon code actuel centre le tableau.
    Ce que je veux faire c'est le mettre à la largeur de la page lors de l'import, ou au pire paramétrer l'emplacement (en terme de largeur notamment).

    Pour cela que j'ai deux codes, mais je n'arrive pas à les appliquer à mon contexte.

    Merci pour les futures potentielles réponses.

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pour remplir toute la feuille en largeur, c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .AutoFitBehavior wdAutoFitWindow
    Que tu dois utiliser
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 86
    Points : 41
    Points
    41
    Par défaut
    Oui c'est ce que j'ai essayé, mais j'ai une erreur:

    Variable objet ou variable de bloc With non définie. (erreur 91).

    le 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub Tableauexport()
        Dim oWord As Word.Application
        'Créer une instance de word
       Dim oTbl As Table
       Dim Graphe As ChartObject, w As Integer, h As Integer
       Dim DocWord As Word.Document
       Set oWord = GetObject(, "Word.Application")        'Word déjà ouvert
     
     
     
     
    Sheets("CAS A").Select
     
    'Copier une plage depuis Excel
     NombreASelectionner = ActiveSheet.Range("AB7").Value
    Range("X5:Z" & NombreASelectionner).Select
     Selection.Copy
     
     
     
        'rendre le document word visible
        oWord.Visible = True
        Set oWord = GetObject(, "Word.Application")
        'cherche le signet dans la feuille word
      oWord.Selection.Goto What:=wdGoToBookmark, Name:="tabcasA"
     
      'Coller la plage dans Word
      oWord.Selection.Paste
       DocWord.Tables(1).AutoFitBehavior wdAutoFitWindow
     
     'Annuler le mode couper/copier
    Application.CutCopyMode = False
     
     
    Range("P5:U13").Select
     Selection.Copy
     
     
    End Sub
    Je vois pas où est mon erreur. Merci

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    C'est que tu as un tabeau Excel et pas Word dans ton document.

    L'erreur 91 est levée quand l'objet n'existe pas.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 86
    Points : 41
    Points
    41
    Par défaut
    Je ne comprends pas trop.
    J'ai bien un fichier word d'ouvert avec le signet en destination.
    ce que vous voulez dire, c'est que je dois transformer mon tableau copier d'excel en word?

    Fin en fait pour être franc je ne vois pas trop le souci...

    Merci

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pour reprendre une partie de ta manipulation, j'ai fait ce bout de code et tout baigne.

    J'obtiens le résultat souhaité.


    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
    21
    22
    Sub TestOli()
    Dim wApp As Word.Application
    Dim oDoc As Word.Document
     
    Set wApp = New Word.Application
    Set oDoc = wApp.Documents.Add("c:\temp\tableau.dotm")
     
    Range("D11:F15").Copy
     
    oDoc.Bookmarks("S1").Range.Select
    wApp.Selection.Paste
     
    oDoc.Tables(1).AutoFitBehavior wdAutoFitWindow
     
     
    wApp.Visible = True
     
     
     
     
     
    End Sub
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 86
    Points : 41
    Points
    41
    Par défaut
    Bonjour, un peu en retard sur la réponse. En effet cela fonctionne.

    Mais j'aimerai améliorer la mcaro, car mon word est assez complexe. Et j'aimerai placé mon tableau en le positionnant (à gauche et à 2 cm en allant à droite sur la règle) plus précisément. J'ai pas vraiment trouvé de réels bouts de code sur cette aspect de positionnement avec la règle.

    Merci pour vos réponses.

Discussions similaires

  1. Répéter l'entête d'un tableau Word en vba
    Par saninx dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/03/2015, 12h33
  2. Creer un tableau word dynamiquement en vba
    Par Vince__93700 dans le forum VBA Word
    Réponses: 2
    Dernier message: 08/02/2007, 18h33
  3. [VBA-W] Transfert contenu spreadsheet dans un tableau word
    Par houadglaz dans le forum VBA Word
    Réponses: 4
    Dernier message: 02/12/2006, 14h58
  4. Manipulation d'un tableau sous Word avec vba
    Par Françoise Sagan dans le forum VBA Word
    Réponses: 1
    Dernier message: 02/12/2006, 13h54
  5. (VBA Word]Naviguer dans un tableau word
    Par aA189 dans le forum VBA Word
    Réponses: 6
    Dernier message: 17/09/2006, 20h14

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