Bonjour à tous,
Pour plus de lisibilité, je créé ce topic avec les mises à jour qui s'imposent.
J'ai un fichier excel, d'une dizaine d'onglets, qui me sort au final 3 onglets utiles, synthétiques, mis en forme et qu'il faut que j'exporte sur Word.
J'ai regardé l'export avec liaison d'Excel sous Word et j'ai trouvé deux modes de collages plutôt pratiques : Avec liaison - Feuille de calcul Excel ou Avec liaison - Image en mode point.
En tout cas si j'utilise un des deux, que je réduis par les coins le tout pour que ça rentre en largeur ma feuille A4, ça donne quelque chose de plutôt correct et qui se modifie selon ce que je tape sur Excel.
j'ai trouvé sur le net comment faire pour générer les plages nommées comme mes sauts de page (ce qui me permet d'avoir une plage nommé par page Word):
Donc maintenant il ne manque plus qu'à faire une extraction de ces plages nommées sur Word.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 test() suppNomsPage "En_tête" nommerPages "En_tête" suppNomsPage "Descriptif" nommerPages "Descriptif" suppNomsPage "Carac_tech" nommerPages "Carac_tech" End Sub Sub nommerPages(nomF As String) Dim HPB As HPageBreak, numP As Long, nom As String Dim pl As Range, lig As Long, col1 As Long, nbCol As Long, derlig As Long ActiveWindow.View = xlPageBreakPreview With Sheets(nomF) On Error GoTo fin Set pl = Range(.PageSetup.PrintArea) On Error GoTo 0 col1 = pl.Column: nbCol = pl.Columns.Count: derlig = pl.Row + pl.Rows.Count - 1 lig = pl.Row For Each HPB In .HPageBreaks numP = numP + 1 Set pl = .Cells(lig, col1).Resize(HPB.Location.Row - lig, nbCol) nom = nomF & "!page_" & Format(numP, "00") pl.Name = nom lig = HPB.Location.Row Next HPB If lig < derlig Then numP = numP + 1 Set pl = .Cells(lig, col1).Resize(derlig - lig + 1, nbCol) nom = nomF & "!page_" & Format(numP, "00") pl.Name = nom End If End With End Sub Sub suppNomsPage(nomF As String) Dim nom As Name For Each nom In ActiveWorkbook.Names If Left(nom.Name, Len(nomF) + 6) = nomF & "!page_" Then nom.Delete Next nom End Sub
Pour ça je verrais bien un code du style
Ouvrir Word,
copier page 1 de la feuille En_tête,
coller sur Word en tant qu'image mode point, (largeur collage = large page Word, serait la cerise sur le gâteau)
si page_02 de en_tête existe, alors copier/coller image mode point à la page 2 du word
puis checker si page_03 existe etc,
sinon passer à l'onglet suivant,
copier page_01 de l'onglet Descriptif, puis coller sur Word à la page suivante
checker si page_02 de descriptif existe, etc
puis passer au dernier onglet Carac_tech
Et idem page_01 copier/coller sur word à la page suivant etc.
Sinon on peut aussi copier/coller sur word puis insérer un saut de page sur word, comme ça on est à la suivante
Si ça peut aider, le collage se fait comme ça
Mais c'est tout ce que je sais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 .PasteSpecial Link:=True, DataType:=wdPasteBitmap, Placement:= _ wdInLine, DisplayAsIcon:=False
Voilà, merci à tous, hésitez pas si je peux éclaircir quelques points
Partager