Bonjour,

je cherche une solution à mon problème depuis déjà plusieurs jours et je reste coincé sur la dernière étape :

je dois transformer un fichier excel (xlsx) en fichier plat (le format importe peu, séparateur ; ou tab etc.... je peux traiter tous les formats en aval, du moment qu'il s'agit d'un fichier plat propre).
Le fichier excel est un fichier de travail qui comporte de nombreuses cellules incluants des retours à la ligne, l'enregistrement direct du fichier dans un format csv me donne donc un résultat épouvantable.

Je ne veux pas passer par une macro excel pour des problèmes de maintenance,
Jusq'à présent j'ai essayer de lancer la fonction "Remplacer" d'excel via powershell, mais je n'arrive pas à transmettre le caractère Lf dans les paramètres du remplacer.

Je vous joins le code auquel je suis parvenu,
je suis ouvert à tout vos conseils :


Code PowerShell : 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
Set-ExecutionPolicy Unrestricted
 
# Fichier source
$ListeF = "BSC Board - Synthesis -  Light version "
# Fichier cible
$ListeD = "Test follow-up Table"
# Répertoire de travail
$DirShip = "D:\TEMP\Calcul ETA\Copie Shipment\"
# $DirShip = "\\SRV-DFS-FRANCE\dfs-france-chine\RELAY\7 - ACHATS\1 - BSC BOARD\"
 
 
# Horodatage
$Hy = $(get-date -f yyyy)
$Hm = $(get-date -f MM)
$Hd = $(get-date -f dd)
$Hd = "11"
 
$myfile = $DirShip + $ListeF + $Hy + " " + $Hm + " " + $Hd + ".xlsm"
 
 
# ================== Remplacement des saut de pages
$Excel = New-Object -ComObject Excel.Application
$Workbook=$Excel.Workbooks.Open($myfile)
Start-Sleep -s 2
$StrSheet = "Synthesis"
$WorkSheet = $Workbook.WorkSheets.item($StrSheet)
 
 # vbCr et vbCrLf
$strrep = [char]13 + [char]10
$WorkSheet.Columns.Replace($strrep,'12')
$strrep = \r\n
$WorkSheet.Columns.Replace($strrep,'12')
 
 
$Workbook.Close()
Write-Output "Fermeture du classeur"
 
 
$excel.Application.quit()
Write-Output "Fermeture de l'application"
d'avance merci,

Thomas