Question
selection plusieurs items combobox
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 8 ans 1 mois #24963
par Philippe
Réponse de Philippe sur le sujet Re:selection plusieurs items combobox
pour inséré une variable dans une chaine de caractère tu doit utilisé des guillemets
[code:1]$vtab1 = \"Bureau, $bureau\"[/code:1]
mais je suis pas sur de comprendre ce que tu veux faire
ton script fais un tableau ou tu ne prend que le premier éléments !!
si ton but est d'afficher le chemin après le nom dossier tu peut comme ça :
[code:1]$bureau = \"$env:USERPROFILE\Desktop\"
$vtab1 = \"Bureau $bureau\"
[void]$lb_path1.Items.Add($vtab1)[/code:1]
tu peux faire un tableau avec deux colonnes qui est en faite un tableau d'objet comme ci-dessous plus simple a géré :
[code:1]dossier chemin
bureau C:\Users\xxx\Desktop[/code:1]
mais si tu ne veux afficher que la colonne dossier
tu peut comme ceci :
[code:1]$vtab1 = New-Object PSObject
$vtab1 | Add-Member -Name dossier -MemberType NoteProperty -Value \"bureau\"
$vtab1 | Add-Member -Name chemin -MemberType NoteProperty -Value $bureau
[void]$lb_path1.Items.Add($vtab1[0].dossier)
[/code:1]
cette méthode te simplifie la vie après,
quand tu doit géré plusieurs dossiers !!
Message édité par: 6ratgus, à: 9/02/18 17:43
Message édité par: 6ratgus, à: 9/02/18 17:45
Message édité par: 6ratgus, à: 9/02/18 17:47<br><br>Message édité par: 6ratgus, à: 9/02/18 17:49
[code:1]$vtab1 = \"Bureau, $bureau\"[/code:1]
mais je suis pas sur de comprendre ce que tu veux faire
ton script fais un tableau ou tu ne prend que le premier éléments !!
si ton but est d'afficher le chemin après le nom dossier tu peut comme ça :
[code:1]$bureau = \"$env:USERPROFILE\Desktop\"
$vtab1 = \"Bureau $bureau\"
[void]$lb_path1.Items.Add($vtab1)[/code:1]
tu peux faire un tableau avec deux colonnes qui est en faite un tableau d'objet comme ci-dessous plus simple a géré :
[code:1]dossier chemin
bureau C:\Users\xxx\Desktop[/code:1]
mais si tu ne veux afficher que la colonne dossier
tu peut comme ceci :
[code:1]$vtab1 = New-Object PSObject
$vtab1 | Add-Member -Name dossier -MemberType NoteProperty -Value \"bureau\"
$vtab1 | Add-Member -Name chemin -MemberType NoteProperty -Value $bureau
[void]$lb_path1.Items.Add($vtab1[0].dossier)
[/code:1]
cette méthode te simplifie la vie après,
quand tu doit géré plusieurs dossiers !!
Message édité par: 6ratgus, à: 9/02/18 17:43
Message édité par: 6ratgus, à: 9/02/18 17:45
Message édité par: 6ratgus, à: 9/02/18 17:47<br><br>Message édité par: 6ratgus, à: 9/02/18 17:49
Connexion ou Créer un compte pour participer à la conversation.
- flavien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 8 ans 1 mois #25024
par flavien
Réponse de flavien sur le sujet Re:selection plusieurs items combobox
Merci pour tes réponses.
J'ai un autre soucis.
Je désire sélectionner un dossier via un explorer qui me creer un item dans ma combobox. Lorsque je selectionne mon dossier il est bien afficher dans al combobox mais mon tableau au moment de la copie à une valeur nulle. Je n'arrive pas à lui fixer de valeur. Du coup s'il y a un seul item dans la combobox la copie fonctionne mais avec plusieurs dossiers cela ne marche pas.
[code:1]
function Copy-ItemUsingExplorer{
$objShell = New-Object -ComObject 'Shell.Application'
$objFolder = $objShell.NameSpace((gi $objdestin).FullName)
$objFolder.CopyHere((gi $objsource).FullName,$CopyFlags)
}
$btn_select.add_click({
#Déclaration de la Fonction : Select-Folder
function Select-Folder($message='Selectionner un répertoire', $path = 0)
{
$object = New-Object -comObject Shell.Application
$folder = $object.BrowseForFolder(0, $message, 0, $path)
if ($folder -ne $null)
{
$folder.self.Path
}
}
#Fin de la déclaration
#Si vous souhaitez placer le parcours de dossier sur un répertoire par défaut, il suffit d'ajouter ce paramètre : -path \"VOTRE CHEMIN\"
$folderpath=Select-Folder 'Selectionner un répertoire' -path \"C:\\"
#Variable pour récupérer le chemin du répertoire sélectionné
[void]$lb_folder.Items.Add($folderpath)
})
$btn_sauvegarder2.Add_Click({
if (-not(Test-Path $destination1 )){# création du dossier utilisateur
New-Item -Path $destination1 -ItemType directory}
If (!(Test-Path $destinationfinal)){ # création du dossier utilisateur
New-Item -path $destinationfinal -ItemType directory
}
$objdestin = Get-Item -Path $destinationfinal
$objsource = Get-Item -Path $lb_folder.Items
$CopyFlags = \"0x0\"
Copy-ItemUsingExplorer
write-host -f green \"test !\"
})
[/code:1]
Je désire avoir l'explorer afin d'avoir le temps de la copie. Car sinon en utilisant le code suivant cela fonctionne avec plusieurs dossiers mais du coup je n'ai pas le temps de la copie.
[code:1]$btn_sauvegarder2.Add_Click({
Copy-Item -Path $lb_folder.Items -Destination $destinationfinal -recurse -force -verbose
})[/code:1]
Merci d'avance car la je ne trouve pas la solution.
J'ai un autre soucis.
Je désire sélectionner un dossier via un explorer qui me creer un item dans ma combobox. Lorsque je selectionne mon dossier il est bien afficher dans al combobox mais mon tableau au moment de la copie à une valeur nulle. Je n'arrive pas à lui fixer de valeur. Du coup s'il y a un seul item dans la combobox la copie fonctionne mais avec plusieurs dossiers cela ne marche pas.
[code:1]
function Copy-ItemUsingExplorer{
$objShell = New-Object -ComObject 'Shell.Application'
$objFolder = $objShell.NameSpace((gi $objdestin).FullName)
$objFolder.CopyHere((gi $objsource).FullName,$CopyFlags)
}
$btn_select.add_click({
#Déclaration de la Fonction : Select-Folder
function Select-Folder($message='Selectionner un répertoire', $path = 0)
{
$object = New-Object -comObject Shell.Application
$folder = $object.BrowseForFolder(0, $message, 0, $path)
if ($folder -ne $null)
{
$folder.self.Path
}
}
#Fin de la déclaration
#Si vous souhaitez placer le parcours de dossier sur un répertoire par défaut, il suffit d'ajouter ce paramètre : -path \"VOTRE CHEMIN\"
$folderpath=Select-Folder 'Selectionner un répertoire' -path \"C:\\"
#Variable pour récupérer le chemin du répertoire sélectionné
[void]$lb_folder.Items.Add($folderpath)
})
$btn_sauvegarder2.Add_Click({
if (-not(Test-Path $destination1 )){# création du dossier utilisateur
New-Item -Path $destination1 -ItemType directory}
If (!(Test-Path $destinationfinal)){ # création du dossier utilisateur
New-Item -path $destinationfinal -ItemType directory
}
$objdestin = Get-Item -Path $destinationfinal
$objsource = Get-Item -Path $lb_folder.Items
$CopyFlags = \"0x0\"
Copy-ItemUsingExplorer
write-host -f green \"test !\"
})
[/code:1]
Je désire avoir l'explorer afin d'avoir le temps de la copie. Car sinon en utilisant le code suivant cela fonctionne avec plusieurs dossiers mais du coup je n'ai pas le temps de la copie.
[code:1]$btn_sauvegarder2.Add_Click({
Copy-Item -Path $lb_folder.Items -Destination $destinationfinal -recurse -force -verbose
})[/code:1]
Merci d'avance car la je ne trouve pas la solution.
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 8 ans 1 mois #25026
par Philippe
tu doit faire une boucle pour géré la liste de dossiers sélectionné, comme lors de la sélection des dossiers,
mais bien sur avec la liste des dossiers sélectionnés
quelque chose comme ça avec la bonne variable a la place de \"$destinationfinal\"
pour chaque dossier si diffèrent :
[code:1]$btn_sauvegarder2.Add_Click({
$lb_folder.SelectedItems | foreach {
if (-not(Test-Path $destination1 )) {# création du dossier utilisateur
New-Item -Path $destination1 -ItemType directory}
If (!(Test-Path $destinationfinal)) { # création du dossier utilisateur
New-Item -path $destinationfinal -ItemType directory
}
$objdestin = Get-Item -Path $destinationfinal
$objsource = Get-Item -Path $_
$CopyFlags = \"0x0\"
Copy-ItemUsingExplorer
write-host -f green \"test !\"
}
})[/code:1]
mais c'est quoi la différence entre $destination1 et $destinationfinal ! car il faut les remplacer par la bonne variable !
pour moi $destinationfinal devrais être le dossier de base de destination !
correction après test de la fonction Copy-ItemUsingExplorer tu devrais être bon comme ça
!!
Message édité par: 6ratgus, à: 16/02/18 16:29
Message édité par: 6ratgus, à: 16/02/18 16:31<br><br>Message édité par: 6ratgus, à: 16/02/18 16:35
Réponse de Philippe sur le sujet Re:selection plusieurs items combobox
alors je sais pas comment t'aider !Je désire avoir l'explorer afin d'avoir le temps de la copie. Car sinon en utilisant le code suivant cela fonctionne avec plusieurs dossiers mais du coup je n'ai pas le temps de la copie.
tu doit faire une boucle pour géré la liste de dossiers sélectionné, comme lors de la sélection des dossiers,
mais bien sur avec la liste des dossiers sélectionnés
quelque chose comme ça avec la bonne variable a la place de \"$destinationfinal\"
pour chaque dossier si diffèrent :
[code:1]$btn_sauvegarder2.Add_Click({
$lb_folder.SelectedItems | foreach {
if (-not(Test-Path $destination1 )) {# création du dossier utilisateur
New-Item -Path $destination1 -ItemType directory}
If (!(Test-Path $destinationfinal)) { # création du dossier utilisateur
New-Item -path $destinationfinal -ItemType directory
}
$objdestin = Get-Item -Path $destinationfinal
$objsource = Get-Item -Path $_
$CopyFlags = \"0x0\"
Copy-ItemUsingExplorer
write-host -f green \"test !\"
}
})[/code:1]
mais c'est quoi la différence entre $destination1 et $destinationfinal ! car il faut les remplacer par la bonne variable !
pour moi $destinationfinal devrais être le dossier de base de destination !
correction après test de la fonction Copy-ItemUsingExplorer tu devrais être bon comme ça
!!
Message édité par: 6ratgus, à: 16/02/18 16:29
Message édité par: 6ratgus, à: 16/02/18 16:31<br><br>Message édité par: 6ratgus, à: 16/02/18 16:35
Connexion ou Créer un compte pour participer à la conversation.
- flavien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 8 ans 1 mois #25031
par flavien
Réponse de flavien sur le sujet Re:selection plusieurs items combobox
Super ça fonctionne, un grand merci!!!
Petite question technique la variable $_ represente la valeur en cours si j'ai bien compris?
Sinon juste pour info concernant la différence des deux variables $destinationfinal et la $destinationfinal1
[code:1]$destination1 = \"D:\test script2\"
$destinationfinal = $destination1+\"\\"+$env:username+\"\\"[/code:1]
Voila en tout cas un énorme merci à toi.
Petite question technique la variable $_ represente la valeur en cours si j'ai bien compris?
Sinon juste pour info concernant la différence des deux variables $destinationfinal et la $destinationfinal1
[code:1]$destination1 = \"D:\test script2\"
$destinationfinal = $destination1+\"\\"+$env:username+\"\\"[/code:1]
Voila en tout cas un énorme merci à toi.
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 8 ans 1 mois #25033
par Philippe

