Microsoft 365 Automatisation édition de rapport

Fraad

XLDnaute Nouveau
Bonjour à tous,
Je viens à vous pour demander une aide que je ne trouve vraiment nulle part (forum/mooc etc..)
Je suis ingénieur dans un bureau d'étude, et nous avons énormément de rapport à rédiger avec plus ou moins d'informations changeantes,
J'ai donc eu l'idée d'automatiser un grand nombre d'actions qui nous font gagner du temps ( traitement de contrôles de contenu, traitements d'image de graphes, etc..)
Nous avons des excels sur lesquels nous notons toutes les informations nécessaires, et ensuite un bouton permet de générer le rapport en word ou PDF,
Jusque-là tout va bien,
Seulement les soucis arrivent quand il s'agit des tableaux, nous avons 4 tableaux types dans les modeles de rapports, et en fonction des données présentes dans l'excel, le nombre de colonne + lignes varient beaucoup,
Dans mon "projet VBA" le code utilisé est censé me permettre de choisir le nombre de ligne et de colonne que je veux dans mon rapport word final, mais il ne marche pas,
Rien n'y fait, j'ai toujours des soucis et le rapport n'est pas généré :
j'ai trois morceaux de codes, le 1er identifie le tableau d'origine, le deuxieme me permet d'ajouter des colonnes, et le troisiéme des lignes,
Je me demande donc si il est possible d'avoir uniquement un seul tableau (qui est modifié en fonction des besoins), et pas plusieurs tableaux (en effet je n'arrive pas à modifier le nombre de colonnes et de lignes sur un même tableaux, je dois donc en avoir un pour chaque sur mon word originel) et si oui, quel serait le code miracle qui pourrait m'aider :
Un bout du code en question :
VB:
Private Sub traitement_tableaux()
    Dim ws As Worksheet
    Dim nbColAjout As Integer 'nombre de colonnes à ajouter
    Dim nbLigAjout As Integer 'nombre de lignes à ajouter
    Dim i As Integer
    
 
    Set ws = Sheets("Données")
    '---------------------------------------------------------------
    'on modifie le tableau no 6 avec les données E9/F9 et E11/F11
    '---------------------------------------------------------------
    WordDoc.Tables(6).Columns(1).Cells(2).Range.Text = ws.Range("E9")
    WordDoc.Tables(6).Columns(2).Cells(2).Range.Text = ws.Range("F9")
    WordDoc.Tables(6).Columns(1).Cells(3).Range.Text = ws.Range("E11")
    WordDoc.Tables(6).Columns(2).Cells(3).Range.Text = ws.Range("F11")

"

merci pour vos eventuelles réponses !
 

Bebere

XLDnaute Barbatruc
il faut activer une référence dans l'éditeur
menu outils et cocher microsoft word 14.0 object library
Dans le code je pense qu'il faut faire comme suit
VB:
    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True
 
    Set objDoc = objWord.Documents.Add
    Set objRange = objDoc.Range
je cherche de mon côté comment faire
 

Bebere

XLDnaute Barbatruc
bonjour
le code en question est pour access/word
'excel vers word
VB:
'This example adds a blank table with three rows and four columns at the beginning of the active document.
'Copy
Sub ex()
Set MyRange = ActiveDocument.Range(0, 0)
ActiveDocument.Tables.Add Range:=MyRange, NumRows:=3, NumColumns:=4
End Sub

'This example adds a new, blank table with six rows and ten columns at the end of the active document
'Copy
Sub ex1()
Set MyRange = ActiveDocument.Content
MyRange.Collapse Direction:=wdCollapseEnd
ActiveDocument.Tables.Add Range:=MyRange, NumRows:=6, _
 NumColumns:=10
End Sub
 
'This example adds a table with three rows and five columns to a new document and then inserts data into each cell in the table.
'Copy
Sub NewTable()
 Dim docNew As Document
 Dim tblNew As Table
 Dim intX As Integer
 Dim intY As Integer
 
 Set docNew = Documents.Add
 Set tblNew = docNew.Tables.Add(Selection.Range, 3, 5)
 With tblNew
 For intX = 1 To 3
 For intY = 1 To 5
 .Cell(intX, intY).Range.InsertAfter "Cell: R" & intX & ", C" & intY
 Next intY
 Next intX
 .Columns.AutoFit
 End With
End Sub
si tu n'y parvient pas met un fichier et j'essaerai de corriger
 

Fraad

XLDnaute Nouveau
bonjour
le code en question est pour access/word
'excel vers word
VB:
'This example adds a blank table with three rows and four columns at the beginning of the active document.
'Copy
Sub ex()
Set MyRange = ActiveDocument.Range(0, 0)
ActiveDocument.Tables.Add Range:=MyRange, NumRows:=3, NumColumns:=4
End Sub

'This example adds a new, blank table with six rows and ten columns at the end of the active document
'Copy
Sub ex1()
Set MyRange = ActiveDocument.Content
MyRange.Collapse Direction:=wdCollapseEnd
ActiveDocument.Tables.Add Range:=MyRange, NumRows:=6, _
NumColumns:=10
End Sub

'This example adds a table with three rows and five columns to a new document and then inserts data into each cell in the table.
'Copy
Sub NewTable()
Dim docNew As Document
Dim tblNew As Table
Dim intX As Integer
Dim intY As Integer

Set docNew = Documents.Add
Set tblNew = docNew.Tables.Add(Selection.Range, 3, 5)
With tblNew
For intX = 1 To 3
For intY = 1 To 5
.Cell(intX, intY).Range.InsertAfter "Cell: R" & intX & ", C" & intY
Next intY
Next intX
.Columns.AutoFit
End With
End Sub
si tu n'y parvient pas met un fichier et j'essaerai de corriger
Merci BEBERE pour ton aide !
Aprés de longues heures de travail, j'y suis arrivé :)
 

Discussions similaires