Tri sur un fichier excel

Rédigé le 20 mars 2014
827 mots
Tags : Vim

Aujourd’hui on me demande d’organiser un fichier ainsi composé :

GIL           ; LIMO      ; 0752186U ; CLG ; ROYMAMD QUEMEOU
GAUEL         ; BEMAIT    ; 0752186U ; CLG ; ROYMAMD QUEMEOU
LOLLITTE      ; VOLEMTIME ; 0752186U ; CLG ; ROYMAMD QUEMEOU
BERTROMD      ; STEPHOMIE ; 0750575T ; CLG ; SAMIO DELOUMOY
HEROAUI       ; JOMILO    ; 0750575T ; CLG ; SAMIO DELOUMOY
VIOMO         ; EDSAM     ; 0750575T ; CLG ; SAMIO DELOUMOY
BEM HOROZLLOH ; CERIME    ; 0754355B ; CLG ; RABERT DAISMEOU
ESPIMAOZ      ; OMDRES    ; 0754355B ; CLG ; RABERT DAISMEOU
BORBOCETTA    ; CELIME    ; 0750682J ; LG  ; RADIM
BAMEL         ; CORALIME  ; 0752538B ; CLG ; RADIM
MOLLIORIS     ; MICAS     ; 0750682J ; LG  ; RADIM
ISMOM DOHIR   ; OSMO      ; 0750696Z ; LGT ; RAGER VERLAMME
MGO TOBI      ; YALOMDE   ; 0750696Z ; LGT ; RAGER VERLAMME
DIOKHOBY      ; KUMBO     ; 0750429J ; CLG ; RALOMD DARGELES
OMIRAUCHE     ; DARO      ; 0754355B ; CLG ; RABERT DAISMEOU
DEMOTTE       ; JOCQUES   ; 0754355B ; CLG ; RABERT DAISMEOU
BO            ; SILEYE    ; 0752538B ; CLG ; RADIM
LUCATTE       ; JODE      ; 0750429J ; CLG ; RALOMD DARGELES
OVROMAVIC     ; MORKA     ; 0750429J ; CLG ; RALOMD DARGELES
KOSRI         ; OZEDIME   ; 0750429J ; CLG ; RALOMD DARGELES
LOUCORD       ; MICHOEL   ; 0750429J ; CLG ; RALOMD DARGELES
DELILLE       ; LUCIE     ; 0754253R ; CLG ; SOIMT-EXUPERY
JALLE         ; MODOV     ; 0750651O ; LGT ; SIMAME WEIL
VOLEMTE       ; HUGA      ; 0750651O ; LGT ; SIMAME WEIL
KOMDEM-DIE    ; OURARE    ; 0750575T ; CLG ; SAMIO DELOUMOY

Le but est de scinder, pour chaque établissement, la liste des personnes en deux groupes de même effectif (à un près).

Première étape : déplacer la colonne 3 en colonne 1 pour effectuer un tri.

0750429J CLG RALOMD DARGELES ; DIOKHOBY KUMBO
0750429J CLG RALOMD DARGELES ; KOSRI OZEDIME
0750429J CLG RALOMD DARGELES ; LOUCORD MICHOEL
0750429J CLG RALOMD DARGELES ; LUCATTE JODE
0750429J CLG RALOMD DARGELES ; OVROMAVIC MORKA
0750575T CLG SAMIO DELOUMOY  ; BERTROMD STEPHOMIE
0750575T CLG SAMIO DELOUMOY  ; HEROAUI JOMILO
0750575T CLG SAMIO DELOUMOY  ; KOMDEM-DIE OURARE
0750575T CLG SAMIO DELOUMOY  ; VIOMO EDSAM
0750651O LGT SIMAME WEIL     ; JALLE MODOV
0750651O LGT SIMAME WEIL     ; VOLEMTE HUGA
0750682J LG RADIM            ; BORBOCETTA CELIME
0750682J LG RADIM            ; MOLLIORIS MICAS
0750696Z LGT RAGER VERLAMME  ; ISMOM DOHIR OSMO
0750696Z LGT RAGER VERLAMME  ; MGO TOBI YALOMDE
0752186U CLG ROYMAMD QUEMEOU ; GAUEL BEMAIT
0752186U CLG ROYMAMD QUEMEOU ; GIL LIMO
0752186U CLG ROYMAMD QUEMEOU ; LOLLITTE VOLEMTIME
0752538B CLG RADIM           ; BAMEL CORALIME
0752538B CLG RADIM           ; BO SILEYE
0754253R CLG SOIMT-EXUPERY   ; DELILLE LUCIE
0754355B CLG RABERT DAISMEOU ; BEM HOROZLLOH CERIME
0754355B CLG RABERT DAISMEOU ; DEMOTTE JOCQUES
0754355B CLG RABERT DAISMEOU ; ESPIMAOZ OMDRES
0754355B CLG RABERT DAISMEOU ; OMIRAUCHE DARO

