Script qui récupère données fichier Excel vers document

Script qui récupère données fichier Excel vers document - Sécurité - Windows & Software

Marsh Posté le 08-05-2019 à 13:57:34    

Bonjour,
 
Je ne sais pas si je dois utiliser un script, ou du powershell, ou du python, ou autres.
 
Systeme exploitation: Windows 7, 10, Server 2008 & 2016
 
On m'a demandé de créer un script qui permet de recuperer des donnees d'un fichier Excel (dans des cellules specifiques) pour les exporter via un fichier Word (doc) avec des endroits bien définis, et par la suite enregistrer automatiquement ce fichier word avec un nom prédéfini dans le fichier Excel.  
 
 :ouch:  
Avez-vous une idée de comment je peux faire?
 
exemple:  
1. Fichier source (Excel):
Cellule A1 --> TOTO,
Cellule B1 --> Vert,
Cellule C1 --> lien vers une photo (via un chemin se trouvant sur un serveur de fichiers),
Cellule D1 --> Nom du fichier (dans notre exemple, on l'appellera TOTO_VERT)
Cellule A2 --> TITI,
Cellule B2 --> Bleu,
Cellule B3 --> une autre photo (chemin se trouvant sur le serveur de fichiers),
Cellule D2 --> TITI_BLEU
...
2. Fichier a generer (Word, .doc):
Dans le fichier word, un endroit pour le A1,
Un autre endroit pour B1,
Un autre endroit pour C1 (donc doit mettre la photo),
 
3. Puis enregistre le fichier, via la cellule D1 (donc dans notre exemple : TOTO_VERT) sur un répertoire défini sur le serveur de fichiers
 
et ainsi de suite.
 
 
Une idée pour ma demande?
 :hello:  :)  :)  
Merci par avance cher développeur.
 
 

Reply

Marsh Posté le 08-05-2019 à 13:57:34   

Reply

Marsh Posté le 08-05-2019 à 23:12:41    

Oui, utilises le langage intégré dans la suite MS Office. Word et Excel possèdent le langage de dév VBA (les macros). A partir de ton fichier Excel, tu peux mettre un bouton qui va lancer ton script pour intégrer les donnée soù tu veux dans ton doc Word. Tu peux aussi faire l'inverse et mettre ce bouton dans ton doc Word et lancer le script qui va ouvrir le fichier Excel et mettre les données où il faut.
 
Autre solution : passer par langage externe genre AutoIt qui va prendre les données d'Excel pour les mettre dans ton Word. Ca peut se faire facilement via l'interface OLE ;) Tu peux aller demander de l'aide dans la cat "programmation" mais on ne te fera pas le boulot à ta place.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 09-05-2019 à 19:47:17    

Euh, pourquoi pas du bête publipostage ? c'est exactement ce à quoi ça sert.
 
https://support.office.com/fr-fr/ar [...] 948fa3d7d3


---------------
Survivre à sa migration WP->Android /  Les features Windows que vous ne connaissez pas
Reply

Marsh Posté le 20-05-2019 à 15:47:54    

flash_gordon a écrit :

Euh, pourquoi pas du bête publipostage ? c'est exactement ce à quoi ça sert.
 
https://support.office.com/fr-fr/ar [...] 948fa3d7d3


 
Merci beaucoup, ca fonctionne.
 
Apres, j'ai utilisé une macro VBA pour exporter toutes les feuilles séparément, par contre, ca laisse toujours une page en plus. que faire? Une idee?
 
Merci d'avance,
 
Nicolas

Reply

Marsh Posté le 20-05-2019 à 15:48:19    

voici la marco:
 
Sub SplitIntoPages()
Dim docMultiple As Document
Dim docSingle As Document
Dim rngPage As Range
Dim iCurrentPage As Integer
Dim iPageCount As Integer
Dim strNewFileName As String
Application.ScreenUpdating = False 'Makes the code run faster and reduces screen flicker a bit.
Set docMultiple = ActiveDocument 'Work on the active document (the one currently containing the Selection)
Set rngPage = docMultiple.Range 'instantiate the range object
iCurrentPage = 1
'get the document's page count
iPageCount = docMultiple.Content.ComputeStatistics(wdStatisticPages)
Do Until iCurrentPage > iPageCount
If iCurrentPage = iPageCount Then
rngPage.End = ActiveDocument.Range.End 'last page (there won't be a next page)
Else
'Find the beginning of the next page
'Must use the Selection object. The Range.Goto method will not work on a page
Selection.GoTo wdGoToPage, wdGoToAbsolute, iCurrentPage + 1
'Set the end of the range to the point between the pages
rngPage.End = Selection.Start
End If
rngPage.Copy 'copy the page into the Windows clipboard
Set docSingle = Documents.Add 'create a new document
docSingle.Range.Paste 'paste the clipboard contents to the new document
'remove any manual page break to prevent a second blank
docSingle.Range.Find.Execute Findtext:="^m", ReplaceWith:=""
'build a new sequentially-numbered file name based on the original multi-paged file name and path
strNewFileName = Replace(docMultiple.FullName, ".doc", "_" & Right$("000" & iCurrentPage, 4) & ".doc" )
docSingle.SaveAs strNewFileName 'save the new single-paged document
iCurrentPage = iCurrentPage + 1 'move to the next page
docSingle.Close 'close the new document
rngPage.Collapse wdCollapseEnd 'go to the next page
Loop 'go to the top of the do loop
Application.ScreenUpdating = True 'restore the screen updating
'Destroy the objects.
Set docMultiple = Nothing
Set docSingle = Nothing
Set rngPage = Nothing
End Sub
 

Reply

Marsh Posté le 20-05-2019 à 18:10:20    

Pour de l'aide sur les macro VBA -> cat "programmation" ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed