Question Editer et Remplir un Document Excel .xlsx

Plus d'informations
il y a 17 ans 1 mois #3929 par Alexandre
Merci pour ton aide Janel, mais au vus des difficultés que me posait Excel 2007 je suis passer sur le 2003. J'ai encore des tests à faire dessus mais j'avance déjà bcp mieux :)

Je mettrait le script sur le forum des qu'il sera correctement commenté.

Merci à tous de votre aide

Edit : Voila le script qui fonctionne j'espere qu'il en aidera certain.
[code:1]
#
Saisie Marque Modèle Interface et lecteur
#

$Marque=Read-Host \"Entrez la marque du periphérique de stockage\"
$Modele=Read-Host \"Entrez le modele du périphérique de stockage\"

$Chemin = \"\"
$Chemin_fiche_Excel = \"\\GroupNASS\nicenas\\Documents de tests\Disques durs 2008.xls\"
$Modele_xls = $Modele +\".xls\"

$Valide = 0

do {
Write-Host \"+
+\"
Write-Host \"| Entrez La taille du disque |\"
Write-Host \"| 3.5 Pouces : 1 |\"
Write-Host \"| 2.5 Pouces : 2 |\"
Write-Host \"+
+\"

$Pouces=Read-Host \"Entrez le numéro correspondant à la taille du disque\"

switch($Pouces)
{
'1'{ $Chemin = \"\\GroupNASS\nicenas\Résultats de tests\Disques durs externes\3.5\"
$Valide++
break
}

'2'{ $Chemin = \"\\GroupNASS\nicenas\Résultats de tests\Disques durs externes\2.5\"
$Valide++

break
}
default{Write-Host \"Type non de taille non-valide veuillez recommencer\"
}
}

}until($Valide -eq 1)

$Valide = 0

do{
Write-Host \"+
+\"
Write-Host \"| Entrez Le type d'interFace: |\"
Write-Host \"| USB : 1 |\"
Write-Host \"| FW 400 : 2 |\"
Write-Host \"| FW 800 : 3 |\"
Write-Host \"| E-sata : 4 |\"
Write-Host \"+
+\"

$Interface=Read-Host \"Entrez le numéro correspondant à l'inteface utilisée\"

#
Déclaration des variable du futur tableau
#

$Ligne1 = 0
$Ligne2 = 0
$Ligne3 = 0
$Ligne4 = 0

$Col1 = 0
$Col2 = 0
$Col3 = 0
$Col4 = 0

#
Vérification validiter du type d'interface
#
switch($Interface)
{
'1'{ $Ligne1 = 18
$col1 = 4
$Ligne2 = 22
$col2 = 4
$Ligne3 = 18
$col3 = 10
$Ligne4 = 22
$col4 = 10
$Valide++
break
}

'2'{ $Ligne1 = 28
$col1 = 4
$Ligne2 = 32
$col2 = 4
$Ligne3 = 28
$col3 = 10
$Ligne4 = 32
$col4 = 10
$Valide++

break
}

'3'{ $Ligne1 = 28
$col1 = 4
$Ligne2 = 42
$col2 = 4
$Ligne3 = 38
$col3 = 10
$Ligne4 = 42
$col4 = 10
$Valide++
break

}
'4'{ $Ligne1 = 48
$col1 = 4
$Ligne2 = 52
$col2 = 4
$Ligne3 = 48
$col3 = 10
$Ligne4 = 52
$col4 = 10
$Valide++
break
}
default{Write-Host \"Type non d'interface non-valide veuillez recommencer\"
}
}

}until($Valide -eq 1)

$Lettre=Read-Host \"Entrer la lettre du lecteur utilisé par votre péripherique\"

#
Effacement des ancien fichier de test éventuels
#
remove-item C:\lecture\* -recurse
if (\"$Lettre\Test\Gros fichiers1.rar\"«»){
remove-item $Lettre\Test\\"Gros fichiers1.rar\"
}
if ( \"$Lettre\Test\Fichiers moyens1\"«»){
remove-item $Lettre\Test\\"Fichiers moyens1\" -recurse
}
#
Création des repertoires du produit
#

if (! (Test-Path $Chemin\$Marque))
{
new-item -path $Chemin -name $Marque -type directory
}

if (! (Test-Path $Chemin\$Marque\$Modele))
{
new-item -path $Chemin\$Marque\ -name $Modele -type directory
copy-item $Chemin_fiche_Excel -destination $Chemin\$Marque\$Modele -recurse

rename-item -path $Chemin\$Marque\$Modele\\"Disques durs 2008.xls\" -newname $Modele_xls
}elseif (!(Test-Path $Chemin\$Marque\$Modele\$Modele_xls))
{
copy-item $Chemin_fiche_Excel -destination $Chemin\$Marque\$Modele -recurse
rename-item -path $Chemin\$Marque\$Modele\\"Disques durs 2008.xls\" -newname $Modele_xls
}
else{
$Valide = 0

do{
Write-Host \"+
+\"
Write-Host \"| La fiche Excel existe déja souhaitez vous : |\"
Write-Host \"| Travailler sur la fiche déja existante : 1 |\"
Write-Host \"| Créer une nouvelle fiche : 2 |\"
Write-Host \"+
+\"

$Fiche=Read-Host \"Entrez le numéro correspondant à votre choix\"

switch($Fiche)
{
'1'{ $Valide++
break
}

'2'{ $Modele_temp= $Modele +\"_1\"
$Modele_xls = $Modele_temp +\".xls\"
if (!(Test-Path $Chemin\$Marque\$Modele\$Modele_xls)){
copy-item $Chemin_fiche_Excel -destination $Chemin\$Marque\$Modele -recurse
rename-item -path $Chemin\$Marque\$Modele\\"Disques durs 2008.xls\" -newname $Modele_xls
}
$Valide++
break
}

default{Write-Host \"Entrée non-valide\"
}
}
}until($Valide -eq 1)
}
Start-Sleep -m 5000
#
Debit en ecriture
#


# calculer la taille du répertoire de test :

