Transformation information tableau excel en feuille word
Bonjour,
Je vais essayer de bien m'exprimer.
J'ai un tableau excel avec en ligne des numéros de procèdure et en colonne le nom des personnes qui l'ont en leur possession.
Je souhaiterai créer un bouton qui transformerait toutes les croix que j'ai mis dans mes colonnes dans une feuille word/excel avec le nom des personnes sachant que le nom des personnes changent en fonction des procèdures .
J'aimerai également que le nom du document, le numéro et la version soit reportés.
Je ne sais pas si je suis très claire.
Merci pour votre aide,
script de base pour convertir un tableau excel vers word
Bonjour,
Le script ci-dessous crée un document Word au format template (ça peut être changé vers .docx je pense mais le docx crée des erreurs, ça fait longtemps que je n'ai pas utilisé ce script). Il offre quelques options sur le format au niveau de Word. Mais s'il y a beaucoup de données, le temps d'exécution sera long (selon le cpu)...
Code:
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 40 41
| Sub Data2Word()
'Remember: this code requires a referece to the Word object model // (ajouter une reférence vers l'API WORD) ou bien utiliser la méthode CREATEOBJECT
'dimension some local variables
Dim rng As Range 'our source range
Dim wdApp As New Word.Application 'a new instance of Word
Dim wdDoc As Word.Document 'our new Word document
Dim t As Word.Range 'the new table in Word as a range
Dim myWordFile As String 'path to Word template
'initialize the Word template path
'here, it's set to be in the same directory as our source workbook
myWordFile = ThisWorkbook.Path & "\DocWithTableStyle.dot"
'get the range of the contiguous data from Cell A1
Set rng = Range("A1").CurrentRegion
'you can do some pre-formatting with the range here
rng.HorizontalAlignment = xlCenter 'center align the data
rng.Copy 'copy the range
'open a new word document from the template
Set wdDoc = wdApp.Documents.Add(myWordFile)
Set t = wdDoc.Content 'set the range in Word
t.Paste 'paste in the table
With t 'working with the table range
.Style = "GreenBar" 'set the style created for the table
'we can use the range object to do some more formatting
'here, I'm matching the table with using the Excel range's properties
.Tables(1).Columns.SetWidth (rng.Width / rng.Columns.Count), wdAdjustSameWidth
End With
'until now the Word app has been a background process
wdApp.Visible = True
'we could use the Word app object to finish off
'you may also want to things like generate a filename and save the file
wdApp.Activate
End Sub |
Le script ci-dessous est une routine qui prend un paramètre v de type variant je pense alors ça peut être un tableau de valeurs ou une plage de données selon ce qui convient
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Sub my_create_word_table(v)
Dim wApp As Object
Dim wDoc As Object
Dim i As Long, a As Long, x
ReDim z((UBound(v, 1) + 1) * (UBound(v, 2) + 1) - 1)
For Each x In v
z(i) = x
i = i + 1
Next
Set wApp = CreateObject("Word.Application")
Set wDoc = wApp.Documents.Add
wDoc.Range(0, 0).InsertAfter Join(z, vbTab)
wDoc.Range(0, wDoc.Range.End).ConvertToTable _
vbTab, UBound(v, 1) + 1, UBound(v, 2) + 1
wApp.Visible = True
End Sub |
Avec les différentes instructions de ces scripts, le passage en v d'un tableau excel qui ne contient que les x et le tour est joué. Cependant, je ne suis pas sûre de comprendre que le nom des personnes changent en fonction des procédures. Pour lier Word à Excel (de style liaison de classeur à classeur), c'est un peu plus délicat. Reporter le nom du document c'est facile, le nom de la version aussi (ils peuvent être dans une cellule). Je suppose que vous connaissez déjà les macros vba.
cordialement
Pascal