IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Enregistrement d'un fichier Excel en fichier plat


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut Enregistrement d'un fichier Excel en fichier plat
    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

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut
    Merci pour la réponse !

    je teste tout de suite

  4. #4
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut
    merci pour l'aide,

    c'est de toute manière plus propre que mon propre code,
    néanmoins ça ne résout pas le problème de retours à la ligne dans les cellules : la structure du fichier csv reste inconstante.

  5. #5
    Membre éprouvé
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Novembre 2004
    Messages : 388
    Par défaut
    Convertir un fichier excel via ODBC cela conviendrais ?
    (attention il faudra télécharger le client ODBC du même niveau que votre Excel, exemple si votre Excel est du 32bit faudra télécharger ODBC 32, et Powershell 32)

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par trobert Voir le message
    néanmoins ça ne résout pas le problème de retours à la ligne dans les cellules
    Non car la solution proposée précédemment se charge uniquement d'exporter une feuille Excel au format Csv.
    Il te faut utiliser OLE Automation pour contrôler et transformer les lignes de ton fichier XL avant de l'enregistrer.

    Peut être qu'ODBC peut faciliter ce traitement au prix d'une dépendance.

Discussions similaires

  1. enregistrer un fichier plat
    Par anaisanais dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/01/2008, 12h15
  2. Réponses: 11
    Dernier message: 13/09/2007, 15h25
  3. [Excel] Enregistrement d'un fichier excel chez l'utilisateur
    Par papyzapp dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/06/2006, 12h01
  4. [VBA-E]enregistrement d'un fichier excel
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/04/2006, 11h43
  5. Enregistrement d'un fichier Excel par automation
    Par tiopan dans le forum Access
    Réponses: 2
    Dernier message: 04/12/2003, 19h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo