Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Résultat d'une sélection vers Excel

27 réponses
Avatar
Francis
Bonjour,
Je dispose actuellement d'une transaction qui me permet de faire une
sélection sur un certain nombre de critères, et dont le résultat du
filtre est contenu dans la variable nommée strfiltre. Ce filtre est
appliqué à une requête "Ma_requête" et le résultat peut soit être
affiché à l'écran, soit être imprimé sur un état.
Je voudrais aussi pouvoir transférer ce résultat vers excel, mais là
mes compétences en programmation sont largement insuffisantes. :/
Je suis donc preneur de toute aide en la matière. Merci à l'avance

Francis

--
Francis
fhgc@wanadoudou.fr
LOI DE MOSES
C'est quand on ne regarde pas que le but est marqué.

10 réponses

1 2 3
Avatar
Gloops
[Transfert des résultats d'une requête vers Excel]

Bonjour,

Attention au mot transaction, ça désigne quelque chose de très pré cis
pour un programmeur Access :)

Ensuite, il serait bien d'exprimer de manière pratique ce qu'il y a à
faire. J'ai l'impression qu'il y a plusieurs façons de s'y prendre, et
que le choix dépend grandement de l'énoncé du problème.

Je suppose déjà que la requête est définie sur la base de donné es où on
va taper le code, pour appeler des tables de la même base de données, et
qu'on veut envoyer le résultat vers un nouveau fichier Excel.

J'ai eu quelque chose de très proche à faire hier, j'ai parcouru deux
boucles, l'une décrivant les colonnes sur une ligne, inscrite dans une
autre qui décrit les différentes lignes.

ça ressemble à ça, que je tape au fil du clavier sur une machine où il
n'y a pas Excel ni Access :

Commencer par ouvrir, depuis un module, la boîte Outils / Référence s, et
y cocher Microsoft Excel.

Public Sub Transfert()
Dim xlApp As New Excel.Application
Dim xlWks as Excel.Worksheet
Dim Lig As Integer, Col As Integer
Dim Rs As Recordset

xlApp.Visible = True
xlApp.Workbooks.Add
xlApp.CurrentWorkbook.SaveAs "NomDuClasseur"
Set xlWks = xlApp.Workbooks("NomDuClasseur").Worksheets(1)
Set Rs = CurrentDb().QueryDefs("MaRequête").OpenRecordset()
While Not Rs.EOF
Lig = 1
For Col = 0 to Rs.Fields.Count - 1
xlWks.Cells(Lig, Col + 1) = Rs.Fields(Col)
Rs.MoveNext
Wend
Rs.Close
Set Rs = Nothing

'Après il reste à fermer les objets xlApp et xlWks,
'une fois qu'on n'en a plus besoin :

xlApp.Workbooks("NomDuClasseur").Close
xlApp.Quit
Set xlApp = Nothing
Set xlWks = Nothing

End Sub
_____________________________________
Francis a écrit, le 19/04/2008 13:29 :
Bonjour,
Je dispose actuellement d'une transaction qui me permet de faire une
sélection sur un certain nombre de critères, et dont le résultat du
filtre est contenu dans la variable nommée strfiltre. Ce filtre est
appliqué à une requête "Ma_requête" et le résultat peut soit être
affiché à l'écran, soit être imprimé sur un état.
Je voudrais aussi pouvoir transférer ce résultat vers excel, mais l à mes
compétences en programmation sont largement insuffisantes. :/
Je suis donc preneur de toute aide en la matière. Merci à l'avance

Francis



Avatar
Francis
Bonjour Gloops,
Merci beaucoup pour ta réponse. Je reformule ma demande:
En fait, c'est une application qui est déjà réalisée, et dans laquelle
j'ai un formulaire qui me permet de faire une sélection multicritères.
Le formulaire est relié à une requête "Ma_requête", elle même reliée à
la table "Ma_table" et le choix des critères de sélection est contenu
dans la variable "strfiltre".
Le résultat est effectivement à transférer dans un nouveau fichier
excel à chaque fois, mais on peut aussi avoir un nom de fichier unique,
et le renommer ensuite dans excel.
Je vais jeter un coup d'oeil à ce que tu as envoyé ce soir, et je te
tiens au courant de la suite
@+
Francis