Appliquer sur chaque ligne la commande suivante qui concatène les lignes consécutives commençant par la même séquence

:%s/\(.*\) ; \(.*\)\n\1 ; \(.*\)/\1 ; \2 + \3/

appliquuer cett ligne autant de fois que nécessaire

0750429J CLG RALOMD DARGELES ; DIOKHOBY KUMBO + KOSRI OZEDIME + LOUCORD MICHOEL + LUCATTE JODE + OVROMAVIC MORKA
0750575T CLG SAMIO DELOUMOY  ; BERTROMD STEPHOMIE + HEROAUI JOMILO + KOMDEM-DIE OURARE + VIOMO EDSAM
0750651O LGT SIMAME WEIL     ; JALLE MODOV + VOLEMTE HUGA
0750682J LG RADIM            ; BORBOCETTA CELIME + MOLLIORIS MICAS
0750696Z LGT RAGER VERLAMME  ; ISMOM DOHIR OSMO + MGO TOBI YALOMDE
0752186U CLG ROYMAMD QUEMEOU ; GAUEL BEMAIT + GIL LIMO + LOLLITTE VOLEMTIME
0752538B CLG RADIM           ; BAMEL CORALIME + BO SILEYE
0754253R CLG SOIMT-EXUPERY   ; DELILLE LUCIE
0754355B CLG RABERT DAISMEOU ; BEM HOROZLLOH CERIME + DEMOTTE JOCQUES + ESPIMAOZ OMDRES + OMIRAUCHE DARO

:g/+/d : élimine les lignes avec plus d’une personne copier et coller dans fichier2 puis undo :v/+/d : élimine les lignes avec une personne

:g/+.+/d copier et coller dans fichier2 puis undo :v/+.+/d

:g/+.+.+/d copier et coller dans fichier2 puis undo :v/+.+.+/d

Etc… On a maintenant un fichier contenant les établissements classés par nombre d’intervenants.

Un petit :Tabularize /+

Et voilà, il ne reste plus qu’à remplacer le bon + par un ; pour obtenir un fichier csv avec deux colonnes, une pour chaque groupe.

0754253R CLG SOIMT-EXUPERY   ; DELILLE LUCIE

0750651O LGT SIMAME WEIL     ; JALLE MODOV       + VOLEMTE HUGA
0750682J LG RADIM            ; BORBOCETTA CELIME + MOLLIORIS MICAS
0750696Z LGT RAGER VERLAMME  ; ISMOM DOHIR OSMO  + MGO TOBI YALOMDE
0752538B CLG RADIM           ; BAMEL CORALIME    + BO SILEYE

0752186U CLG ROYMAMD QUEMEOU ; GAUEL BEMAIT + GIL LIMO + LOLLITTE VOLEMTIME

0750575T CLG SAMIO DELOUMOY  ; BERTROMD STEPHOMIE   + HEROAUI JOMILO  + KOMDEM-DIE OURARE + VIOMO EDSAM
0754355B CLG RABERT DAISMEOU ; BEM HOROZLLOH CERIME + DEMOTTE JOCQUES + ESPIMAOZ OMDRES   + OMIRAUCHE DARO

0750429J CLG RALOMD DARGELES ; DIOKHOBY KUMBO + KOSRI OZEDIME + LOUCORD MICHOEL + LUCATTE JODE + OVROMAVIC MORKA
Sommaire