Mise en page/export Excel sur Word

Résolu/Fermé
Camille - 18 juil. 2019 à 16:49
 Camille - 12 août 2019 à 14:10
Bonjour à tous !

Alors je vais peut-être vous donner du fil a retorde mais je sens qu'il y a truc à creuser avec ce que je souhaite faire. o_O

J'ai un fichier excel, d'une dizaine d'onglets, qui me sort au final 3 onglets utiles, synthétiques, mises en forme et qu'il faut que j'imprime.

J'ai vu comment faire une impression, assez brute des onglets qui m’intéressent.

Comme je voulais aussi avoir mes onglets sur PDF voire Word, j'ai regardé l'export avec liaison d'Excel sous Word.
Et à partir de là, il y a peut-être beaucoup plus efficace à faire, ça je ne sais pas :p

En tout cas 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.
Par la suite je peux modifier la source des liaison pour adapter le word avec un autre version du fichier Excel.

Le problème (on y vient) c'est que ce que j'ai à mettre sur mon word prend parfois plusieurs pages et parfois non. (ça varie en fonction des équipements sélectionnés/cachés)
Je vois que sur word, le lien se fait via une zone d'impression. Du coup je me dis qu'il faudrait que la zone d'impression fasse tout pile une page A4, ou fasse un maximum de 25 lignes par exemple)

En pièce jointe, mon fichier Excel simplifié et le fichier Word: https://www.cjoint.com/c/IGsoUhB3rSP

Comme faire varier cette zone d'impression pour que le résultat sur Word fasse la longueur d'une page puis qu'une autre soit créer (ou est vide par défaut) dès que la zone d'impression précédente devient trop longue ?

Merci à tous ! :)
A voir également:

6 réponses

via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
25 juil. 2019 à 09:10
Peut être
Repose ta question sur le forum dédié à Word, tu devrais quelqu'un pour t'aider
1
Raymond PENTIER Messages postés 58393 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 23 avril 2024 17 095
19 juil. 2019 à 03:42
Bonsoir.

Si les ingénieurs et les informaticiens ont pris la peine de créer des logiciels distincts, c'est pour offrir à l'utilisateur des outils adaptés à un usage précis ; en l'occurrence :
  • Tableurs = Calculs, graphiques, opérations complexes, tris et filtres ...
  • Traitements de texte = Documents rédigés (lettres, rapports, fiches, mémoires, tableaux, formulaires) ...
  • Bases de données = Classements, listes, requêtes, rapports ...
  • Gestion d'image = Création/modification de dessins, peinture, croquis, plans 2D-3D
  • Traitement de photos = Retouches, transformations, recoloration, arrière-plans ... etc.

- Si tu as de gros tableaux de calculs, il faut les diffuser sous forme de fichiers Excel, Numbers ou Calc.
- Si tu as un rapport de stage à présenter, même s'il contient beaucoup d'illustrations, réalise-le avec Publisher, Word, Writer, PowerPoint ou Pages, mais pas avec Access, Paint ou Calc
- Si tu as d'énormes photos de plusieurs Mo avec des millions de pixels, il faut les garder au format JPEG, PNG, BMP, TIFF ou même GIMP ... etc.

Donc si tu as une feuille Excel de plus d'une page, n'essaie pas de l'insérer dans un fichier PowerPoint ou Word : le résultat sera forcément décevant !
0
Bonjour Raymond,

Merci de me partager votre point de vue.

Je me suis peut-être mal exprimée mais ce n'est pas des gros tableur que j'ai à transposer sur Excel, juste une présentation synthétique en A4.
Après si Microsoft (et les autres développeurs de logiciel de traitement) s’embêtent à faire en sorte que leur application s'imbrique c'est pas pour rien je pense ^^

D'ailleurs, en lisant d'autres post, j'ai l'impression que c'est faisable avec du VBA, mais je serai incapable de le faire :/

En gros j'ai 3 onglets :