$taille1 = (dir c:\Ecriture\\"Disques durs\"\\"Gros fichiers.rar\" -rec | measure-object length -sum).sum
# mesurer le temps mis à copier c:\tests vers $Lettre\ :
$temps1 = (measure-command {copy c:\Ecriture\\"Disques durs\"\\"Gros fichiers.rar\" $Lettre\Test -rec}).TotalSeconds
# calculer la moyenne en octets/seconde :
$moyenne1 = $taille1 / $temps1
$moyenne1 = $moyenne1 / 1MB
# afficher les résultats :
\"Octets copiés : $taille1\"
\"Temps de copie (s.) : $temps1\"
\"Ecriture Gros Fichier : $moyenne1\"

Start-Sleep -m 10000

# calculer la taille du répertoire de test :
$taille2 = (dir c:\Ecriture\\"Disques durs\"\\"Fichiers moyens\" -rec | measure-object length -sum).sum
# mesurer le temps mis à copier c:\tests vers $Lettre\ :
$temps2 = (measure-command {copy c:\Ecriture\\"Disques durs\"\\"Fichiers moyens\" $Lettre\Test -rec}).TotalSeconds
# calculer la moyenne en octets/seconde :
$moyenne2 = $taille2 / $temps2
$moyenne2 = $moyenne2 / 1MB
# afficher les résultats :
\"Octets copiés : $taille2\"
\"Temps de copie (s.) : $temps2\"
\"Débit écriture Fichiers moyens : $moyenne2\"
Start-Sleep -m 10000

#
Renommage des fichier de test
#
$Gros = \"Gros fichiers1.rar\"
rename-item -path $Lettre\Test\\"Gros fichiers.rar\" -newname $Gros
$Moy = \"Fichiers moyens1\"
rename-item -path $Lettre\Test\\"Fichiers moyens\" -newname $Moy

Start-Sleep -m 5000
#
Debit en lecture
#



# calculer la taille du répertoire de test :
$taille3 = (dir $Lettre\Test\\"Gros fichiers1.rar\" -rec | measure-object length -sum).sum
# mesurer le temps mis à copier $Lettre\Test\\"Gros fichiers1.rar\" vers C:\Lecture :
$temps3 = (measure-command {copy $Lettre\Test\\"Gros fichiers1.rar\" c:\Lecture -rec}).TotalSeconds
# calculer la moyenne en octets/seconde :
$moyenne3 = $taille3 / $temps3
$moyenne3 = $moyenne3 / 1MB
# afficher les résultats :
\"Octets copiés : $taille3\"
\"Temps de copie (s.) : $temps3\"
\"Débit lecture gros fichiers : $moyenne3\"
Start-Sleep -m 10000

# calculer la taille du répertoire de test :
$taille4 = (dir $Lettre\Test\\"Fichiers moyens1\" -rec | measure-object length -sum).sum
# mesurer le temps mis à copier $Lettre\Test\\"Fichiers moyens1\" vers c:\Lecture :
$temps4 = (measure-command {copy $Lettre\Test\\"Fichiers moyens1\" c:\Lecture -rec}).TotalSeconds
# calculer la moyenne en octets/seconde :
$moyenne4 = $taille4 / $temps4
$moyenne4 = $moyenne4 / 1MB
# afficher les résultats :
\"Octets copiés : $taille4\"
\"Temps de copie (s.) : $temps4\"
\"Débit lecture Fichiers moyens : $moyenne4\"

Start-Sleep -m 3000

#
Edition et remplacement des valeur dans fiche excel
#
$excel=new-object -comobject excel.application
$classeur=$excel.workbooks.open(\"$Chemin\$Marque\$Modele\$Modele_xls\"«»)
$feuille=$classeur.worksheets.item(1)

$feuille.Cells.Item($Ligne1,$col1) = $moyenne1
$feuille.Cells.Item($Ligne2,$col2) = $moyenne2
$feuille.Cells.Item($Ligne3,$col3) = $moyenne3
$feuille.Cells.Item($Ligne4,$col4) = $moyenne4


$classeur.save()
$excel.quit()
$excel=$null
[GC]::collect()


#
#
$ret=Read-Host \"Please enter a value\"
[/code:1]

Vous y reconnaitrez peut-être le code qui vous avez fournis a Valdric. Merci a tous pour votre aide<br><br>Message édité par: D112, à: 4/02/09 15:07

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #5013 par ARRIVE
Bonjour à tous,

Là je seche...Je fais appel aux experts, je ne sais pas par quel bout prendre mon problème :

1-J'ai un script qui me remonte dans un fichier txt, le nom des serveurs sur mon parc, le nom des partitions, la taille totale de chaque partition et la taille restante de ces partitions.

Le code donne ça (vous aurez surement reconnu un script dispo dans la bibliothèque du site que j'ai un peu adapté à mes besoins, merci pour cette rubrique tres pratique pour les débutants comme moi):

$svr = Get-Content -Path C:\SCRIPT_OK\ListeSVR.txt

Foreach ($element in $svr)

{
Get-WmiObject -Class Win32_LogicalDisk -ComputerName $element | Where-Object {$_.drivetype -eq 3}|

Select-Object @{e={$_.systemname};n=\&quot;Systeme\&quot;},
@{e={$_.VolumeName};n=\&quot;VolumeName\&quot;},
@{e={[math]::round($_.size / (1024*1024*1024),0)};n=\&quot;Size\&quot;},
@{e={[math]::round($_.freespace / (1024*1024*1024),0)};n=\&quot;Freespace\&quot;}


}

Maintenant pour exploiter les données en sortie je souhaiterais envoyer le resultat de la requete dans un fichier Excel =&gt; et là c'est le drame...:(

Je voulais partir d'un script dispo dans la bibliothèque intutilé \&quot;Envoi de données dans Excel \&quot;.

Mais je ne sais pas comment l'adapter à mon besoin?
J'ai essayé l'export vers un CSV ça ne donne rien, mon fichier csv est vide à la sortir. Peut etre parce que j'ai déjà formaté la sortie de mes données en tableau?

Si quelqu'un a une piste, je suis preneur!! ;)

PS : pour info et d'après ce que j'ai lu sur le sujet sur le forum , je précise que j'ai un poste WinXP 32bits et Office 2003.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #5057 par Laurent Dardenne
Salut,
Roro écrit:

J'ai essayé l'export vers un CSV ça ne donne rien, mon fichier csv est vide à la sortir. Peut etre parce que j'ai déjà formaté la sortie de mes données en tableau?

Essaie ceci :
[code:1]
$svr|
Foreach-Object {
Get-WmiObject -Class Win32_LogicalDisk -ComputerName $element|
Where-Object {$_.drivetype -eq 3}|
Select-Object @{e={$_.systemname};n=\&quot;Systeme\&quot;},
@{e={$_.VolumeName};n=\&quot;VolumeName\&quot;},
@{e={[math]::round($_.size / (1024*1024*1024),0)};n=\&quot;Size\&quot;},
@{e={[math]::round($_.freespace / (1024*1024*1024),0)};n=\&quot;Freespace\&quot;}
}|
Export-csv \&quot;c:\temp\xl-data.csv\&quot; -notypeinformation
type \&quot;c:\temp\xl-data.csv\&quot;
[/code:1]
Ensuite le mieux eut été de créer un nouveau poste.
Dans ton cas la connaissance des objets VBA d'Office est nécessaire. PS ne fait, sommairement, qu'encapsuler ces objets.
De plus il n'est pas nécessaire d'être \&quot;expert\&quot; pour réaliser cette tâche :)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.056 secondes
Propulsé par Kunena