Gloops avait prétendu :
[Transfert des résultats d'une requête vers Excel]

Bonjour,

Attention au mot transaction, ça désigne quelque chose de très précis pour un
programmeur Access :)

Ensuite, il serait bien d'exprimer de manière pratique ce qu'il y a à faire.
J'ai l'impression qu'il y a plusieurs façons de s'y prendre, et que le choix
dépend grandement de l'énoncé du problème.

Je suppose déjà que la requête est définie sur la base de données où on va
taper le code, pour appeler des tables de la même base de données, et qu'on
veut envoyer le résultat vers un nouveau fichier Excel.

J'ai eu quelque chose de très proche à faire hier, j'ai parcouru deux
boucles, l'une décrivant les colonnes sur une ligne, inscrite dans une autre
qui décrit les différentes lignes.

ça ressemble à ça, que je tape au fil du clavier sur une machine où il n'y a
pas Excel ni Access :

Commencer par ouvrir, depuis un module, la boîte Outils / Références, et y
cocher Microsoft Excel.

Public Sub Transfert()
Dim xlApp As New Excel.Application
Dim xlWks as Excel.Worksheet
Dim Lig As Integer, Col As Integer
Dim Rs As Recordset

xlApp.Visible = True
xlApp.Workbooks.Add
xlApp.CurrentWorkbook.SaveAs "NomDuClasseur"
Set xlWks = xlApp.Workbooks("NomDuClasseur").Worksheets(1)
Set Rs = CurrentDb().QueryDefs("MaRequête").OpenRecordset()
While Not Rs.EOF
Lig = 1
For Col = 0 to Rs.Fields.Count - 1
xlWks.Cells(Lig, Col + 1) = Rs.Fields(Col)
Rs.MoveNext
Wend
Rs.Close
Set Rs = Nothing

'Après il reste à fermer les objets xlApp et xlWks,
'une fois qu'on n'en a plus besoin :

xlApp.Workbooks("NomDuClasseur").Close
xlApp.Quit
Set xlApp = Nothing
Set xlWks = Nothing

End Sub
_____________________________________
Francis a écrit, le 19/04/2008 13:29 :
Bonjour,
Je dispose actuellement d'une transaction qui me permet de faire une
sélection sur un certain nombre de critères, et dont le résultat du filtre
est contenu dans la variable nommée strfiltre. Ce filtre est appliqué à une
requête "Ma_requête" et le résultat peut soit être affiché à l'écran, soit
être imprimé sur un état.
Je voudrais aussi pouvoir transférer ce résultat vers excel, mais là mes
compétences en programmation sont largement insuffisantes. :/
Je suis donc preneur de toute aide en la matière. Merci à l'avance

Francis




--
Francis

THEOREME de la loi de MURPHY
Tout corps plongé dans une baignoire...déclenche systématiquement la
sonnerie du téléphone !


Avatar
Francis
Re bonsoir,

Je ne sais pas où ça cloche, mais je reçois systématiquement le message
d'erreur de compilation: "Wend sans While", alors que le While figure
bien dans ton code.
Alors, où est la faille ???
J'espère que pour toi ça sera limpide,
@+
Francis


Gloops a émis l'idée suivante :
[Transfert des résultats d'une requête vers Excel]

Bonjour,

Attention au mot transaction, ça désigne quelque chose de très précis pour un
programmeur Access :)

Ensuite, il serait bien d'exprimer de manière pratique ce qu'il y a à faire.
J'ai l'impression qu'il y a plusieurs façons de s'y prendre, et que le choix
dépend grandement de l'énoncé du problème.

Je suppose déjà que la requête est définie sur la base de données où on va
taper le code, pour appeler des tables de la même base de données, et qu'on
veut envoyer le résultat vers un nouveau fichier Excel.

