Question Traitement dans un fichier excel (.xls)

Plus d'informations
il y a 13 ans 2 mois #13666 par DarKZoNe
Voici le code tel que promis!

Je sais qu'il y a encore du ménage à faire dans le code mais pour l'instant je dois travailler sur autre chose! Merci encore pour l'aide!



[code:1]function NettoyerFichier {param ($FichierFormattage)
$FichierAFormater = $FichierFormattage
(get-content $FichierAFormater) | foreach-object {$_ -replace '\"\"\"','' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace ',\"=>\"','\"' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace ',\"SideIndicator\"','\"' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace '\"\"','' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace ';','\";\"' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace '\"','' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace ';',',' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace 'NumeroEmploye;NumeroSous-Service;Sous-ServiceDescription;TitreEmploi;TitreEmploiDescription;Numeroduservice;Servicedescription;Prenom;Nom;DateDepart;NomComplet','Numero Employé;Numero Sous-Service;Sous-Service Description;Titre Emploi;Titre Emploi Description;Numero du service;Service description;Prenom ;Nom;Date de départ;Nom Complet' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace \"([0-9]+)-+([0-9]+)-+([0-9]+)\", '$3/$2/$1' } | Set-Content $FichierAFormater
}

function NettoyerFichierFinal {param ($FichierFormattage)
$FichierAFormater = $FichierFormattage
(get-content $FichierAFormater) | foreach-object {$_ -replace '\"\"\"','' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace ',\"=>\"','\"' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace ',\"SideIndicator\"','\"' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace ',',';' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace '\"\"','\"' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace '\"NumeroEmploye\";\"NumeroSous-Service\";\"Sous-ServiceDescription\";\"TitreEmploi\";\"TitreEmploiDescription\";\"Numeroduservice\";\"Servicedescription\";\"Prenom\";\"Nom\";\"DateDepart\";\"NomComplet\"','Numero Employé;Numero Sous-Service;Sous-Service Description;Titre Emploi;Titre Emploi Description;Numero du service;Service description;Prenom ;Nom;Date de départ;Nom Complet' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace \"([0-9]+)/+([0-9]+)/+([0-9]+)\", '$3-$2-$1' } | Set-Content $FichierAFormater
(get-content $FichierAFormater) | foreach-object {$_ -replace '\"','' } | Set-Content $FichierAFormater

}

Function TraiterFichier {
Copy-Item .\Actif.csv \".\Employe Actif.csv\"
NettoyerFichier .\Actif.csv
NettoyerFichier .\Depart.csv

$csv1 = Import-Csv '.\Actif.csv'
$csv2 = Import-Csv '.\Depart.csv'
$Sortie = Compare-Object $csv1 $csv2 -Property 'Nomcomplet' -PassThru | where {$_.SideIndicator -eq \"=>\"} | export-csv .\VraiDepartTemp.csv -NoTypeInformation
NettoyerFichier .\VraiDepartTemp.csv
Start-Sleep -Seconds 10
$csv3 = Import-Csv '.\VraiDepartTemp.csv'
$Sortie = Compare-Object $csv1 $csv3 -Property 'Nomcomplet' -PassThru | where {$_.SideIndicator -eq \"=>\"} | export-csv .\VraiDepartNonTraite.csv -NoTypeInformation
Remove-Item .\Depart.csv
Remove-Item .\Actif.csv
}

Function ComparerDate {

$new_csv = @()
Import-CSV .\VraiDepartNonTraite.csv | sort NomComplet |
foreach {
if ($temp -eq $null){$temp = $_}
if ($_.NomComplet -ne $temp.NomComplet){
$new_csv += $temp
$temp = $_
}
elseif ([datetime]$_.DateDepart -gt [datetime]$temp.DateDepart){
$temp = $_
}
}
$new_csv += $temp
Write-host \"Vrai Depart\"
$new_csv | export-csv '.\Vrai Depart.csv' -notype

NettoyerFichierFinal '.\Vrai Depart.csv'

}

$userObjects = Import-csv '.\Employés-Tous+Départs Original.csv' -Delimiter “;” -Header NumeroEmploye,NumeroSous-Service,Sous-ServiceDescription,TitreEmploi,TitreEmploiDescription,Numeroduservice,Servicedescription,Prenom,Nom,DateDepart | Select-Object -Skip 1
$userObjects | Add-Member -MemberType NoteProperty -Name 'NomComplet' -Value $Null

if (((Test-Path '.\Depart.csv') -eq $False) -and ((Test-Path '.\Actif.csv') -eq $False)) {

foreach ($Employe in $userObjects) {

$Employe.NomComplet = ($Employe.Prenom +$Employe.Nom).Trim()

$Employe | where ({$_.DateDepart -ne ''}) | export-csv '.\Depart.csv' -Append -Delimiter ';' -NoTypeInformation

$Employe| where ({$_.DateDepart -eq ''}) |export-csv '.\Actif.csv' -Append -Delimiter ';' -NoTypeInformation
}
TraiterFichier
}

else {
TraiterFichier
}


ComparerDate

#Enleve la deuxième ligne du fichier Vrai Depart.csv car la fonction ComparerDate crée un ligne de trop après les en-têtes
(gc '.\Vrai Depart.csv') | ? {(2) -notcontains $_.ReadCount} | sc '.\Vrai Depart.csv'

NettoyerFichierFinal '.\Vrai Depart.csv'
NettoyerFichierFinal 'Employe Actif.csv'
Remove-Item \".\VraiDepartTemp.csv\"
Remove-Item \&quot;.\VraiDepartNonTraite.csv\&quot;[/code:1]<br><br>Message édité par: DarKZoNe, à: 17/01/13 20:36

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

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