Question
Traitement dans un fichier excel (.xls)
- DarKZoNe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 16
- Remerciements reçus 0
il y a 13 ans 2 mois #13583
par DarKZoNe
Traitement dans un fichier excel (.xls) a été créé 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
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 13 ans 2 mois #13585
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Traitement dans un fichier excel (.xls)
DarKZoNe écrit:
Le lien sur l'image est erroné.
Quelques pistes: group-object, compare-object,export-csv ( import csv dns Xl).Si quelqu'un peut m'aider, je le remercie d'avance!
Le lien sur l'image est erroné.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- DarKZoNe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 16
- Remerciements reçus 0
il y a 13 ans 2 mois #13588
par DarKZoNe
Réponse de DarKZoNe sur le sujet Re:Traitement dans un fichier excel (.xls)
Avec le code [code:1]$userObjects = Import-csv .\test2.csv -Delimiter \";\"
$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
$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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 13 ans 2 mois #13589
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Traitement dans un fichier excel (.xls)
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.
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.
- darphboubou
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 135
- Remerciements reçus 0
il y a 13 ans 2 mois #13606
par darphboubou
Réponse de darphboubou sur le sujet Re:Traitement dans un fichier excel (.xls)
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.
- DarKZoNe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 16
- Remerciements reçus 0
il y a 13 ans 2 mois #13608
par DarKZoNe
Réponse de DarKZoNe sur le sujet Re:Traitement dans un fichier excel (.xls)
darphboubou écrit:
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
Je sais et malheureusement il n'y aura jamais cette colonne.Il n'y a pas de colonne sur la date d'arrivée ce qui rendrait les recherches plus faciles.
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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Traitement dans un fichier excel (.xls)