Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
j'ai une boucle de chargement me permettant de récupérer les noms de fichiers excel d'un repertoire, et ensuite de charger les données de ces fichier.
le problème survient quand le nom de la table que je veut charger est propre à chaque fichier
ex:
FROM
[$(namefile)]
(ooxml, embedded labels, header is 4 lines, table is [closed ticket (277)])
puis
FROM
[$(namefile)]
(ooxml, embedded labels, header is 4 lines, table is [closed ticket (50)])
Récupérer le nom de la table pour chaque fichier est trop lourd. Je me demandais donc si on pouvait utiliser les caractères générique ou une fonction 'like' pour avoir l'équivalent de
FROM
[$(namefile)]
(ooxml, embedded labels, header is 4 lines, table is [closed ticket (*)])
Bonjour,
effectivement cela marche. Le hic est que ca plombe les perfs de rechargement et que ma boite ne veut pas installer le connecteur qui va bien sur le serveur....:-)
je suis donc obligé de trouver une autre astuce....que je cherche encore.
Hormis ca, cette méthode est effectivement top.
bon courage.
Florent.
j'y pense :
notre informaticien nous a fait un .vbs pour concaténer des fichiers .hpr
peut-être peutx tu t'en inspirer pour concaténer en amont tes tables .xls ??
ci-dessous la syntaxe :
Dim fso, f, fc, fileWriter
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("f:\anapath")
Set fc = f.Files
Set fileWriter = fso.OpenTextFile("f:\anapath\~cumul.txt", 2, True)
For Each f1 in fc
if right(f1.name,4) = ".hpr" then
'premiere lecture pour aller chercher le no de dossier dans la 2e ligne
Set flecture = fso.OpenTextFile (f1.path, 1)
ligne1 = flecture.ReadLine
ligne2 = flecture.ReadLine
testdm = instr(1,ligne2, "1|DM")
if testdm = 0 then
nodossier = mid(ligne2,7,9)
else
nodossier = mid(ligne2,15,9)
end if
'2em lecture pour avoir le no de dossier devant toute les lignes meme la 1er en H avec no de dossier lu precedement
Set flecture = fso.OpenTextFile (f1.path, 1)
Do While Not flecture.AtEndOfStream
ligne = flecture.ReadLine
'if left(ligne,1) <> "H" then
if left(ligne,1) = "P" then
testdm = instr(1,ligne, "1|DM")
if testdm = 0 then
nodossier = mid(ligne,7,9)
else
nodossier = mid(ligne,15,9)
end if
end if
fileWriter.WriteLine (nodossier & "|" & ligne)
'end if
loop
end if
Next
msgbox "c est fini"
Florent
Bonjour Benjamin,
voici ce que j'utilise :
// SOUS PROGRAMME : liste les fichiers d'un répertoire
SUB ListeFichiers(Root)
//Récupération des fichiers de type xls
FOR Each File in filelist (Root&'\*.xls' )
//Traitement si fichier non vide
IF FileSize('$(File)') > 0 then
TABLE:
LOAD *
FROM
[$(File)]
(biff, embedded labels, table is [FEUILLE$]);
ENDIF
NEXT File
//Traitement des sous dossiers
FOR Each Dir in dirlist (Root&'\*' )
CALL ListeFichiers (Dir)
NEXT Dir
ENDSUB
//Exécution du sous programme
CALL ListeFichiers ('\\serveur\repertoire\dossier');
ouch....va falloir du temps pour que je comprennes 😄
Le truc est qu'en plus d'avoir des noms de feuil différents, les fichiers ont en + plusieurs feuilles...du coup, je ne sais pas trop comment va se passer une éventuelle concaténation...
mais ca se tente !
Merci !
Bonjour Thomas,
c'est effectivement ce que j'utilise pour charger plusieurs fichiers excel ayant des noms différents mais avec la même structure (même nom de Feuill " [FEUILLE$]"). Mon problème ici est que chaque fichier à un nom de Feuille différents.
cdlt
Bonjour,
Voici un lien vous permettant de charger N fichiers Excel contenant X feuilles distinctes.
Pour que ça marche, créer un lien ODBC Excel vers votre répertoire contenant les fichiers. Puis utiliser ce lien dans QlikView/Sense.
Du pur script Qlik.
https://community.qlik.com/docs/DOC-14663
Cdt
Christophe Jouve
Principal Solution Architect
Direct: +33 1 55 62 65 54
Mobile: +33 6 76 24 22 47
Email: Christophe.Jouve@qlik.com
Qlik
France Headquarters Office,93 avenue Charles de Gaulle
92200 Neuilly sur Seine
qlik.com<http://www.qlik.com/>
Téléchargez gratuitement QlikView
http://www.qlikview.com/fr/explore/experience/free-download
The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.