Comment générer automatiquement un tableau Word à partir d’Excel ?

Loudho

XLDnaute Nouveau
Bonjour,
Dans le cadre de mon activité, j’ai besoin de présenter différents tableaux dans mes rapports.

Mes rapports sont au format Word que je rédige en fonction des données et des résultats que j’obtiens à partir d’Excel.

Les tableaux que j’insère dans mes rapports, synthétise mes résultats Excel. Ainsi, en fonction de la mission, mes tableaux peuvent varier.

En effet, il peut y avoir plus ou moins de lignes et plus ou moins de colonnes et donc, par exemple, avoir un tableau 6 colonnes et 20 lignes et également 8 colonnes et 30 lignes.

Je me demande donc s’il est possible de générer automatiquement le bon tableau dans Word en lui indiquant le nombre de lignes et le nombre de colonnes. Est-ce possible, et si oui comment ?

Pour rapatrier les données Excel vers Word, je pense utiliser le publipostage. Est-ce que cela semble cohérent et surtout compatible avec ce qui est évoqué au dessus ?

Pouvez-vous m’indiquer ce que vous feriez si vous aviez à créer cela et, comment vous le feriez.

Merci,
Ludovic
 

GPLIONEL

XLDnaute Occasionnel
Re : Comment générer automatiquement un tableau Word à partir d’Excel ?

Bonjour Loudho

Je pense que si le tableau est dans Excel, la meilleure solution est de le copier dans excel et de faire un collage spécial avec liaison dans word. Tout changement dans excel sera automatiquement mis à jour dans Word.
 

Loudho

XLDnaute Nouveau
Re : Comment générer automatiquement un tableau Word à partir d’Excel ?

cela peut effectivement fonctionner. pour le moment je me dépatouille comme cela. En revanche je souhaite automatiser pour être plus productif et surtout, pour supprimer les longues corvées de mises en formes.
J'ai donc créer des formulaires sous Excel. je les renseigne et j'obtiens mes résultats.

Les résultats sont présenter à mes clients, je souhaites donc qu'il s'intègre parfaitement dans un rapport type.

Sauf que le nombre de colonnes et de lignes peuvent varier. Je souhaite donc une procédure me permettant d'automatiser cela et de récuperer les résultats sous Word.

Je me dis que cela doit être possible ?

Merci
 

fred65200

XLDnaute Impliqué
Re : Comment générer automatiquement un tableau Word à partir d’Excel ?

bonjour Louhdo

Dans le fichier joint, une solution pour copier un tableau Excel dans un document Word.

Je te laisse l'adapter.
N'hésite pas à revenir sur ce post pour plus d'info.
Salutation
fred65200
 

Pièces jointes

  • Louhdo Vers Word.zip
    12.6 KB · Affichages: 948

Loudho

XLDnaute Nouveau
Re : Comment générer automatiquement un tableau Word à partir d’Excel ?

Merci bcp, c'estpas mal.

En revanhe je ne saisie pas tout, est-ce qu'il t'es possible de m'expliquer comment tu as fait ?, merci

Par ailleurs , est-ce que tu penses que l'on peut figer une mise en forme particulière de manière à ne pas avoir un tableau type Excel avec de groses cellules.

