Question Traitement dans un fichier excel (.xls)

Plus d'informations
il y a 13 ans 2 mois #13583 par DarKZoNe
Bonjour à tous! Dans le cadre de mon stage je dois faire un script qui doit traiter un fichier excel au format .xls qui contient la liste des employé(e)s qui sont encore à leur poste ainsi que ceux qui ne sont plus employé depuis 2001. Mon problème est que certains employé(e)s ont quitté et sont revenu par la suite, ce qui crée plusieurs lignes (surtout s'il y a eu plusieurs départ et retour d'une même personne).

Voici un exemple du fichier (évidement seulement avec mon nom et un nom fictif)



Dans cette image, l'employé Yves a quitté son poste le 27 décembre 2003 (dans ce cas, le contenu de colonnes est remplacé par inconnu et la date de départ est indiqué). Par contre, celui-ci est revenu travailler et est aujourd'hui toujours à son poste puisque la seconde ligne n'indique pas de date de départ et les cases ne contiennent pas le mot INCONNU.

Le second employé Georges St-Pierre à rejoins et quitté sont poste 3 fois et n'est donc plus employé (puisqu'il n'y a pas d'autres lignes qui indique qu'il est a un poste et qui ne possède pas de date de départ ).

Le but de mon script est donc de séparer les faux départ (comme l'employé Yves) dans un fichier excel et les vrais départ (comme l'employé Georges) dans un second fichier excel.

Bien que je commence à être habitué de travailler avec Powershell, je ne sais pas comment je vais faire pour comparer le contenu des lignes et de les réécrire dans un fichier excel.

Si quelqu'un peut m'aider, je le remercie d'avance!<br><br>Message édité par: DarKZoNe, à: 9/01/13 19:37

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

Plus d'informations
il y a 13 ans 2 mois #13585 par Laurent Dardenne
DarKZoNe écrit:

Si quelqu'un peut m'aider, je le remercie d'avance!

Quelques pistes: group-object, compare-object,export-csv ( import csv dns Xl).
Le lien sur l'image est erroné.

Tutoriels PowerShell

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

Plus d'informations
il y a 13 ans 2 mois #13588 par DarKZoNe
Avec le code [code:1]$userObjects = Import-csv .\test2.csv -Delimiter \&quot;;\&quot;
$userObjects | Group-Object -Property Nom[/code:1]PowerShell me donne le nombre de fois où le nom de famille apparaît, ce qui veut dire que les nom de familles qui n'apparaissent qu'une seule fois sont présentement employé (ce qui permet d'enlever une bonne partie de ceux-ci du fichier).<br><br>Message édité par: DarKZoNe, à: 9/01/13 22:06

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

Plus d'informations
il y a 13 ans 2 mois #13589 par Laurent Dardenne
Avec tes données tu n'est pas certains de l'unicité de ta clé. Le Nom +Prénom + 1 contrôle sur la pertinence d u résultat ( n départ et mais 0 ou une seule dernière entrée) est peut être préférable. Reste les cas d'homonymie par exemple, voir d'orhthographie.

A toi de voir si le temps de codage ne sera pas trop coûteux vis-à-vis du résultat obtenu.

Tutoriels PowerShell

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

Plus d'informations
il y a 13 ans 2 mois #13606 par darphboubou
Il n'y a pas de colonne sur la date d'arrivée ce qui rendrait les recherches plus faciles.

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

Plus d'informations
il y a 13 ans 2 mois #13608 par DarKZoNe
darphboubou écrit:

Il n'y a pas de colonne sur la date d'arrivée ce qui rendrait les recherches plus faciles.

Je sais et malheureusement il n'y aura jamais cette colonne.


Finalement, j'ai réussi à trier mes informations comme je le voulais (tout en ajoutant une colonne NomComplet qui va me permettre de comparer plus facilement les entrées).

[code:1]$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

foreach ($Employe in $userObjects) {

$Employe.NomComplet = $Employe.Prenom +$Employe.Nom

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

$Employe| where ({$_.DateDepart -eq ''}) |export-csv '.\Actif.csv' -Append -Delimiter ';' -Verbose -NoTypeInformation
}[/code:1]



Maintenant, est ce qu'il y a un moyen d'effacer les lignes d'un fichier si un nom complet similaire est trouvé dans l'autre avec Compare-Object?<br><br>Message édité par: DarKZoNe, à: 11/01/13 17:29

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

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