J'ai eu quelque chose de très proche à faire hier, j'ai parcouru deux
boucles, l'une décrivant les colonnes sur une ligne, inscrite dans une autre
qui décrit les différentes lignes.

ça ressemble à ça, que je tape au fil du clavier sur une machine où il n'y a
pas Excel ni Access :

Commencer par ouvrir, depuis un module, la boîte Outils / Références, et y
cocher Microsoft Excel.

Public Sub Transfert()
Dim xlApp As New Excel.Application
Dim xlWks as Excel.Worksheet
Dim Lig As Integer, Col As Integer
Dim Rs As Recordset

xlApp.Visible = True
xlApp.Workbooks.Add
xlApp.CurrentWorkbook.SaveAs "NomDuClasseur"
Set xlWks = xlApp.Workbooks("NomDuClasseur").Worksheets(1)
Set Rs = CurrentDb().QueryDefs("MaRequête").OpenRecordset()
While Not Rs.EOF
Lig = 1
For Col = 0 to Rs.Fields.Count - 1
xlWks.Cells(Lig, Col + 1) = Rs.Fields(Col)
Rs.MoveNext
Wend
Rs.Close
Set Rs = Nothing

'Après il reste à fermer les objets xlApp et xlWks,
'une fois qu'on n'en a plus besoin :

xlApp.Workbooks("NomDuClasseur").Close
xlApp.Quit
Set xlApp = Nothing
Set xlWks = Nothing

End Sub
_____________________________________
Francis a écrit, le 19/04/2008 13:29 :
Bonjour,
Je dispose actuellement d'une transaction qui me permet de faire une
sélection sur un certain nombre de critères, et dont le résultat du filtre
est contenu dans la variable nommée strfiltre. Ce filtre est appliqué à une
requête "Ma_requête" et le résultat peut soit être affiché à l'écran, soit
être imprimé sur un état.
Je voudrais aussi pouvoir transférer ce résultat vers excel, mais là mes
compétences en programmation sont largement insuffisantes. :/
Je suis donc preneur de toute aide en la matière. Merci à l'avance

Francis




--
Francis

LOI DE BOOB
Quel que soit l'objet, il sera trouvé dans le dernier endroit dans
lequel on l'aura cherché.


Avatar
Michel_D
Bonjour,

A priori il manque un Next dans le code.


Re bonsoir,

Je ne sais pas où ça cloche, mais je reçois systématiquement le message
d'erreur de compilation: "Wend sans While", alors que le While figure
bien dans ton code.
Alors, où est la faille ???
J'espère que pour toi ça sera limpide,
@+
Francis


Gloops a émis l'idée suivante :
[Transfert des résultats d'une requête vers Excel]

Bonjour,

Attention au mot transaction, ça désigne quelque chose de très précis
pour un programmeur Access :)

Ensuite, il serait bien d'exprimer de manière pratique ce qu'il y a à
faire. J'ai l'impression qu'il y a plusieurs façons de s'y prendre, et
que le choix dépend grandement de l'énoncé du problème.

Je suppose déjà que la requête est définie sur la base de données où
on va taper le code, pour appeler des tables de la même base de
données, et qu'on veut envoyer le résultat vers un nouveau fichier Excel.

J'ai eu quelque chose de très proche à faire hier, j'ai parcouru deux
boucles, l'une décrivant les colonnes sur une ligne, inscrite dans une
autre qui décrit les différentes lignes.

ça ressemble à ça, que je tape au fil du clavier sur une machine où il
n'y a pas Excel ni Access :

Commencer par ouvrir, depuis un module, la boîte Outils / Références,
et y cocher Microsoft Excel.

Public Sub Transfert()
Dim xlApp As New Excel.Application
Dim xlWks as Excel.Worksheet
Dim Lig As Integer, Col As Integer
Dim Rs As Recordset

