IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

QlikView Discussion :

Macro pour générer fichier XLS avec plusieurs feuilles


Sujet :

QlikView

  1. #1
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Macro pour générer fichier XLS avec plusieurs feuilles
    Bonjour,
    C'est la première fois que je m'adresse à vous
    Je souhaite via un macro généré un fichier XLS avec plusieurs feuilles: exporter deux ou plusieurs tableaux dans un même fichier mais dans les feuilles différentes.
    MERCI d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409

  3. #3
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup, ça fonctionne !
    Sauf que je voulais mettre chaque tableau (CH01) et (CH02) dans deux onglets différents d'un même XLS.

    C'est sympa de votre part si vous avez une solution.

    Sinon une petite question : Que penser de l'outil QBI de infini conseil ?
    Cordialement

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Il te suffit d'adapter la macro, tout simplement !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    Sub Exporter
     
    NomFichier = "C:\Temp\test_export.xls"
     
    SET fso = CreateObject("Scripting.FileSystemObject")
    ON error resume next
    fso.DeleteFile(NomFichier)
    ON error goto 0
     
    SET tmpExcel = CreateObject("Excel.Application")
    SET tmpWorkBook = tmpExcel.Workbooks.ADD
    SET tmpWorkBook = tmpExcel.Workbooks.ADD
    tmpExcel.Visible = True
     
    SET TABLE = ActiveDocument.GetSheetObject("CH01")
    SET XLSheet = TmpExcel.Worksheets(1) 
    TABLE.CopyTableToClipboard true 
    XLSheet.Range("A1").SELECT 
    XLSheet.PasteSpecial 
     
    SET TABLE = ActiveDocument.GetSheetObject("CH02")
    SET XLSheet = TmpExcel.Worksheets(2) 
    TABLE.CopyTableToClipboard true 
    XLSheet.Range("A1").SELECT 
    XLSheet.PasteSpecial 
     
    TmpWorkBook.SaveAs NomFichier
    TmpExcel.Quit
     
    end sub

  5. #5
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup.
    Finalement j'ai essayé ceci pour produire le fichier XLS avec plusieurs onglets, et ça marche bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Sub M01
     
    	NomFichier = "C:\Temp\CDT.xls"
     
    SET fso = CreateObject("Scripting.FileSystemObject")
    ON error resume next
    fso.DeleteFile(NomFichier)
    ON error goto 0
     
    	set oXL=CreateObject("Excel.Application") 
     
    	oXL.visible=True	
    	oXL.Workbooks.Add
    	'---------------------------------------	
    	aSheetObj=Array("CH63","CH67","CH76")
    	'---------------------------------------
     
    	for i=0 to UBound(aSheetObj)
    		oXL.Sheets.Add
     
    		Set oSH = oXL.ActiveSheet
    	    oSH.Range("A1").Select
     
    	    Set obj = ActiveDocument.GetSheetObject(aSheetObj(i))
    	    obj.CopyTableToClipboard True
    	    oSH.Paste 
    	    sCaption=obj.GetCaption.Name.v
    	    set obj=Nothing
     
    		oSH.Rows("1:1").Select
    		oXL.Selection.Font.Bold = True
     
    	    oSH.Cells.Select
    	    oXL.Selection.Columns.AutoFit	
     
    	    oSH.Range("A1").Select	    
    		oSH.Name=left(sCaption,30)	 
     
     
    		set oSH=Nothing
     
    	next 
     
    	'---------------------------------------
    	set oXL=Nothing
     
    end sub
    Mai je n'arrive pas à sauvegarder le fichier????
    Dans QV, j'ai trois tableaux pour mes clients,
    Est il possible de générer par macro un fichier XLS par client en nommant le fichier avec le nom de client?? sans filtrer dans QV. Désolé, je demande un peu beaucoup......

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Pour la sauvegarde, utilises oxl.workbook.saveas "Nom_du_fichier_excel" juste avant ton set oxl=Nothing.

    Si tu veux sauvegarder dans 3 fichiers excel, tu reproduis ta macro 3 fois, en changeant la valeur de Nom_du_fichier_excel, tout simplement

  7. #7
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Encore merci pour votre réponse.
    Effectivement, j'ai essayé de faire ça, mais j'ai le message :
    Cet objet ne gère pas cette propriété ou cette méthode: 'oXL.Workbooks.saveas'

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SET oxl = CreateObject("Excel.Application")
    SET owb = oxl.Workbooks.ADD
    reste de ta macro
    owb.saveas "monfichier.xls"
    La collection workbooks renvoie vers l'ensemble des fichiers ouverts sous Excel.
    En faisant un SET owb = oxl.workbooks.add, tu te retrouves avec owb qui pointe sur LE fichier excel qui vient d'être créé. Et là tu peux le sauvegarder avec owb.saveas

  9. #9
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci, c'est impeccable et ça fonctionne.

    Un grand bravo à vous et à votre disponibilité si généreuse.

  10. #10
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Finalement, la macro dont j'ai besoin fonctionne correctement.
    Je peux créer des fichiers xls par prestataire (carrier).
    Je souhaite utiliser un fichier modèle et pouvoir copier le résultat de chaque prestataire dans la cinquième colonne (A5) de l'onglet Collecte.
    je me permets de joindre en attaché le fichier xls et ma macro.

    Merci d'avance pour votre aide.
    Fichiers attachés Fichiers attachés

  11. #11
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Inspire toi de cette macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Sub Exporter
     
    NomFichier = "C:\Temp\test_export.xls"
     
    SET fso = CreateObject("Scripting.FileSystemObject")
    ON error resume next
    fso.DeleteFile(NomFichier)
    ON error goto 0
     
    SET tmpExcel = CreateObject("Excel.Application")
    SET tmpWorkBook = tmpExcel.Workbooks.ADD
    tmpExcel.Visible = True
    ' Sélectionne le graphique 
    SET TABLE = ActiveDocument.GetSheetObject("CH01")
    ' Sélectionne la feuille
    SET XLSheet = TmpExcel.Worksheets(1) 
    ' Coordonnées de début du graphique dans Excel
    RowNum = 3
    ColNum = 1
    reDim Cell(TABLE.GetColumnCount)
    ' Traitement du graphique
    ' On démarre à 1 pour ne pas traiter les en-têtes
    FOR RowIter = 1 TO TABLE.GetRowCount-1
    	' Récupère la ligne en tableau
        FOR ColIter =0 TO TABLE.GetColumnCount-1
            Cell(ColIter+1) = TABLE.GetCell(RowIter,ColIter).Text
        next
    	' Teste si la ligne doit être exportée
    	IF Cell(4)>5000 then
    	' Exporte la ligne
    	FOR ColIter =0 TO TABLE.GetColumnCount-1
            CelNum=chr(64+ColNum+ColIter) & cstr(RowNum)
        	XLSheet.Range(CelNum).Value=Cell(ColIter+1)
        next
    	RowNum=RowNum+1
        end IF
     
    next
     
    ' Sauvegarde du fichier
    TmpWorkBook.SaveAs NomFichier
    TmpExcel.Quit
     
    end sub
    Cette macro gère le graphique cellule par cellule, et ne recopie les cellules que si la 4° colonne est supérieure à 5000.
    Je suis sûr que tu peux l'adapter pour recopier chaque résultat de chaque prestataire au bon endroit

  12. #12
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci encore pour votre réponse.
    Votre exemple de cas est fort intéressant pour autres besoins, je vais le conserver précieusement.
    Pour mon problème, j'ai essayé de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for i=0 to val.Count-1
     
    set MyTable = ActiveDocument.GetSheetObject("CH37")
    set XLDoc = XLApp.Workbooks.Open ("C:\Temp\Collecteurs\TEST_FORM.xls")
    set XLSheet = XLDOC.Worksheets("Collecte") 
    XLSheet.Paste XLSheet.Range("A5")
    path="C:\Temp\Collecteurs\"
    ActiveDocument.Fields("Carrier").Select val.Item(i).Text
            MyTable.ExportBiff  path & val.Item(i).Text &".xls"
    next
    Mais je ne sais pas comment enregistrer le contenu de MyTable.ExportBiff au même format que TEST_FORM.xls sous le nouveau nom (& val.Item(i).Text &".xls")

  13. #13
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Et pourtant tu as tout sous la main !

    Tu remplace le exportbiff par la boucle (lignes 17 à 38) de ma macro (en adaptant, bien sûr), puis tu utilises un workbook.saveas path & val.Item(i).Text &".xls".

  14. #14
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    J'ai passé un peu de temps pour suivre votre recommandation.
    La macro a l'air de fonctionner, sauf que une fois que mon premier fichier est bien enregistré avec le nom de mon collecteur concerné, puis dès le deuxième fichier donc le collecteur suivant (2em_collecteur), j'ai le message : (MS Excel ne peut accéder au fichier C:\Temp\Collecteurs\nom_2em_collecteur.

    Je vous joint ma macro en doc attaché.

    Merci d'avance pour votre aide.
    Fichiers attachés Fichiers attachés

  15. #15
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Bizarre ...
    Essayez d'insérer cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XLDoc.close SaveChanges:=False
    juste après la ligne XLDoc.Saveas

  16. #16
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci encore.
    Le problème venait d'un nom de fichier (nom de collecteur) qui contient un \ et Excel ne peux pas reconnaître un nom de fichier avec \.
    C'est un peu bête, j'ai perdu du temps et je vous ai fait perdre le votre.
    En tout cas merci infiniment pour votre réactivité.
    Cordialement

  17. #17
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Besoin d'aide
    Bonjour,
    J'utilise une macro pour exporter des tableaux Qlikview dans Excel.
    Cela fonctionne sans problème, sauf que mes champs date dans Excel arrivent en format mm/dd/yyyy alors qu'ils sont dd/mm/yyyy dans Qlikview.
    Quand j'utilise l'export vers Excel sans passer par ma macro, ce problème ne se produit pas.
    Merci d'avance pour votre précieuse aide.

  18. #18
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Je ne comprends pas : Ma macro passe le test sans problème.

    Dans mon script, j'ai un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET DateFormat='DD/MM/YYYY';
    Dans mon graphique, je peux afficher la date en changeant le format, c'est quand même le bon format qui est transmis à Excel ...

  19. #19
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Urgence problème d'export XLS
    Citation Envoyé par QVLover Voir le message
    Bonjour,
    J'utilise une macro pour exporter des tableaux Qlikview dans Excel.
    Cela fonctionne sans problème, sauf que mes champs date dans Excel arrivent en format mm/dd/yyyy alors qu'ils sont dd/mm/yyyy dans Qlikview.
    Quand j'utilise l'export vers Excel sans passer par ma macro, ce problème ne se produit pas.
    Merci d'avance pour votre précieuse aide.

Discussions similaires

  1. Comment générer un fichier Excel avec plusieurs feuilles ?
    Par sinoun dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 15/03/2018, 15h16
  2. [POI] Importer fichier Excel avec plusieurs feuilles
    Par ninoch07 dans le forum Documents
    Réponses: 9
    Dernier message: 10/02/2015, 09h59
  3. Remplissage de xls avec plusieurs feuilles
    Par kariel dans le forum WinDev
    Réponses: 3
    Dernier message: 23/01/2015, 16h24
  4. Réponses: 11
    Dernier message: 12/11/2010, 09h31
  5. Créer un fichier excel avec plusieurs feuilles à partir d'un fichier html
    Par yuukuari dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/12/2009, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo