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 :

Remplir un combobox en fonction d'un autre [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut Remplir un combobox en fonction d'un autre
    Bonjour,

    je souhaite remplir une liste dans un combobox en fonction du choix d'un premier combobox.

    Je m'explique, j'ai un fichier CSV avec une colonne "Site" et une colonne "Serveur" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Site;Serveur
    Paris;srv75
    Lyon;srv69
    etc...
    Je souhaite que dans la 1ere liste on affiche seulement les sites, puis en fonction du choix fait par l'utilisateur, on remplisse le choix 2 par "srv75".

    J'ai déjà mis un Handler sur l'action du premier combobox mais je galère a split le CSV en deux et faire une sorte de requête ou de jointure dynamique entre les 2 listes déroulantes.

    En gros : ListeDeroulante1 => ListeDeroulante2(triée)


    Merci d'avance !

  2. #2
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Je rempli ma liste comme ceci :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    @($serveurs_list) | ForEach-Object {[void] $ServeurSite.Items.Add($_.site)}


    L'idée serait de remplir la seconde liste en fonction de ce premier choix.

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ServeurSite.add_SelectedIndexChanged({
     
    Write-Verbose -Message $ServeurSite.selectedItem.ToString() -Verbose
     
    @($serveur_list) | ForEach-Object {[void] $ServeurNom.Items.Add($_.Nom)}
    $ServeurNom.SelectedIndex       = 1
     
    })

    Mon listener fonctionne comme ceci. Je bloque pour faire la jointure dans les 2 colonnes.

    Merci

  3. #3
    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
    Je me demande l'intérêt d'avoir un deuxième combobox puisque le choix se fait via le premier (site)
    Je regarderai quand je serait sur pc mais j'ai plusieurs solution a ton problème.

  4. #4
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Je me demande l'intérêt d'avoir un deuxième combobox puisque le choix se fait via le premier (site)
    Je regarderai quand je serait sur pc mais j'ai plusieurs solution a ton problème.

    L'intérêt est de choisir son site géographique puis après choisir le serveur (d'impression en fait) correspondant.

    J'ai réussi en me basant sur Import-CSV Je lis la première colonne dans le combobox1 et fait un tri dans le combobox2 en fonction du site choisi dans le combobox2 :

    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
    @($printers_list) | ForEach-Object {[void] $PrinterSite.Items.Add($_.site)}
    $PrinterSite.add_SelectedIndexChanged({
     
            #execution de la fonction Sitechoice
            Sitechoice
     
    function SiteChoice{
     
    $index = $PrinterSite.FindString($PrinterSite.Text)
    Write-Verbose -Message $PrinterSite.selectedItem.ToString() -Verbose
    @($printers_list) | ForEach-Object {[void] $PrinterType.Items.Add($_.Nom)}
     
    $Printertype.SelectedIndex = $index
     
     
    }
     
    })

    Ca avance

  5. #5
    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
    C'est à dire qu'il peux y avoir plusieurs serveur par site ?

    Avec le csv ça serait plus facile de comprendre le besoin.

  6. #6
    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
    Un exemple si j'ai compris le besoin

    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
    #Import-Module ActiveDirectory
    Add-Type -assembly System.Windows.Forms
    $main_form = New-Object System.Windows.Forms.Form
    $main_form.Text ='GUI'
    $main_form.Width = 600
    $main_form.Height = 400
    $main_form.AutoSize = $true
     
    $ComboBox1 = New-Object System.Windows.Forms.ComboBox
    $ComboBox1.Width = 300
    $ComboBox1.Location = New-Object System.Drawing.Point (10, 10)
     
    $ComboBox2 = New-Object System.Windows.Forms.ComboBox
    $ComboBox2.Width = 300
    $ComboBox2.Location = New-Object System.Drawing.Point (10, 50)
     
    $main_form.Controls.Add($ComboBox1)
    $main_form.Controls.Add($ComboBox2)
     
    # Charge le csv
    $csv = Import-Csv -LiteralPath "test.csv" -Delimiter ";"
     
    # Rempli la combobox 1
    $null = $ComboBox1.Items.AddRange($csv.Site)
     
    # Rempli la combobox 2
    $null = $ComboBox2.Items.AddRange($csv.Serveur)
     
    # Si changement sur la combobox 1, définit l'item de la combobox 2
    $ComboBox1.Add_SelectedIndexChanged({
        $ComboBox2.SelectedIndex = $this.SelectedIndex
    })
     
    $main_form.ShowDialog()

    Je pense que je n'ai pas tout compris car tu parle aussi de tri

  7. #7
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    C'est à dire qu'il peux y avoir plusieurs serveur par site ?

    Avec le csv ça serait plus facile de comprendre le besoin.

    Oui il peut y avoir plusieurs noms par site

    Un extrait du CSV :

    Code : 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
    Site;Nom
    SAINT ETIENNE;SORP100
    ROANNE;ROAP100
    AIX EN PROVENCE;AIXP100
    SECLIN;ASQP100
    AURILLAC;AURP100
    AUXRERRE;AUXP100
    BRION;BRNP100
    CARPIQUET;CAEP100
    SAINT MARCEL;CHAP100
    SAINT MARCEL;CHAP101
    SAINT MARCEL;CHAP102
    MONTAUBAN;MONP100
    MONTAUBAN;MONP101
    MONTAUBAN;MONP102
    MONTAUBAN;MONP103
    MONTAUBAN;MONP104
    MONTAUBAN;MONP105
    Voila, les deux sites Saint Marcel et Montauban on plusieurs nom chacun...


    Je comprend ton bout de code et c'est ce que j'ai fais pour mon script. Du coup tu a bien compris ma demande.

    Le soucis restant le tri fait lors de l'action du combobox1 pour que la liste n'affiche que les "nom" correspondants au Site Choisi.

    Par exemple : L'utilisateur choisi "Montauban" , le combobox2 n'affichera que les "MONP100, MONP101 [...] MONP105" idem pour Saint Marcel.

    J'imagine peut etre une requete dans la selection des items affiché dans le combobox ?

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

Discussions similaires

  1. Remplir une combobox en fonction d'une autre et d'une textbox
    Par celthi dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/12/2014, 17h45
  2. remplir une combobox en fonction d'un autre
    Par mima_mine dans le forum Struts 1
    Réponses: 7
    Dernier message: 18/09/2008, 16h57
  3. remplir un combobox en fonction d'un autre
    Par alex.a dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/07/2007, 17h19
  4. [VBA] Remplir un champ en fonction d'un autre champ
    Par Amanck dans le forum Access
    Réponses: 6
    Dernier message: 18/05/2006, 10h12
  5. Remplir un combobox en fonction d'un autre
    Par emkka dans le forum Composants VCL
    Réponses: 10
    Dernier message: 30/04/2006, 19h17

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