xlApp.Visible = True
xlApp.Workbooks.Add
xlApp.CurrentWorkbook.SaveAs "NomDuClasseur"
Set xlWks = xlApp.Workbooks("NomDuClasseur").Worksheets(1)
Set Rs = CurrentDb().QueryDefs("MaRequête").OpenRecordset()
While Not Rs.EOF
Lig = 1
For Col = 0 to Rs.Fields.Count - 1
xlWks.Cells(Lig, Col + 1) = Rs.Fields(Col)
Rs.MoveNext
Wend
Rs.Close
Set Rs = Nothing

'Après il reste à fermer les objets xlApp et xlWks,
'une fois qu'on n'en a plus besoin :

xlApp.Workbooks("NomDuClasseur").Close
xlApp.Quit
Set xlApp = Nothing
Set xlWks = Nothing

End Sub




Avatar
Francis
Bonsoir Michel,
C'est bien ça, il manquait un Next après Rs.MoveNext.
Ceci étant, ça ne marche pas quand même, et je ne pense pas que ça
réponde à ma demande.
Aurais-tu, à tout hasard, quelquechose à me proposer ?
Francis


Bonjour,

A priori il manque un Next dans le code.


Re bonsoir,

Je ne sais pas où ça cloche, mais je reçois systématiquement le message
d'erreur de compilation: "Wend sans While", alors que le While figure bien
dans ton code.
Alors, où est la faille ???
J'espère que pour toi ça sera limpide,
@+
Francis


Gloops a émis l'idée suivante :
[Transfert des résultats d'une requête vers Excel]

Bonjour,

Attention au mot transaction, ça désigne quelque chose de très précis pour
un programmeur Access :)

Ensuite, il serait bien d'exprimer de manière pratique ce qu'il y a à
faire. J'ai l'impression qu'il y a plusieurs façons de s'y prendre, et que
le choix dépend grandement de l'énoncé du problème.

Je suppose déjà que la requête est définie sur la base de données où on va
taper le code, pour appeler des tables de la même base de données, et
qu'on veut envoyer le résultat vers un nouveau fichier Excel.

J'ai eu quelque chose de très proche à faire hier, j'ai parcouru deux
boucles, l'une décrivant les colonnes sur une ligne, inscrite dans une
autre qui décrit les différentes lignes.

ça ressemble à ça, que je tape au fil du clavier sur une machine où il n'y
a pas Excel ni Access :

Commencer par ouvrir, depuis un module, la boîte Outils / Références, et y
cocher Microsoft Excel.

Public Sub Transfert()
Dim xlApp As New Excel.Application
Dim xlWks as Excel.Worksheet
Dim Lig As Integer, Col As Integer
Dim Rs As Recordset

xlApp.Visible = True
xlApp.Workbooks.Add
xlApp.CurrentWorkbook.SaveAs "NomDuClasseur"
Set xlWks = xlApp.Workbooks("NomDuClasseur").Worksheets(1)
Set Rs = CurrentDb().QueryDefs("MaRequête").OpenRecordset()
While Not Rs.EOF
Lig = 1
For Col = 0 to Rs.Fields.Count - 1
xlWks.Cells(Lig, Col + 1) = Rs.Fields(Col)
Rs.MoveNext
Wend
Rs.Close
Set Rs = Nothing

'Après il reste à fermer les objets xlApp et xlWks,
'une fois qu'on n'en a plus besoin :

xlApp.Workbooks("NomDuClasseur").Close
xlApp.Quit
Set xlApp = Nothing
Set xlWks = Nothing

End Sub




--
Francis

LOI DE BOOB
Quel que soit l'objet, il sera trouvé dans le dernier endroit dans
lequel on l'aura cherché.



Avatar
Michel_D
re,

Si j'ai bien compris tu veux exporter le résultat d'une requête, donc ...


Bonsoir Michel,
C'est bien ça, il manquait un Next après Rs.MoveNext.
Ceci étant, ça ne marche pas quand même, et je ne pense pas que ça
réponde à ma demande.
Aurais-tu, à tout hasard, quelquechose à me proposer ?
Francis


