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 :

Peupler une listbox avec un fichier csv [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2017
    Messages : 66
    Par défaut Peupler une listbox avec un fichier csv
    Bonjour,,

    Je cherche à peupler une listbox avec une colonne provenant d'un fichier csv. J'arrive à charger une variable avec le contenu de mon fichier mais pas à en ajouter le contenu dans la listbox. Ma boucle foreach ne fait que afficher 0 1 2 dans la console. Avant de poster je cherche toujours j'ai lu pas mal de trucs mais soi c'est pas en rapport soi c'est trop puissant pour moi...

    Voici le code :

    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
                  $MainForm2 = New-Object System.Windows.Forms.Form
                             $MainForm2.Text="PrinterInstallerMulti"
                             $MainForm2.StartPosition =  "CenterScreen"
                             $MainForm2.Width = 600
                             $MainForm2.Height = 300
                             $MainForm2.TopMost = $True
     
                           $P = Import-Csv -Path "$PSScriptRoot\Ordinateurs.csv"
     
                          write-host $p
     
                         foreach ($objet in $P) {
                         $pc = [string]$objet.name 
                        $listBox.Items.Add("$pc")
     
                                 }
     
                        $listBox = New-Object System.Windows.Forms.ListBox
                        $listBox.Location = New-Object System.Drawing.Point(55,100)
                        $listBox.Size = New-Object System.Drawing.Size(230,20)
                        $listBox.Height = 120
                        $MainForm2.Controls.Add($listBox) 
     
                        $MainForm2.ShowDialog()


    Voici le résultat :

    Nom : peupler.JPG
Affichages : 1349
Taille : 13,3 Ko

    Voici mon tableau : (que j'ai enregistré au format csv séparateur : point virgule)

    Nom : fichiercsv.JPG
Affichages : 1322
Taille : 13,7 Ko

    Merci d'avance pour vos lumières.

  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
    Par défaut
    Il serait préférable d'alimenter ta listbox qu'une fois quelle est créée

    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
    $MainForm2 = New-Object System.Windows.Forms.Form
    $MainForm2.Text="PrinterInstallerMulti"
    $MainForm2.StartPosition =  "CenterScreen"
    $MainForm2.Width = 600
    $MainForm2.Height = 300
    $MainForm2.TopMost = $True
     
    $P = Import-Csv -Path "$PSScriptRoot\Ordinateurs.csv"
     
    write-host $p
     
    $listBox = New-Object System.Windows.Forms.ListBox
    $listBox.Location = New-Object System.Drawing.Point(55,100)
    $listBox.Size = New-Object System.Drawing.Size(230,20)
    $listBox.Height = 120
    foreach ($objet in $P) {
        $pc = [string]$objet.name 
        $listBox.Items.Add("$pc")
    }
    $MainForm2.Controls.Add($listBox) 
     
     
    $MainForm2.ShowDialog()


    Tu peux aussi l'alimenter de cette facon (à la place de ta boucle foreach) :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $listBox.Items.AddRange($P.name)

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2017
    Messages : 66
    Par défaut
    Merci de ta réponse, j'avance un peu.

    ça ne fonctionne pas dès que je spécifie .name, en ne le mettant pas ma boucle ou le AddRange fonctionnent.

    Problème je me retrouve avec ça :

    Nom : listeerreur.JPG
Affichages : 1312
Taille : 14,2 Ko

    j'ai trouvé un site parlant du sujet :

    https://social.technet.microsoft.com...rverpowershell

    Du coup j'ai testé ça :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-Content $PSScriptRoot\Ordinateurs.csv | ForEach-Object {[void] $ListBox.Items.Add($_)}

    Nom : listeok.JPG
Affichages : 1324
Taille : 11,5 Ko

    C'est bon ça s'affiche correctement mais j'ai du viré mon header (si c'est bien le terme) ou en-tête en français est ce qu'il y a possibilité de garder son header dans le fichier csv et de ne pas le faire apparaitre dans la liste?

    Sinon au passage comment fais tu pour afficher ton code powershell en couleur quand tu postes? Dans mon editeur Powershell ISE il apparait bien en couleur et dès que je poste c'est gris... Question de vrai newbie

    Merci encore.

  4. #4
    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
    Par défaut
    $pc = [string]$objet.name
    Je pensais que ton header était Name mais il semble plutot être Computers
    Essaie ceci donc de remplacer .name par .Computers

    Pour mettre de la colorisation syntaxique tu doit utiliser la balise # et ajouter =powershell dans la première balise
    Code=powershell

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Initialiser une comboBox et une listbox avec un fichier texte
    Par Paibok dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 29/06/2016, 07h24
  2. Réponses: 4
    Dernier message: 22/07/2014, 16h57
  3. Comparer le contenu d'une table avec un fichier csv
    Par cdo22 dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/11/2008, 18h35
  4. [C#] Peupler une listBox avec les controls d'un panel ?
    Par clinic dans le forum Windows Forms
    Réponses: 5
    Dernier message: 11/07/2007, 20h41
  5. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46

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