Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Appliquer une boucle For.....next à plusieurs fichiers

Bonjour,

Je continue la création de mon fichier d'analyse et grâce à la communauté et aux docs en ligne je progresse... Cependant, il me manque quelques bases ce qui ralentit ma progression.

Mon dernier objectif est reproduire la totalité du scrip (en noir) ci-dessous pour l'ensemble des fichiers mensuels de l'année disponibles. Donc pouvoir disposer de tous les enregistrements ci-dessous pour chaque jour.

J'ai testé (en rouge) la création d'une boucle For.....next qui agit directement sur la construction de l'adresse des fichiers mais ....ça ne marche pas ! Auriez vous une idée svp ...peut-être plus simple ?

Le script (en noir) fonctionne très bien pour 1 seul mois et si je remplace le '06' par une * seule les données du dernier mois donc du dernier fichier sont présentes sur mes graphes.

let VAR03='01';

For a=0 to 11

let VAR04=VAR03+1;

if VAR04<10 then

VAR05='0'&VAR04

else

VAR05=VAR04

end if

let VAR06='[lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_'&VAR05&'_M-1.xls]';

//--------------------------------------------------------------------------------------------------

//Récupération du Nom du fichier source

//--------------------------------------------------------------------------------------------------

FICHIER:

LOAD distinct

     FileBaseName() as Nom_Fichier

//FROM [lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_06_M-1.xls]

    FROM VAR06

(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);

//--------------------------------------------------------------------------------------------------

//Récupération du Mois analysé directement à partir du nom du fichier source

//--------------------------------------------------------------------------------------------------

let MoisFichier =  Left(Subfield(Peek('Nom_Fichier', 0,'FICHIER'),'_',5),2);

DROP Table FICHIER;

//--------------------------------------------------------------------------------------------------

//Création des variable de Début et Fin de mois étudié

//--------------------------------------------------------------------------------------------------

let VAR01='01/'&(MoisFichier) &'/2016';

let VAR02=date(VAR011,'DD/MM/YYYY');

let Date_jour_deb = monthstart(VAR02);

let Date_jour_fin = monthend(VAR02);

set  Errormode=0;

//--------------------------------------------------------------------------------------------------

//Initialisation de la boucle de recherche de Champs par rapport à chacun des jour du mois étudié

//--------------------------------------------------------------------------------------------------

For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'

let Jour= left(date('$(Date_jour)'),5);   

let Nom_jour= Capitalize(left(weekday('$(Date_jour)'),2));

let FieldN= '$(Nom_jour)'&' '&'$(Jour)';

//--------------------------------------------------------------------------------------------------

//Chargement des données dans la boucle pour un jour précisé ci-dessus

//--------------------------------------------------------------------------------------------------

[Disponibilité des ressources$]:

LOAD

[ID Activité],

    [Structure Responsable],

    [Libellé Activité],

...

    [Spécificité],

    [Ressource affectée],   

    [$(FieldN)] as QteCharge,

    '$(Jour)' as Jour,  

    [Commentaire affectation]

//   FROM [lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_06_M-1.xls]

    FROM VAR06

(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);

//--------------------------------------------------------------------------------------------------

//Relance de la Boucle pour le jour suivant

//--------------------------------------------------------------------------------------------------

Next

next a

10 Replies
Not applicable
Author

Bonjour et encore merci !

En effet j'avais fait une erreur dans ma formule MAIS ceci ne change pas beaucoup les choses.

1) Si je mets l'adresse exacte du Fichier sans utiliser '*' comme celà :

FOR  MOIS= 1 to 12 

if $(MOIS) <10 then

             let MOIS='0'&$(MOIS);

      endif

      let MoisFichier = '$(MOIS)';     

let VAR03 = 'lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_20160527_06_M-1.xls';

let VAR04 = Filesize ('$(VAR03)');

IF FileSize('lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_20160527_06_M-1.xls')>0  then

Tout fonctionne très bien pour le mois de JUIN (cf.06) !!

2) Si je remplace le 06 par la variable (MoisFichier) mais je que laisse la date de création du fichier de Juin juste avant comme celà :

FOR  MOIS= 1 to 12 

if $(MOIS) <10 then

             let MOIS='0'&$(MOIS);

      endif

      let MoisFichier = '$(MOIS)';

let VAR03 = 'lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_20160527_$(MoisFichier)_M-1.xls';

let VAR04 = Filesize ('$(VAR03)');

IF FileSize('lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_20160527_$(MoisFichier)_M-1.xls')>0  then

Tout fonctionne très bien aussi pour le moi de JUIN !!!

3) Mais comme chaque fichier source mensuel à une date de création différente et inconnu. Quand je remplace cette date par le symbole ' * ' comme celà :

FOR  MOIS= 1 to 12 

if $(MOIS) <10 then

             let MOIS='0'&$(MOIS);

      endif

      let MoisFichier = '$(MOIS)';

let VAR03 = 'lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_$(MoisFichier)_M-1.xls';

  let VAR04 = Filesize ('$(VAR03)');

IF FileSize('lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_$(MoisFichier)_M-1.xls')>0  then

Là ça ne fonctionne pas du tout et pour aucun des mois !!

Je suis désolé de vous solliciter autant car je cherche aussi de mon côté ...mais mes compétences restent limitées ! J'avais pensé récupérer la date de création du fichier source en début de script mais là je ne sais pas faire et je ne suis pas sûr que ceci fonctionnerait mieux.