Bonjour,

A priori il manque un Next dans le code.


Re bonsoir,

Je ne sais pas où ça cloche, mais je reçois systématiquement le
message d'erreur de compilation: "Wend sans While", alors que le
While figure bien dans ton code.
Alors, où est la faille ???
J'espère que pour toi ça sera limpide,
@+
Francis


Gloops a émis l'idée suivante :
[Transfert des résultats d'une requête vers Excel]

Bonjour,

Attention au mot transaction, ça désigne quelque chose de très
précis pour un programmeur Access :)

Ensuite, il serait bien d'exprimer de manière pratique ce qu'il y a
à faire. J'ai l'impression qu'il y a plusieurs façons de s'y
prendre, et que le choix dépend grandement de l'énoncé du problème.

Je suppose déjà que la requête est définie sur la base de données où
on va taper le code, pour appeler des tables de la même base de
données, et qu'on veut envoyer le résultat vers un nouveau fichier
Excel.

J'ai eu quelque chose de très proche à faire hier, j'ai parcouru
deux boucles, l'une décrivant les colonnes sur une ligne, inscrite
dans une autre qui décrit les différentes lignes.

ça ressemble à ça, que je tape au fil du clavier sur une machine où
il n'y a pas Excel ni Access :

Commencer par ouvrir, depuis un module, la boîte Outils /
Références, et y cocher Microsoft Excel.

Public Sub Transfert()
Dim xlApp As New Excel.Application
Dim xlWks as Excel.Worksheet
Dim Lig As Integer, Col As Integer
Dim Rs As Recordset

xlApp.Visible = True
xlApp.Workbooks.Add
xlApp.CurrentWorkbook.SaveAs "NomDuClasseur"
Set xlWks = xlApp.Workbooks("NomDuClasseur").Worksheets(1)
Set Rs = CurrentDb().QueryDefs("MaRequête").OpenRecordset()
While Not Rs.EOF
Lig = 1
For Col = 0 to Rs.Fields.Count - 1
xlWks.Cells(Lig, Col + 1) = Rs.Fields(Col)
Rs.MoveNext
Wend
Rs.Close
Set Rs = Nothing

'Après il reste à fermer les objets xlApp et xlWks,
'une fois qu'on n'en a plus besoin :

xlApp.Workbooks("NomDuClasseur").Close
xlApp.Quit
Set xlApp = Nothing
Set xlWks = Nothing

End Sub









Avatar
Francis
re,
Oui, c'est bien ça. Actuellement, j'ai la possibilité de visualiser ou
d'imprimer ce résultat, mais je voudrais aussi pouvoir l'exporter au
format excel pour traitements complémentaires. Je sais comment exporter
une requête dans sa forme initiale, mais pas après application d'une
sélection multicritères.
Ça ne doit pas être super compliqué, probablement, mais je ne sais pas
faire :/


Michel_D a formulé ce samedi :
re,

Si j'ai bien compris tu veux exporter le résultat d'une requête, donc ...


Bonsoir Michel,
C'est bien ça, il manquait un Next après Rs.MoveNext.
Ceci étant, ça ne marche pas quand même, et je ne pense pas que ça réponde
à ma demande.
Aurais-tu, à tout hasard, quelquechose à me proposer ?
Francis


Bonjour,

A priori il manque un Next dans le code.


Re bonsoir,

Je ne sais pas où ça cloche, mais je reçois systématiquement le message
d'erreur de compilation: "Wend sans While", alors que le While figure
bien dans ton code.
Alors, où est la faille ???
J'espère que pour toi ça sera limpide,
@+
Francis


Gloops a émis l'idée suivante :
[Transfert des résultats d'une requête vers Excel]

Bonjour,

Attention au mot transaction, ça désigne quelque chose de très précis
pour un programmeur Access :)

Ensuite, il serait bien d'exprimer de manière pratique ce qu'il y a à
faire. J'ai l'impression qu'il y a plusieurs façons de s'y prendre, et
que le choix dépend grandement de l'énoncé du problème.

Je suppose déjà que la requête est définie sur la base de données où on
va taper le code, pour appeler des tables de la même base de données, et
qu'on veut envoyer le résultat vers un nouveau fichier Excel.

J'ai eu quelque chose de très proche à faire hier, j'ai parcouru deux
boucles, l'une décrivant les colonnes sur une ligne, inscrite dans une
autre qui décrit les différentes lignes.

ça ressemble à ça, que je tape au fil du clavier sur une machine où il
n'y a pas Excel ni Access :

Commencer par ouvrir, depuis un module, la boîte Outils / Références, et
y cocher Microsoft Excel.

Public Sub Transfert()
Dim xlApp As New Excel.Application
Dim xlWks as Excel.Worksheet
Dim Lig As Integer, Col As Integer
Dim Rs As Recordset

xlApp.Visible = True
xlApp.Workbooks.Add
xlApp.CurrentWorkbook.SaveAs "NomDuClasseur"
Set xlWks = xlApp.Workbooks("NomDuClasseur").Worksheets(1)
Set Rs = CurrentDb().QueryDefs("MaRequête").OpenRecordset()
While Not Rs.EOF
Lig = 1
For Col = 0 to Rs.Fields.Count - 1
xlWks.Cells(Lig, Col + 1) = Rs.Fields(Col)
Rs.MoveNext
Wend
Rs.Close
Set Rs = Nothing

'Après il reste à fermer les objets xlApp et xlWks,
'une fois qu'on n'en a plus besoin :

xlApp.Workbooks("NomDuClasseur").Close
xlApp.Quit
Set xlApp = Nothing
Set xlWks = Nothing

End Sub







--
Francis

THEOREME de la loi de MURPHY
Tout corps plongé dans une baignoire...déclenche systématiquement la
sonnerie du téléphone !





Avatar
Eric
Bonsoir,

Le Next doit être mis avant Rs.Movenext
Et après ce Next mettre Lig =Lig+1

Bonsoir Michel,
C'est bien ça, il manquait un Next après Rs.MoveNext.
Ceci étant, ça ne marche pas quand même
Francis


Bonjour,

A priori il manque un Next dans le code.


Re bonsoir,

Je ne sais pas où ça cloche, mais je reçois systématiquement le
message d'erreur de compilation: "Wend sans While", alors que le
While figure bien dans ton code.
Alors, où est la faille ???
J'espère que pour toi ça sera limpide,
@+
Francis


Gloops a émis l'idée suivante :
[Transfert des résultats d'une requête vers Excel]

Bonjour,

Attention au mot transaction, ça désigne quelque chose de très
précis pour un programmeur Access :)

Ensuite, il serait bien d'exprimer de manière pratique ce qu'il y a
à faire. J'ai l'impression qu'il y a plusieurs façons de s'y
prendre, et que le choix dépend grandement de l'énoncé du problème.

Je suppose déjà que la requête est définie sur la base de données où
on va taper le code, pour appeler des tables de la même base de
données, et qu'on veut envoyer le résultat vers un nouveau fichier
Excel.

J'ai eu quelque chose de très proche à faire hier, j'ai parcouru
deux boucles, l'une décrivant les colonnes sur une ligne, inscrite
dans une autre qui décrit les différentes lignes.

ça ressemble à ça, que je tape au fil du clavier sur une machine où
il n'y a pas Excel ni Access :

Commencer par ouvrir, depuis un module, la boîte Outils /
Références, et y cocher Microsoft Excel.

Public Sub Transfert()
Dim xlApp As New Excel.Application
Dim xlWks as Excel.Worksheet
Dim Lig As Integer, Col As Integer
Dim Rs As Recordset

