Bonjour,
Je dois découper un fichier texte (que je nommerai "A" ) de 360.000 lignes en plusieurs fichiers texte d'environ 20.000 lignes chacun (20.000 étant un nombre approximatif car saisi par l'utilisateur et compris entre 15000 et 30000, mais peu importe).
Chaque ligne de "A" commence par un code fournisseur en " lettres (disons CAR pour Carrefour par exemple).
Dans les 360.000 lignes, il y a environ 100 codes fournisseurs différents mais triés dans l'ordre alphabétique : exemple du fichier (en plus petit) :
AABgqregeazgzerget
AABrhjyrjyejyjyeru
AABdkzghelkghekhlo
CDEzraelghreihamki
CDErezagmhezrgahuj
DATioazyrzpeioygak
DATfrzrthrznrtyhhy
DATzeagvzregaezgee
DATzargzrgazgrezgy
DATzregazrgrezgaze
ZENrzayjuutkukukut
ZENerazgzervyjeryj
ZENfjdvjkhfjhqsjkv
ZIMezqbgtrhzethrth
ZIMuyktyukrykukrkk
ZIMopreuiioerzeiou
ZIMazdsahjvxhjahjg
(dans cet exemple, il n'y a que 5 codes fournisseur : AAB, CDE, DAT, ZEN et ZIM)
Je souhaite découper ce fichier (ou tableau car j'en ai fait un tableau de structure) en sous-fichiers ou sous-tableaux dont la taille s'approche le plus possible de 20000 lignes.
Evidemment, la difficulté du problème c'est que je souhaite ne pas séparer un même fournisseur dans 2 fichiers ou tableaux différents.
Ici, dans notre exemple, si le nombre de lignes n'était pas 20.000 mais 7, ça donnerait des sous-tableaux comme ceci :
Sous-tableau1 :
AABgqregeazgzerget
AABrhjyrjyejyjyeru
AABdkzghelkghekhlo
CDEzraelghreihamki
CDErezagmhezrgahuj
Sous-tableau2 :
DATioazyrzpeioygak
DATfrzrthrznrtyhhy
DATzeagvzregaezgee
DATzargzrgazgrezgy
DATzregazrgrezgaze
ZENrzayjuutkukukut
ZENerazgzervyjeryj
ZENfjdvjkhfjhqsjkv
Sous-tableau3 :
ZIMezqbgtrhzethrth
ZIMuyktyukrykukrkk
ZIMopreuiioerzeiou
ZIMazdsahjvxhjahjg
J'espère avoir été clair.
Le résultat de l'algo ne doit pas forcément être plusieurs sous-tableaux, mais un tableau récapitulatif de cette forme :
TR[1]="ABB-CDE"
TR[2]="DAT-ZEN"
TR[3]="ZIM-ZIM"
Je cherche, je cherche, mais je ne suis pas assez intelligent pour trouver cet algo...
Si quelqu'un pouvait m'aider un peu, c'est avec grand plaisir.
Merci d'avance.