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
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
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 !
Merci pour les conseils mais ca marche pas ?
Voici la commande utilisé pour créer le tableau.
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)
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
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 !
Bonjour, je relance le sujet car je n'arrive pas à user de la bonne façon le code.
Voici ma macro originelle:
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
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
j'ai une erreur: propriété ou méthode non gérée par cet objet.
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 essayé ce code aussi:
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 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
b
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
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.
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 !
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.
Salut,
Pour remplir toute la feuille en largeur, c'est
Que tu dois utiliser
Code : Sélectionner tout - Visualiser dans une fenêtre à part .AutoFitBehavior wdAutoFitWindow
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 !
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:
Je vois pas où est mon erreur. Merci
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
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 !
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
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 !
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager