Ajuster tableaux Excel a une page Word

Bonjour à tous,

Dans ma macro j'ouvre un document Word depuis Excel pour y coller des tableaux. Petit soucis : une fois les tableaux collés ceux-ci débordent de la page Word.

J'ai réussi à trouver plusieurs lignes de codes pour résoudre ce problème :

La 1ère, une fois le tableau collé dans le document Word :

docWord.Tables(1).AutoFitBehavior wdAutoFitWindow

où le chiffre 1 indique qu'on applique cette modification au 1er tableau de notre document Word).

la 2nde (obtenue sur un poste similaire sur ce site), qui colle le tableau en format image et l'ajuste directement à la page Word :

appWord.Selection.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, Placement:=wdInLine, DisplayAsIcon:=False

Le problème est que j'aimerais coller ces tableaux sous un format "normal" et non un format image, ce qui me permet de remodifier des valeurs par la suite. Le second est que j'utilise un Userform en début de macro qui, selon le choix de l'utilisateur, va copier des tableaux différents a des endroits eux aussi différents de mon document Word et donc utiliser un index pour dire "réajuster les tableaux 5, 12, 45 et 62" ne serait sans doute pas la meilleure solution (surtout s'ils sont amenés a changer de place par le futur).

Voici un extrait de mon code actuel :

Code de l'Userform :

Private Sub OK_Click()

Macro
'Lorsque l'utilisateur clique sur le bouton "OK" de l'userform, on lance le module "Macro"

End Sub

Private Sub UserForm_Initialize()

ComboBox1.AddItem "Choix1"
ComboBox1.AddItem "Choix2"

End Sub

Voici un extrait simplifié du module "Macro" :

Option Base 1 

Sub Macro()

Dim appWord As Word.Application
Dim docWord As Word.Document
Dim k As Integer
Dim p As Integer
Dim Tableau(173) As String 'Liste de signets déclarée dans le code et utilisée pour coller les tableaux Excel
Dim TableauActuel As String
Dim Plage1erChoix(35) As String 'Liste de plages Excel associées au 1er choix de l'userform
Dim Plage2emeChoix(143) As String 'Liste de plages Excel associées au 2eme choix de l'userform
Dim PlageActuelle As String

k=1
p=1

Tableau(1)="1er_signet"
'Liste de signets pour le collage des tableaux ici 
Tableau(173)="dernier_signet" 

Plage1erChoix(1)="1ère_plage" 
'Liste de plages Excel ici 
Plage1erChoix(35)="dernière_plage"

Plage2emeChoix(1)="1èreplage"
'Liste de plages Excel ici 
Plage2emeChoix(143)="1èreplage"

Select Case UserForm4.ComboBox1.ListIndex 'En fonction du choix de l'utilisateur (Choix1/Choix2/Choix3/Choix4/Choix5) on va appliquer une des boucles suivantes :

Case 0 'Si l'utilisateur a choisi "choix 1"
    Workbooks("MonClasseur").Worksheets("Feuille1").Activate
    For t = 1 To 173 'Pour les signets des tableaux 1 à 173
        If t = 1 Or t = 2 Or t = 3 Or t = 8 Or t = 9 Or t = 10 Or t = 11 Or t = 18 Or t = 19 Or t = 54 Or t = 55 Or t = 56 Or t = 61 Or t = 62 Or t = 63 Or t = 64 Or t = 71 Or t = 72 Or t = 107 Or t = 108 Or t = 109 Or t = 114 Or t = 115 Or t = 116 Or t = 117 Or t = 124 Or t = 125 Or (t >= 160 And t <= 167) Then
        TableauActuel = Tableau(t)
        PlageActuelle = Plage1erChoix(p)
        Range(PlageActuelle).Copy
        appWord.Selection.Goto What:=wdGoToBookmark, Name:=TableauActuel
        appWord.Selection.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, Placement:=wdInLine, DisplayAsIcon:=False
        p = p + 1
        Else: TableauActuel = Tableau(t)
        docWord.Bookmarks(TableauActuel).Range.Text = Workbooks("MonClasseur").Worksheets("Feuille1").Range("Z1000") 'si l'on se situe sur les signets des tableaux associés au choix 2, je remplie le signet par la cellule "Z1000" qui est vide. 
        End If
    Next

 Case 1 'Si l'utilisateur a choisi "choix 2"
    Workbooks("MonClasseur").Worksheets("Feuille1").Activate
    For t = 1 To 173 'Pour les signets des tableaux 1 à 173
        If t < 25 Or (t >= 26 And t <= 34) Or (t >= 39 And t <= 48) Or (t >= 54 And t <= 77) Or (t >= 79 And t <= 87) Or (t >= 92 And t < 102) Or (t >= 107 And t <= 130) Or (t >= 132 And t <= 140) Or (t >= 145 And t <= 154) Or t >= 160 Then
        TableauActuel = Tableau(t)
        PlageActuelle = Plage2emeChoix(p)
        Range(PlageActuelle).Copy
        appWord.Selection.Goto What:=wdGoToBookmark, Name:=TableauActuel
        appWord.Selection.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, Placement:=wdInLine, DisplayAsIcon:=False
        p = p + 1
        Else: TableauActuel = Tableau(t)
        docWord.Bookmarks(TableauActuel).Range.Text = Workbooks("MonClasseur").Worksheets("Feuille1").Range("Z1000") 'si l'on se situe sur les signets des tableaux associés au choix 1, je remplie le signet par la cellule "Z1000" qui est vide. 
        End If
    Next   

 End select 

 End sub   

Merci pour votre aide !

bonjour

pas de VBA

dans Word, menu Insertion Objet (faut chercher)

navigue vers ton Excel

avec liaison

dans Word calibre l'affichage, il ne bougera plus par la suite en principe

Rechercher des sujets similaires à "ajuster tableaux page word"