utilisation de la fonction ajuster sous word depuis excel

yannick63430

XLDnaute Junior
bonjour,

j'ai créé une macro de transfert de tableau d'excel vers word et comme mes tableaux sont de tailles différentes, je dois en adapter certains.
par conséquent, je me suis dits que le langage suivant dans ma macro devait correspondre:
Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)

cependant je ne la maîtrise pas totalement et lors de l'exécution de ma macro, erreur.
je pense que cela vient du (1) qui doit faire référence à des tables???? et je voudrais mettre cet ajustement après tout mes coller (réf en rouge)

voici ma macro :
Sub Macro2()
'
Dim WordApp As Word.Application
Dim WordDoc As Word.Document

Set WordApp = CreateObject("word.application") 'ouvre session word et le fichier voulu
Set WordDoc = WordApp.Documents.Open("c:\dossier\Note de synthèse.docx") 'ouvre document Word
WordApp.Visible = False

' dupliquer pour éviter surcharge de mémoire
'
ActiveWorkbook.Names("Passif").Delete
ActiveWorkbook.Names("SIG").Delete
ActiveWorkbook.Names("TableauCP").Delete
ActiveWorkbook.Names("TableauCRM").Delete
ActiveWorkbook.Names("Actif").Delete
Sheets(Array("SIG", "transition word", "transition word bis")) _
.Select
Sheets("transition word bis").Activate
Sheets(Array("SIG", "transition word", "transition word bis")) _
.Copy Before:=Sheets(17)
Sheets(Array("SIG (2)", "transition word (2)", _
"transition word bis (2)")).Select
Sheets("transition word bis (2)").Activate
Cells.Select
'copier coller valeur des onglets
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

' création des plages de données
Sheets("SIG (2)").Select
ActiveWindow.SmallScroll Down:=-30
Range("A1:I44").Select
Application.CutCopyMode = False
ActiveWorkbook.Names.Add Name:="SIG", RefersToR1C1:="='SIG (2)'!R1C1:R44C9"
Sheets("transition word (2)").Select
ActiveWindow.SmallScroll Down:=-15
ActiveWorkbook.Names.Add Name:="TableauCP", RefersToR1C1:= _
"='transition word (2)'!R1C5:R37C13"
Sheets("transition word bis (2)").Select
Range("A1:D12").Select
ActiveWorkbook.Names.Add Name:="Actif", RefersToR1C1:= _
"='transition word bis (2)'!R1C1:R12C4"
Range("A14:D21").Select
ActiveWorkbook.Names.Add Name:="Passif", RefersToR1C1:= _
"='transition word bis (2)'!R14C1:R21C4"
ActiveWindow.SmallScroll Down:=9
Range("A23:D26").Select
ActiveWorkbook.Names.Add Name:="TableauCRM", RefersToR1C1:= _
"='transition word bis (2)'!R23C1:R26C4"
ActiveWindow.SmallScroll Down:=12

'transfert des tableaux

Sheets("transition word bis (2)").Select
Range("Passif").Copy
WordDoc.Bookmarks("Passif").Range.PasteExcelTable False, False, False
Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
Range("Actif").Copy
WordDoc.Bookmarks("Actif").Range.PasteExcelTable False, False, False
Range("TableauCRM").Copy
WordDoc.Bookmarks("tableauCArtMarge").Range.PasteExcelTable False, False, False
Sheets("SIG (2)").Select
Range("SIG").Copy
WordDoc.Bookmarks("RUBRIQUES").Range.PasteExcelTable False, False, False
Sheets("transition word (2)").Select
Range("TableauCP").Copy
WordDoc.Bookmarks("tableauCP").Range.PasteExcelTable False, False, False
Sheets("transition word bis (2)").Select
'....
End sub

merci d'avance pour votre aide

cordialement
yannick
 
Dernière édition:

yannick63430

XLDnaute Junior
Re : utilisation de la fonction ajuster sous word depuis excel

Bonjour,

je pensais peut-être qu'on pourrait définir à l'avance la taille des tableaux sous word ou demander à la macro d'ajuster automatiquement le contenu des tableaux à une seule page.
je ne sais pas trop????

Cordialement
yannick
 

sigismond

XLDnaute Occasionnel
Re : utilisation de la fonction ajuster sous word depuis excel

Bonjour à tous et à toi Yannick.

Si j'ai bien compris tu as 2 problèmes :

  1. accéder au bon tableau

    tables est une collection d'objets table. Pour y accéder on utilise le N° d'index comme tu le fais : tables(1).
    Question : comment savoir quel est le N° d'index d'une table particulière ?
    Réponse :
    - Soit en le devinant à la façon dont le document a été créé (Word affectant aux tables un N° d'index dans l'ordre de leur création) mais c'est aléatoire.
    - Soit en vérifiant le contenu du tableau (en faisant une boucle qui va chercher quel tableau contient "Bilan Actif" en Ligne 1 Colonne 3 par exemple).
    Le mieux est de se créer une fonction de recherche avec comme paramètres d'entrée : le texte cherché, le n° de ligne, le n° de colonne et qui retourne le n° d'index trouvé avec -1 si pas trouvé.

  2. ajuster la taille d'un tableau

    Descend dans les propriétés du tableau et détermine soit la hauteur du tableau soit la hauteur de ses lignes pour qu'il remplisse la page.
    Si ce que tu cherches est d'avoir un tableau par page sans te soucier qu'il occupe toute la place, insère un saut de page avant dans les propriétés du paragraphe qui contient le tableau.

Tout ça en VBA depuis Excel (si j'ai bien compris) ;)

Bonne journée

Sigismond
 
Dernière édition:

yannick63430

XLDnaute Junior
Re : utilisation de la fonction ajuster sous word depuis excel

bonjour sigismond,

merci encore de m'aider, en effet mon problème se situe sur l'ajustement de la largeur des tableaux. j'ai compris comment m'occuper de la hauteur via un ajustement des mes styles sous word.
par contre pour les ajustements largeur, j'ai donc pensé, à force de chercher, à utiliser la fonction macro suivante :
Selection.Goto What:=wdGoToBookmark, Name:="RANGE!A1:I33"
via l'enregistrement d'une macro word, j'ai sélectionner le signet tableau suivant.

Cependant via ma macro de transfert excel, cette dernière ne comprend pas. je pense qu'elle n'arrive pas à effectuer l'opération sous word.
J'ai essayé d'ajouter WordDoc. mais sans succès!!!

Y a-t-il une solution pour qu'il puisse comprendre d'effectuer cette opération sous word depuis excel??

merci
Cordialement
Yannick



ma macro sous word pour les deux tableaux:
'1er tableau cf SIG dans excel et signet RUBRIQUES dans word
Selection.GoTo What:=wdGoToBookmark, Name:="RANGE!A1:I33"
Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)

'2eme tableaux cf tableauCP dans excel et word
Selection.GoTo What:=wdGoToBookmark, Name:="RANGE!E1:M37"
Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote