Bonjour,
J'ai des résultats de recherche dans 4 zones de listes différentes (avec des requetes SELECT dans la propriété Contenu).
je voudrais extraire ces résultats dans un même fichier excel mais dans 4 onglets différents.
Comment faire ?
merci
Version imprimable
Bonjour,
J'ai des résultats de recherche dans 4 zones de listes différentes (avec des requetes SELECT dans la propriété Contenu).
je voudrais extraire ces résultats dans un même fichier excel mais dans 4 onglets différents.
Comment faire ?
merci
Salut,
Je te suggère la lecture du tutoriel de Cafeine sur l'export vers Excel. Notamment le point 4.
;)
La fonction TransferSpreadsheet sert à exporter des tables entières. moi les résultats dans mes zones de texte sont des requêtes du type SELECT champs FROM table WHERE condition ORDER BY nom.
est-ce que c'est possible d'extraire directement les résultats de cette requête (qui n'a pas de nom mais est défini dans le contenu de la zone de liste) avec transferspreadsheet ?
oui, en passant par une table temporaire remplie avec la requete select par exemple :)
Ou par un recordset basé sur ta requete.
Voici un exemple:
Code:
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 Set Appexcel = CreateObject("Excel.Application") Appexcel.Visible = True Set Wbexcel = Appexcel.Workbooks.Open("C:\Detailled Report.xls") Appexcel.Sheets("Global").Select 'creation du recordset à partir de la requete Dim rsReport As DAO.Recordset Set rsReport = CurrentDb.OpenRecordset("nomrequete") boucleReport = 1 'parcourt le recordset puis afficher les données du recordset dans les cellules du fichier excel While Not rsReport.EOF Appexcel.Cells(boucleReport + 7, 1) = rsReport(0) Appexcel.Cells(boucleReport + 7, 2) = rsReport(1) Appexcel.Cells(boucleReport + 7, 3) = rsReport(2) Appexcel.Cells(boucleReport + 7, 4) = rsReport(3) Appexcel.Cells(boucleReport + 7, 5) = rsReport(4) Appexcel.Cells(boucleReport + 7, 6) = rsReport(5) boucleReport = boucleReport + 1 rsReport.MoveNext Wend Set rsReport = Nothing
Je me suis trompé.. c'est pas le point 4 mais le 5. :oops:
Il te permettra de mettre en form ton fichier Excel.
Je suis à moitié d'accord.Citation:
oui, en passant par une table temporaire remplie avec la requete select par exemple
Ceci fonctionne très bien :
En plus,Code:DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, Me.MaZoneDeListe.RowSource, "MonfichierExcel.xls"
Si tu ajoutes à la suite :
L'exportation se fait dans le même fichier mais dans une feuille différente.Code:DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, Me.MaZOneDeListe2.RowSource, "MonfichierExcel.xls"
;)
jpcheck :
par exemple avec une requête Création de table ? CREATE TEMPORARY TABLE table (champ1,champ2)
Lou Pitchoun :
J'ai fait comme tu as dit mais j'ai un message d'erreur :
le nom de table n'est pas conforme au regle d'appelation d'objet quand j'écris :
Code:DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, Me.ExpedMarchandise.RowSource, "MonfichierExcel.xls"
Bonjour
1 - Est-ce que ici
Cela représente bien le nom de ta table ?Code:
1
2 Me.ExpedMarchandise.RowSource
2 - Quelle version d'Excel as-tu ? Car
risque de te donner une erreur.Code:acSpreadsheetTypeExcel97
Regarde l'aide en fonction de ta version.
Starec
Me.ExpedMarchandise.RowSource représente bien ma table. j'ai les résultats qui s'affiche dans une zone de liste. et quand je met debug.print Me.ExpedMarchandise.Rowsource, j'obtiens biens la formule SQL.
j'ai excel 2003. j'utilise AcSpreadSheetTypeExcel9 mais ça ne marche pas.
Est-ce que l'erreur peut venir de Me.ExpedMarchandise.Rowsource qui est une requete et non pas une table ? le message étant : "le nom de table n'est pas conforme au regle d'appelation d'objet ", ça signifie qu'il cherche une table dans les paramètres, non ?
Bonjour
La méhode TransfertSpreadSheet n'interprètera pas le SQL, il faut le nom d'une table ou d'une requête, et pas le code SQL.
Il faut que tu crées une requête avec ton SQL, et c'est elle que tu devras mettre en paramètre.
Starec
Alors un petit historique sur les numéros :
8 : Access97 (Office97) et accéssoirement 97 qui fonctionne mieux que 8 sur AcSpreadSheetTypeExcel :koi:
9 : Access2000 (Office2000)
10 : Access2002/XP (Office2002/XP)
11 : Access2003 (Office2003)
12 : Access2007 (Office2007)
Comme le dit Starec : un p'tit coup de F1 ;)
avec un code comme ça, ça ne marche pas non plus :
Code:
1
2
3
4
5 Dim Requete As String Requete = Me.ExterneSE.RowSource DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, Requete, "MonfichierExcel.xls"
j'ai cherché l'aide pour acSpreadsheetTypeExcel mais dans mon aide, ça s'arrête à 9. du coup, je l'avais pas trouvé.
Non
Dans Requete tu auras une chaine SQL, c'est une requête dans la fenêtre requête de la base de donnée.
Starec