- Le premier fait 1 à 2 pages
- Le deuxième fait de 1 à 15 pages, facilement identifiable (l'utilisateur va faire en sorte que chaque page se termine au même endroit (par exemple chaque ligne 70 fait une nouvelle page : 70, 140, 210, etc)
- Le troisième onglet comme le premier fait de une à deux pages

Dans le Word, les onglets doivent être dans l'ordre.

Ce serait top d'avoir la génération du fichier Word avec un macro, j'ai vu d'autres personnes y arriver avec moins de 10 lignes de code.

Comme ça pas de changement de source à faire puisque j’obtiens un nouveau fichier Word à chaque fois. D’ailleurs le fichier Word aura le même nom que le fichier Excel.
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
19 juil. 2019 à 14:38
Bonjour à vous deux

Et si tu enregistres ton fichier Excel en PDF ?

Cdlmnt
Via
0
En effet ce serait possible, ça sort plutôt bien, mais j'ai quand même quelques inconvénients de tailles : par exemple si je veux rajouter un paragraphe simple, je dois fusionner les cellules → aller dans format de cellule → alignement → justifier .. C'est hyper chiant ^^ puis je peux pas rajouter de sommaire automatique
Je peux pas rajouter ce que je veux aussi facilement que sur Word. Avec Word je vais pouvoir facilement gérer mes numéros de page, mes en-têtes, ajouter des sauts de page, rajouter des images, etc
0
Raymond PENTIER Messages postés 58393 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 23 avril 2024 17 095
23 juil. 2019 à 19:09
Dommage : Nous, on ne sait pas faire !
Essaie sur un autre site ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Quand je passe par l'enregistreur de macro sous Word et que je fais le coller en mode point j'obtiens ça

    Selection.PasteSpecial Link:=True, DataType:=wdPasteBitmap, Placement:= _
wdInLine, DisplayAsIcon:=False


Y a peut-être quelque chose à en tirer ? ^^
0
Petit mise à jour, après plusieurs recherches sur différents forum j'ai effectivement vu que c'était possible.

Etape 1 : je génère des plages nommées de même dimension que mes saut de pages Excel

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
fin:
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

Etape 2 : Je copie chacune de ces plages et je les colle dans un Word généré pour l'occasion :
Function exist(feuille As String, nom As String) As Boolean
exist = False
On Error Resume Next
x = Sheets(feuille).Range(nom).Address
If Err.Number = 0 Then exist = True
On Error GoTo 0
End Function

Sub export_excel_to_word()
Dim obj As Object
Dim newObj As Object
Dim sh As Worksheet
Dim myFile

Set obj = CreateObject("Word.Application")
obj.Visible = True
Set newObj = obj.Documents.Add

' newObj.PageSetup.LeftMargin = CentimetersToPoints(1)
' newObj.PageSetup.RightMargin = CentimetersToPoints(1)

For n = 1 To 3
If exist("En_tête", "page_" & Format(n, "00")) Then
ThisWorkbook.Worksheets("En_tête").Range("page_" & Format(n, "00")).Copy
With obj.Selection
.PasteSpecial Link:=True, DataType:=wdPasteBitmap, _
Placement:=wdInLine, DisplayAsIcon:=False
' .PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
' Placement:=wdInLine, DisplayAsIcon:=False
.TypeParagraph
.InsertBreak Type:=7
End With

End If
Next

For n = 1 To 15
If exist("Descriptif", "page_" & Format(n, "00")) Then
ThisWorkbook.Worksheets("Descriptif").Range("page_" & Format(n, "00")).Copy
With obj.Selection
'.PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile,
.PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
.TypeParagraph
.InsertBreak Type:=7
End With
End If
Next

For n = 1 To 5
If exist("Carac_tech", "page_" & Format(n, "00")) Then
ThisWorkbook.Worksheets("Carac_tech").Range("page_" & Format(n, "00")).Copy
With obj.Selection
.PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
.TypeParagraph
.InsertBreak Type:=7
End With
End If
Next

Application.CutCopyMode = False

myFile = Replace(ActiveWorkbook.Name, "xlsm", "docx") 'remplacer "docx" par l'extension qui convient, si nécessaire
newObj.SaveAs Filename:=Application.ActiveWorkbook.Path & "\" & myFile

MsgBox "Export vers Word terminé", vbInformation + vbOKOnly, "Export vers Word"

obj.Activate 'vous pouvez jouer sur les marges pour améliorer la lecture
Set obj = Nothing
Set newObj = Nothing

End Sub


Voilà :')

Il me reste "plus qu'a" ajuster la dimension des objets collés
0