exemple dans un foreach elle représente l'objet courant dans le tableau ou collection passer a travers le pipeline :
[code:1]
# remplisage d'un tableau d'objet ici des strings et des integer mais on mixer avec autre chose !!
$tableau = @(\"premier\",
\"deuxieme\",
\"un autre\",
\"etc...\",
123,
453)
$tableau | foreach {
# affiche chaque element les un apres les autres en indiquent leurs types
Write-Host $_ -NoNewline
Write-Host `t $_.GetType() -ForegroundColor Yellow
}[/code:1]
je te conseil de lire quelques sites comme celui ci pour une approche rapide de poweshell,
ou les tutos tres complets de laurent dardenne
ou encore le livre de Robin et Arnaud que tu vois a gauche<br><br>Message édité par: 6ratgus, à: 20/02/18 11:59
Réponse de Philippe sur le sujet Re:selection plusieurs items combobox
de rienSuper ça fonctionne, un grand merci!!!
oui la en cours via un pipelinePetite question technique la variable $_ represente la valeur en cours si j'ai bien compris?
exemple dans un foreach elle représente l'objet courant dans le tableau ou collection passer a travers le pipeline :
[code:1]
# remplisage d'un tableau d'objet ici des strings et des integer mais on mixer avec autre chose !!
$tableau = @(\"premier\",
\"deuxieme\",
\"un autre\",
\"etc...\",
123,
453)
$tableau | foreach {
# affiche chaque element les un apres les autres en indiquent leurs types
Write-Host $_ -NoNewline
Write-Host `t $_.GetType() -ForegroundColor Yellow
}[/code:1]
je te conseil de lire quelques sites comme celui ci pour une approche rapide de poweshell,
ou les tutos tres complets de laurent dardenne
ou encore le livre de Robin et Arnaud que tu vois a gauche<br><br>Message édité par: 6ratgus, à: 20/02/18 11:59
Connexion ou Créer un compte pour participer à la conversation.
- flavien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 8 ans 1 mois #25035
par flavien
Réponse de flavien sur le sujet Re:selection plusieurs items combobox
Merci, je suis entrain de relire certains passages du livre.
PAr contre j'ai une autre question car la je pense que ce n'est pas grand chose. J'aimerais récupérer la valeur d'un item afin de l'intégrer dans une variable. Mais vuq ue c'est un object je récupère la valeur suivante. \"System.Windows.Controls.TextBox\"
Du coup quand je l'utilise dans une autre variable j'ai la syntaxe suivante \"D:\test script2\\Favorites\" et mon chemin n'est donc pas bon.
[code:1]
$lb_createvar_resto_1 = $form.findname('LB_CREATEVAR_RESTO_1')
$btn_createvar_resto_1 = $form.findname('BTN_CREERVARIABLE_RESTO_1')
$txt_vuser_resto_1 = $form.findname('TXT_VUSER_RESTO_1')
$btn_supprimer_ajouter_1 = $form.findname('BTN_AJOUTER_RESTO_1')
$depart = \"D:\test script2\"
$depart1 = $depart+\"\\"+\"$testuser\"+\"\\"+\"Favorites\"
$btn_createvar_resto_1.add_Click({
If (((-NOT [string]::IsNullOrEmpty($txt_vuser_resto_1.text))) -and (( [string]::IsNullOrEmpty($lb_createvar_resto_1.items))))
{
$lb_createvar_resto_1.Items.Clear()
$lb_createvar_resto_1.items.add($txt_vuser_resto_1.text)
}
Elseif (((-NOT [string]::IsNullOrEmpty($txt_vuser_resto_1.text))) -and ((-NOT [string]::IsNullOrEmpty($lb_createvar_resto_1.items))))
{
$lb_createvar_resto_1.Items.Clear()
$testuser = $txt_vuser_resto_1.text
$lb_createvar_resto_1.items.add($txt_vuser_resto_1.text)
}
Else
{
$lb_createvar_resto_1.Items.Clear()
Write-Host 'Merci de saisir une variable'
}
})
$btn_deletevar_resto_1.add_click({
$lb_createvar_resto_1.Items.Clear()
$txt_vuser_resto_1.clear()
})
$btn_supprimer_ajouter_1.Add_Click({
New-Variable -Name test1 -Value $txt_vuser_resto_1.text
write-host -f green $testuser
$lb_pathasave_resto1.Items.Add($testuser)
})
[/code:1]
ps: J'ai essayé différentes méthode avec la commande New-Variable par exemple, mais j'ai toujours le même problème car la valeur de ma variable $testuser doit corespondre au nom de l'utilisateur. En occurance au texte de la Listbox.
PAr contre j'ai une autre question car la je pense que ce n'est pas grand chose. J'aimerais récupérer la valeur d'un item afin de l'intégrer dans une variable. Mais vuq ue c'est un object je récupère la valeur suivante. \"System.Windows.Controls.TextBox\"
Du coup quand je l'utilise dans une autre variable j'ai la syntaxe suivante \"D:\test script2\\Favorites\" et mon chemin n'est donc pas bon.
[code:1]
$lb_createvar_resto_1 = $form.findname('LB_CREATEVAR_RESTO_1')
$btn_createvar_resto_1 = $form.findname('BTN_CREERVARIABLE_RESTO_1')
$txt_vuser_resto_1 = $form.findname('TXT_VUSER_RESTO_1')
$btn_supprimer_ajouter_1 = $form.findname('BTN_AJOUTER_RESTO_1')
$depart = \"D:\test script2\"
$depart1 = $depart+\"\\"+\"$testuser\"+\"\\"+\"Favorites\"
$btn_createvar_resto_1.add_Click({
If (((-NOT [string]::IsNullOrEmpty($txt_vuser_resto_1.text))) -and (( [string]::IsNullOrEmpty($lb_createvar_resto_1.items))))
{
$lb_createvar_resto_1.Items.Clear()
$lb_createvar_resto_1.items.add($txt_vuser_resto_1.text)
}
Elseif (((-NOT [string]::IsNullOrEmpty($txt_vuser_resto_1.text))) -and ((-NOT [string]::IsNullOrEmpty($lb_createvar_resto_1.items))))
{
$lb_createvar_resto_1.Items.Clear()
$testuser = $txt_vuser_resto_1.text
$lb_createvar_resto_1.items.add($txt_vuser_resto_1.text)
}
Else
{
$lb_createvar_resto_1.Items.Clear()
Write-Host 'Merci de saisir une variable'
}
})
$btn_deletevar_resto_1.add_click({
$lb_createvar_resto_1.Items.Clear()
$txt_vuser_resto_1.clear()
})
$btn_supprimer_ajouter_1.Add_Click({
New-Variable -Name test1 -Value $txt_vuser_resto_1.text
write-host -f green $testuser
$lb_pathasave_resto1.Items.Add($testuser)
})
[/code:1]
ps: J'ai essayé différentes méthode avec la commande New-Variable par exemple, mais j'ai toujours le même problème car la valeur de ma variable $testuser doit corespondre au nom de l'utilisateur. En occurance au texte de la Listbox.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.052 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- selection plusieurs items combobox