J'aiu en effet envie d'une mise en forme particulière (et comme je n'arre pas à ajouter ue pièce jinte sur le forum, jene peux te mntrer ce que je voudraos comme mise en forme)
 

fred65200

XLDnaute Impliqué
Re : Comment générer automatiquement un tableau Word à partir d’Excel ?

bonjour loudho

dans ton premier post, tu parles de tableaux à 6 ou 8 colonnes, celui que tu nous a envoyé pour démo en contient 10.


je t'ai fait la mise en forme que tu désirais (bordure, fond de couleur pour la première ligne, hauteur de lignes (première différente), largeur de colonne (saisies dans un tableau avec les largeurs en centimètres), alignement de texte pour la première ligne, dont texte orienté à 90° pour les colonnes 7 à 9).

Je ne manipule pas très bien Word, le code peux certainement être amélioré.

Copie le code ci-dessous et colle le dans le module1 du classeur de 19h42 en remplacement du code existant.

Code:
Sub CopieTableauDansWord()
'NÉCESSITE LA RÉFÉRENCE MICROSOFT WORD XX.X OBJECT LIBRARY
Dim tabLarg As Variant
  tabLarg = Array("", 1.38, 1.05, 2.87, 1.51, 1.97, 1.58, 0.75, 1.94, 0.75, 2.22)
'ouvrir un doc Word
On Error Resume Next
    Set W = GetObject(Class:="Word.Application")
    If W Is Nothing Then Set W = New Word.Application: W.Visible = True: Err.Clear
On Error GoTo 0
W.ScreenUpdating = False
On Error GoTo fin
W.Activate
W.Documents.Add
'Copie du tableau
ThisWorkbook.Sheets(1).Range("D6").CurrentRegion.Copy
Set S = W.ActiveWindow.Selection
With S
    .ParagraphFormat.Alignment = 3 ' centré
    .Font.Bold = True    'gras
    .TypeText "Le tableau Excel"
    'collage du tableau dans nouveau doc Word
    'arg1 lié, arg2 mise en forme Excel = false ou Word =true, arg3 RTF = true, HTML = false
    .PasteExcelTable False, False, False
    .ParagraphFormat.Alignment = 3  ' aligner à gauche
    .Font.Bold = True
    .TypeText vbLf & "Le tableau est copié et formaté.": .Font.Bold = False: .TypeText vbLf & "fred65200"
End With
'''''chemin = ThisWorkbook.Path & Application.PathSeparator & "Loudho"
With ActiveDocument.Tables(1)
  'largeur en centimetres
  .PreferredWidthType = wdPreferredWidthPoints
  'bordures
  .Borders.Enable = True 'bordures par défaut
'  .Borders.InsideLineStyle = wdLineStyleSingle
'  .Borders.OutsideLineStyle = wdLineStyleSingle 'wdLineStyleDouble
 'ajustement automatique
 ' .AutoFitBehavior wdAutoFitWindow
  'hauteur de lignes
  .Rows.SetHeight RowHeight:=CentimetersToPoints(0.4), HeightRule:=wdRowHeightExactly
    With .Rows(1)
      .SetHeight RowHeight:=CentimetersToPoints(2.45), HeightRule:=wdRowHeightExactly
      'couleur de fond 1ere ligne
      .Shading.BackgroundPatternColor = RGB(196, 188, 150)
      'alignement
      .Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
      .Range.Cells.VerticalAlignment = wdCellAlignVerticalCenter
    End With

   For i = 7 To 9
    .Cell(1, i).Range.Orientation = wdTextOrientationUpward
  Next
  'largeur colonnes
  For i = 1 To .Columns.Count '  ou UBound(tabLarg)
    .Columns(i).SetWidth ColumnWidth:=CentimetersToPoints(tabLarg(i)), RulerStyle:=1
  Next
End With

chemin = ThisWorkbook.Path & Application.PathSeparator & "Loudho"

W.ActiveDocument.SaveAs Filename:=chemin
AppActivate "Microsoft Excel"
MsgBox "Document enregistré" & vbLf & chemin
AppActivate "Microsoft Word"
fin:
W.ScreenUpdating = True
Set W = Nothing
End Sub
Cordialement
fred65200
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Comment générer automatiquement un tableau Word à partir d’Excel ?

Bonjour
Dans Word il serait sans doute plus simple de définir et utiliser des styles pour formater le tableau.
La solution du publipostage dans un tableau prévu pour est aussi une bonne piste.
Sinon pour un cas nettement + complexe que le tiens j'avais fais l'inverse : créer un tableau dans Word et le remplir par macro en allant chercher les données dans Excel ou un fichier texte structuré.
 

chris

XLDnaute Barbatruc
Re : Comment générer automatiquement un tableau Word à partir d’Excel ?

Re

J'en ai cité 3 !

Je pense que tu parles de la dernière. Voir si cela correspond à ton cas.
J'avais un catalogue de produits trop complexe pour le publipostage et avec des mise à jour régulière dans la base de données de la gestion commerciale portant sur la désignation (parfois) et le prix (plus souvent).
La macro dans Word se positionnait sur le 1er code produit et le recherchait dans le fichier texte pour récupérer la nouvelle désignation et le prix, puis passait à la ligne du dessous dans le tableau et faisait la même chose pour le second code produit et ansi de suite.
Le même code produit existant à plusieurs endroits du catalogue et le fichier texte n'ayant qu'une fois le code, je n'avais que le code comme repère.
Dans ton cas, si le tableau Word et le tableau Excel sont classés de façon similaire tu peux te repérer de façon topographique, ce qui est plus simple.

Mais il est sans doute plus simple de creuser la piste publipostage avant de s'embarquer vers du 100% VBA.
 

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 256
Membres
102 839
dernier inscrit
Tougtoug