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
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
Regarde ces discussions :
http://www.developpez.net/forums/d13...fichier-excel/
et
http://www.developpez.net/forums/d13...feuille-excel/
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
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
Merci beaucoup.
Finalement j'ai essayé ceci pour produire le fichier XLS avec plusieurs onglets, et ça marche bien :
Mai je n'arrive pas à sauvegarder le fichier????
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
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......
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
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'
Essaie ça :La collection workbooks renvoie vers l'ensemble des fichiers ouverts sous Excel.
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"
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
Merci, c'est impeccable et ça fonctionne.
Un grand bravo à vous et à votre disponibilité si généreuse.
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.
Inspire toi de cette macro :
Cette macro gère le graphique cellule par cellule, et ne recopie les cellules que si la 4° colonne est supérieure à 5000.
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
Je suis sûr que tu peux l'adapter pour recopier chaque résultat de chaque prestataire au bon endroit
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 :
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")
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
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".
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.
Bizarre ...
Essayez d'insérer cette ligne
juste après la ligne XLDoc.Saveas
Code : Sélectionner tout - Visualiser dans une fenêtre à part XLDoc.close SaveChanges:=False
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
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.
Je ne comprends pas : Ma macro passe le test sans problème.
Dans mon script, j'ai unDans mon graphique, je peux afficher la date en changeant le format, c'est quand même le bon format qui est transmis à Excel ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part SET DateFormat='DD/MM/YYYY';
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager