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 :

Importer des fichiers csv dans un fichier Excel.


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
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Par défaut Importer des fichiers csv dans un fichier Excel.
    Bonjour à tous,

    Aujourd'hui j'ai debuté un stage de 2 mois dans une entreprise tiers. Il m'a été atribué de faire en powershell, une commande qui concatenerai des fichiers en .csv et/ou .xlsx en un seul fichier excel, chacun separé par un onglet (chaque dossier copier donnerai sont nom à la feuille sur laquelle elle a été copier).
    Biensur je ne vous demande pas de me donner la solutions ou de m'écrire le code.
    Je viens à vous aujourd'hui pour que l'un de vous m'indique la marche a suivre, ou me donne un site de "powershell pour les nuls" merci ! (je n'ai jamais fait de powershell, j'ai des bases en c#, php, html, css)

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 349
    Par défaut
    Bonsoir,

    Quelques pistes pour démarrer :

    - Utiliser la cmdlet Import-Csv pour mettre le contenu du fichier dans une variable
    - Instancier un objet COM Excel en utilisant la cmdlet New-Object

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Par défaut
    Re Bonjour,

    Alors voila ou j'en suis :

    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
    $cpt = 0
    #Recherche dans le dossier avec les fichiers Excel
    $dossier = "C:\Users\ReyAn\Desktop\Projet Excel\Test_concat\1er test\Essaie"
    $dossiers = Get-ChildItem $dossier  
    #Création d'un fichier EXCEL
    $file = new-item "CompteRendu.xls"type file -force
    #Lancer Excel
    $excel = new-object -c Excel.Application
    $excel.visible = $false
    $excel.DisplayAlerts = $False
    #Boucle pour recuperer les fichiers
    foreach ($item in $dossiers)
    {
        #Lien des fiches source et target
        $file1 = 'lien...'+$item #source
        $file2 = 'Lien...' #target
        $wb1 = $excel.workbooks.open($file1, $null, $true) #open source, readonly
        $wb2 = $excel.workbooks.open($file2) #open target
     
        #Boucle pour traiter toutes les feuilles d'un classeur
        for ($i=1; $i -le $item.sheets.count; $i++)
        {
            #Feuille source a copier
            $sheetToCopy = $wb1.sheets($i)
            #Choix de la feuille où copier 
            $sh2_wb2 = $wb2.sheets.item($cpt)
            #La copie(Action)
            $sheetToCopy.copy($sh2_wb2) 
            $cpt ++
        }
        $wb1.close($false) # close source workbook w/o saving
        $wb2.close($true) # close and save destination workbook
     
    }
     
    #Sauvegarde
    $excel.ActiveWorkbook.SaveAs('lien...') 
    #--
    $excel.Quit()

    Cependant j'ai toujours une erreur : "Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null." pour le SaveAs()

    Auriez vous une petite idée ?

    PS : Merci Canvas de ta réponse.

  4. #4
    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,
    ActiveWorkbook, si dans les instructions précédentes tu les fermes tous il ne doit pas en rester d'actif, cqfd.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Par défaut
    Bonjour,

    tout d'abord merci de votre réponse.

    Peut importe le SaveAs : -$WorkBook.SaveAs()
    -$Excel.workbook.SaveAs()

    l’erreur est toujours la même. Je pense qu'il y a une erreur soit, lors de la récupération des données soit lors de l'import. Donc a savoir, soit le Get-ChildItem soit ma boucle FOR. Y voyez-vous des erreurs ?

Discussions similaires

  1. [Powershell] Filtrer en powershell
    Par johnbobby dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 10/10/2012, 17h15
  2. PowerShell - Traitement de fichier.txt
    Par koKoTis dans le forum Windows
    Réponses: 3
    Dernier message: 23/07/2007, 18h25
  3. [Vista] Comment ouvrir la console PowerShell ?
    Par wace dans le forum Windows Vista
    Réponses: 4
    Dernier message: 18/05/2007, 09h55

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