xlApp.Visible = True
xlApp.Workbooks.Add
xlApp.CurrentWorkbook.SaveAs "NomDuClasseur"
Set xlWks = xlApp.Workbooks("NomDuClasseur").Worksheets(1)
Set Rs = CurrentDb().QueryDefs("MaRequête").OpenRecordset()
While Not Rs.EOF
Lig = 1
For Col = 0 to Rs.Fields.Count - 1
xlWks.Cells(Lig, Col + 1) = Rs.Fields(Col)
Rs.MoveNext
Wend
Rs.Close
Set Rs = Nothing

'Après il reste à fermer les objets xlApp et xlWks,
'une fois qu'on n'en a plus besoin :

xlApp.Workbooks("NomDuClasseur").Close
xlApp.Quit
Set xlApp = Nothing
Set xlWks = Nothing

End Sub






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
Bonsoir,

En supposant que tu lances l'exportation vers Excel par un clic sur un
bouton du formulaire affichant les enregistrements filtrés, j'essaierai
comme suit (j'ai pas lu toute la proc de Gloops) pour la partie écriture
dans la feuille du classeur :

Set Rs = Me.RecordsetClone ' récupération du jeu filtré
Lig=0
While Not Rs.EOF
Lig=Lig+1
For Col = 0 to RS.Fields.Count-1
xlWks.Cells(Lig, Col + 1) = Rs.Fields(Col)
Next Col
Rs.MoveNext
Wend
re,
Oui, c'est bien ça. Actuellement, j'ai la possibilité de visualiser ou
d'imprimer ce résultat, mais je voudrais aussi pouvoir l'exporter au
format excel pour traitements complémentaires. Je sais comment exporter
une requête dans sa forme initiale, mais pas après application d'une
sélection multicritères.
Ça ne doit pas être super compliqué, probablement, mais je ne sais pas
faire :/


Michel_D a formulé ce samedi :
re,

Si j'ai bien compris tu veux exporter le résultat d'une requête, donc ...


Bonsoir Michel,
C'est bien ça, il manquait un Next après Rs.MoveNext.
Ceci étant, ça ne marche pas quand même, et je ne pense pas que ça
réponde à ma demande.
Aurais-tu, à tout hasard, quelquechose à me proposer ?
Francis


Bonjour,

A priori il manque un Next dans le code.


Re bonsoir,

Je ne sais pas où ça cloche, mais je reçois systématiquement le
message d'erreur de compilation: "Wend sans While", alors que le
While figure bien dans ton code.
Alors, où est la faille ???
J'espère que pour toi ça sera limpide,
@+
Francis


Gloops a émis l'idée suivante :
[Transfert des résultats d'une requête vers Excel]

Bonjour,

Attention au mot transaction, ça désigne quelque chose de très
précis pour un programmeur Access :)

Ensuite, il serait bien d'exprimer de manière pratique ce qu'il y
a à faire. J'ai l'impression qu'il y a plusieurs façons de s'y
prendre, et que le choix dépend grandement de l'énoncé du problème.

Je suppose déjà que la requête est définie sur la base de données
où on va taper le code, pour appeler des tables de la même base de
données, et qu'on veut envoyer le résultat vers un nouveau fichier
Excel.

J'ai eu quelque chose de très proche à faire hier, j'ai parcouru
deux boucles, l'une décrivant les colonnes sur une ligne, inscrite
dans une autre qui décrit les différentes lignes.

ça ressemble à ça, que je tape au fil du clavier sur une machine
où il n'y a pas Excel ni Access :

Commencer par ouvrir, depuis un module, la boîte Outils /
Références, et y cocher Microsoft Excel.

Public Sub Transfert()
Dim xlApp As New Excel.Application
Dim xlWks as Excel.Worksheet
Dim Lig As Integer, Col As Integer
Dim Rs As Recordset

xlApp.Visible = True
xlApp.Workbooks.Add
xlApp.CurrentWorkbook.SaveAs "NomDuClasseur"
Set xlWks = xlApp.Workbooks("NomDuClasseur").Worksheets(1)
Set Rs = CurrentDb().QueryDefs("MaRequête").OpenRecordset()
While Not Rs.EOF
Lig = 1
For Col = 0 to Rs.Fields.Count - 1
xlWks.Cells(Lig, Col + 1) = Rs.Fields(Col)
Rs.MoveNext
Wend
Rs.Close
Set Rs = Nothing

'Après il reste à fermer les objets xlApp et xlWks,
'une fois qu'on n'en a plus besoin :

xlApp.Workbooks("NomDuClasseur").Close
xlApp.Quit
Set xlApp = Nothing
Set xlWks = Nothing

End Sub









--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






Avatar
Francis
Bonsoir Eric,
J'ai appliqué ta proposition, mais le compilateur n'accepte pas la
ligne de code:
xlApp.CurrentWorkbook.SaveAs "NomDuClasseur"
dans laquelle j'ai remplacé NomDuClasseur" par "C:Test"
Ça faisait la même chose avec Next après Rs.Movenext.
Dans les deux cas, j'ai aussi une feuille excel qui s'ouvre, mais rien
ne se passe.
Francis


Bonsoir,

Le Next doit être mis avant Rs.Movenext
Et après ce Next mettre Lig =Lig+1

Bonsoir Michel,
C'est bien ça, il manquait un Next après Rs.MoveNext.
Ceci étant, ça ne marche pas quand même
Francis


Bonjour,

A priori il manque un Next dans le code.


Re bonsoir,

Je ne sais pas où ça cloche, mais je reçois systématiquement le message
d'erreur de compilation: "Wend sans While", alors que le While figure
bien dans ton code.
Alors, où est la faille ???
J'espère que pour toi ça sera limpide,
@+
Francis


Gloops a émis l'idée suivante :
[Transfert des résultats d'une requête vers Excel]

Bonjour,

Attention au mot transaction, ça désigne quelque chose de très précis
pour un programmeur Access :)

Ensuite, il serait bien d'exprimer de manière pratique ce qu'il y a à
faire. J'ai l'impression qu'il y a plusieurs façons de s'y prendre, et
que le choix dépend grandement de l'énoncé du problème.

Je suppose déjà que la requête est définie sur la base de données où on
va taper le code, pour appeler des tables de la même base de données, et
qu'on veut envoyer le résultat vers un nouveau fichier Excel.

J'ai eu quelque chose de très proche à faire hier, j'ai parcouru deux
boucles, l'une décrivant les colonnes sur une ligne, inscrite dans une
autre qui décrit les différentes lignes.

ça ressemble à ça, que je tape au fil du clavier sur une machine où il
n'y a pas Excel ni Access :

Commencer par ouvrir, depuis un module, la boîte Outils / Références, et
y cocher Microsoft Excel.

Public Sub Transfert()
Dim xlApp As New Excel.Application
Dim xlWks as Excel.Worksheet
Dim Lig As Integer, Col As Integer
Dim Rs As Recordset

xlApp.Visible = True
xlApp.Workbooks.Add
xlApp.CurrentWorkbook.SaveAs "NomDuClasseur"
Set xlWks = xlApp.Workbooks("NomDuClasseur").Worksheets(1)
Set Rs = CurrentDb().QueryDefs("MaRequête").OpenRecordset()
While Not Rs.EOF
Lig = 1
For Col = 0 to Rs.Fields.Count - 1
xlWks.Cells(Lig, Col + 1) = Rs.Fields(Col)
Rs.MoveNext
Wend
Rs.Close
Set Rs = Nothing

'Après il reste à fermer les objets xlApp et xlWks,
'une fois qu'on n'en a plus besoin :

xlApp.Workbooks("NomDuClasseur").Close
xlApp.Quit
Set xlApp = Nothing
Set xlWks = Nothing

End Sub







--
Francis

LOI DE ROGER
C'est seulement après que l'hôtesse a servi le café, que l'avion
traverse une zone de turbulences.
EXPLICATION DE TONTON BERNARD
Le café est la cause principale de turbulences en altitude.





1 2 3