OVH Cloud OVH Cloud

Transférer un recordset dans un tableau en VBA ?

9 réponses
Avatar
Thierry Euzenot
Bonjour,

Suivant le principe que sur Excel, moins on fait appel à l'affichage, plus
le code est exécuté rapidement, je cherches la façon la plus rapide de
transférer les infos retournées par un recordset dans un tableau.

Existe-t-il une astuce du type TablRec = Recordset ? Dans le même état
d'esprit que lorsqu'on affecte une plage de cellule à un tableau TablCell =
Feuil1.range("A1:Z500").

Nota : Les infos renvoyées par le recordset représenteraient un tableau de
35 colonnes (champs de la base) sur 100 lignes (nombre d'enregistrements de
la base).

Merci d'avance pour vos réponses :o)

Thierry

9 réponses

Avatar
MichDenis
Bonjour Thierry,

En supposant que la première cellule de ta plage de destination est A1
Et que ton RecordSet s'appelle Rst

Range("A1").CopyFromRecordset Rst


Salutations!



"Thierry Euzenot" <te.st2e_arobase_free.fr> a écrit dans le message de news: %
Bonjour,

Suivant le principe que sur Excel, moins on fait appel à l'affichage, plus
le code est exécuté rapidement, je cherches la façon la plus rapide de
transférer les infos retournées par un recordset dans un tableau.

Existe-t-il une astuce du type TablRec = Recordset ? Dans le même état
d'esprit que lorsqu'on affecte une plage de cellule à un tableau TablCell Feuil1.range("A1:Z500").

Nota : Les infos renvoyées par le recordset représenteraient un tableau de
35 colonnes (champs de la base) sur 100 lignes (nombre d'enregistrements de
la base).

Merci d'avance pour vos réponses :o)

Thierry
Avatar
Yves Chabirand
Tout est là, http://access.developpez.com/faq/?page=Office
...a moins que j'ai mal compris ta question

Yves

"Thierry Euzenot" <te.st2e_arobase_free.fr> a écrit dans le message news:
#
Bonjour,

Suivant le principe que sur Excel, moins on fait appel à l'affichage, plus
le code est exécuté rapidement, je cherches la façon la plus rapide de
transférer les infos retournées par un recordset dans un tableau.

Existe-t-il une astuce du type TablRec = Recordset ? Dans le même état
d'esprit que lorsqu'on affecte une plage de cellule à un tableau TablCell
Feuil1.range("A1:Z500").

Nota : Les infos renvoyées par le recordset représenteraient un tableau de
35 colonnes (champs de la base) sur 100 lignes (nombre d'enregistrements
de

la base).

Merci d'avance pour vos réponses :o)

Thierry




Avatar
Thierry Euzenot
Merci pour ta réponse, mais ce que je recherche c'est copier le recordset
dans un tableau et non dans une plage de cellule.

Question subsidiaire : Je peux utiliser le recordset comme un tableau...
dans ce cas, comment puis-je accéder à l'enregistrement numéro "x" du champ
"y" sans passer par la méthode move ?

Sinon pour afficher un recordset, j'utilise la méthode que tu as indiqué :o)


"MichDenis" a écrit dans le message de
news:
Bonjour Thierry,

En supposant que la première cellule de ta plage de destination est A1
Et que ton RecordSet s'appelle Rst

Range("A1").CopyFromRecordset Rst


Salutations!



"Thierry Euzenot" <te.st2e_arobase_free.fr> a écrit dans le message de
news: %

Bonjour,

Suivant le principe que sur Excel, moins on fait appel à l'affichage, plus
le code est exécuté rapidement, je cherches la façon la plus rapide de
transférer les infos retournées par un recordset dans un tableau.

Existe-t-il une astuce du type TablRec = Recordset ? Dans le même état
d'esprit que lorsqu'on affecte une plage de cellule à un tableau TablCell
Feuil1.range("A1:Z500").

Nota : Les infos renvoyées par le recordset représenteraient un tableau de
35 colonnes (champs de la base) sur 100 lignes (nombre d'enregistrements
de

la base).

Merci d'avance pour vos réponses :o)

Thierry





Avatar
anonymousA
re,

un recordset, c'est un jeu d'enregistrements. rien n'oblige à ce que ce
dernier provienne d'ACCESS. Celui-ci peut même venir d'un fichier Excel fermé.

A+


Tout est là, http://access.developpez.com/faq/?page=Office
....a moins que j'ai mal compris ta question

Yves

"Thierry Euzenot" <te.st2e_arobase_free.fr> a écrit dans le message news:
#
Bonjour,

Suivant le principe que sur Excel, moins on fait appel à l'affichage, plus
le code est exécuté rapidement, je cherches la façon la plus rapide de
transférer les infos retournées par un recordset dans un tableau.

Existe-t-il une astuce du type TablRec = Recordset ? Dans le même état
d'esprit que lorsqu'on affecte une plage de cellule à un tableau TablCell
Feuil1.range("A1:Z500").


Nota : Les infos renvoyées par le recordset représenteraient un tableau de
35 colonnes (champs de la base) sur 100 lignes (nombre d'enregistrements
de

la base).

Merci d'avance pour vos réponses :o)

Thierry










Avatar
Thierry Euzenot
"Yves Chabirand" <yves.chabirand@(supprimer ceci)francetelecom.com> a écrit
dans le message de news:d0n1p9$
Tout est là, http://access.developpez.com/faq/?page=Office
...a moins que j'ai mal compris ta question

Yves


Je ne vois pas...

Ce que je veux faire c'est remplir un tableau avec les données d'un
recordset.

J'effectue une requête sql qui me retourne un recordset de 37 champs et
environ 100 enregistrements.

Il y a la possibilité de remplir le tableau à l'aide de deux boucles
imbriquées, mais ça ne me semble pas optimum du tout.

For i = 0 To Rst.Count - 1
For j = 0 to Rst.Fields.Count - 1
TablRst = Rst.field(j)
Next j
Rst.movenext
Next i
Mais c'est pas le plus rapide...

Je cherche donc une façon plus appropriée.

Nota : je ne veux pas afficher les données, je veux pouvoir les utiliser
pour d'autres traitements.

Avatar
Pierre CFI [mvp]
bonjour
regarde avec CopyFromRecordset

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Thierry Euzenot" <te.st2e_arobase_free.fr> a écrit dans le message de news:%
"Yves Chabirand" <yves.chabirand@(supprimer ceci)francetelecom.com> a écrit
dans le message de news:d0n1p9$
Tout est là, http://access.developpez.com/faq/?page=Office
...a moins que j'ai mal compris ta question

Yves


Je ne vois pas...

Ce que je veux faire c'est remplir un tableau avec les données d'un
recordset.

J'effectue une requête sql qui me retourne un recordset de 37 champs et
environ 100 enregistrements.

Il y a la possibilité de remplir le tableau à l'aide de deux boucles
imbriquées, mais ça ne me semble pas optimum du tout.

For i = 0 To Rst.Count - 1
For j = 0 to Rst.Fields.Count - 1
TablRst = Rst.field(j)
Next j
Rst.movenext
Next i
Mais c'est pas le plus rapide...

Je cherche donc une façon plus appropriée.

Nota : je ne veux pas afficher les données, je veux pouvoir les utiliser
pour d'autres traitements.





Avatar
MichDenis
Bonjour Thierry,

Dim Tblo as variant

Tblo = Rst.getrows

Et pour limiter le nombre de lignes copieées dans le tableau

Copie seulement les 25 premiers enregistrements
tblo = rst.getrows(25)


Salutations!



"Thierry Euzenot" <te.st2e_arobase_free.fr> a écrit dans le message de news:
Merci pour ta réponse, mais ce que je recherche c'est copier le recordset
dans un tableau et non dans une plage de cellule.

Question subsidiaire : Je peux utiliser le recordset comme un tableau...
dans ce cas, comment puis-je accéder à l'enregistrement numéro "x" du champ
"y" sans passer par la méthode move ?

Sinon pour afficher un recordset, j'utilise la méthode que tu as indiqué :o)


"MichDenis" a écrit dans le message de
news:
Bonjour Thierry,

En supposant que la première cellule de ta plage de destination est A1
Et que ton RecordSet s'appelle Rst

Range("A1").CopyFromRecordset Rst


Salutations!



"Thierry Euzenot" <te.st2e_arobase_free.fr> a écrit dans le message de
news: %

Bonjour,

Suivant le principe que sur Excel, moins on fait appel à l'affichage, plus
le code est exécuté rapidement, je cherches la façon la plus rapide de
transférer les infos retournées par un recordset dans un tableau.

Existe-t-il une astuce du type TablRec = Recordset ? Dans le même état
d'esprit que lorsqu'on affecte une plage de cellule à un tableau TablCell
Feuil1.range("A1:Z500").

Nota : Les infos renvoyées par le recordset représenteraient un tableau de
35 colonnes (champs de la base) sur 100 lignes (nombre d'enregistrements
de

la base).

Merci d'avance pour vos réponses :o)

Thierry





Avatar
Thierry Euzenot
Merci beaucoup !!!!!

"MichDenis" a écrit dans le message de
news:
Bonjour Thierry,

Dim Tblo as variant

Tblo = Rst.getrows

Et pour limiter le nombre de lignes copieées dans le tableau

Copie seulement les 25 premiers enregistrements
tblo = rst.getrows(25)


Salutations!



"Thierry Euzenot" <te.st2e_arobase_free.fr> a écrit dans le message de
news:

Merci pour ta réponse, mais ce que je recherche c'est copier le recordset
dans un tableau et non dans une plage de cellule.

Question subsidiaire : Je peux utiliser le recordset comme un tableau...
dans ce cas, comment puis-je accéder à l'enregistrement numéro "x" du
champ

"y" sans passer par la méthode move ?

Sinon pour afficher un recordset, j'utilise la méthode que tu as indiqué
:o)



"MichDenis" a écrit dans le message de
news:
Bonjour Thierry,

En supposant que la première cellule de ta plage de destination est A1
Et que ton RecordSet s'appelle Rst

Range("A1").CopyFromRecordset Rst


Salutations!



"Thierry Euzenot" <te.st2e_arobase_free.fr> a écrit dans le message de
news: %

Bonjour,

Suivant le principe que sur Excel, moins on fait appel à l'affichage,
plus


le code est exécuté rapidement, je cherches la façon la plus rapide de
transférer les infos retournées par un recordset dans un tableau.

Existe-t-il une astuce du type TablRec = Recordset ? Dans le même état
d'esprit que lorsqu'on affecte une plage de cellule à un tableau
TablCell


Feuil1.range("A1:Z500").


Nota : Les infos renvoyées par le recordset représenteraient un tableau
de


35 colonnes (champs de la base) sur 100 lignes (nombre d'enregistrements
de

la base).

Merci d'avance pour vos réponses :o)

Thierry











Avatar
Thierry Euzenot
Merci, MichDenis m'a fourni la réponse :o)

"Pierre CFI [mvp]" a écrit dans le message de
news:
bonjour
regarde avec CopyFromRecordset

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Thierry Euzenot" <te.st2e_arobase_free.fr> a écrit dans le message de
news:%

"Yves Chabirand" <yves.chabirand@(supprimer ceci)francetelecom.com> a
écrit


dans le message de news:d0n1p9$
Tout est là, http://access.developpez.com/faq/?page=Office
...a moins que j'ai mal compris ta question

Yves


Je ne vois pas...

Ce que je veux faire c'est remplir un tableau avec les données d'un
recordset.

J'effectue une requête sql qui me retourne un recordset de 37 champs et
environ 100 enregistrements.

Il y a la possibilité de remplir le tableau à l'aide de deux boucles
imbriquées, mais ça ne me semble pas optimum du tout.

For i = 0 To Rst.Count - 1
For j = 0 to Rst.Fields.Count - 1
TablRst = Rst.field(j)
Next j
Rst.movenext
Next i
Mais c'est pas le plus rapide...

Je cherche donc une façon plus appropriée.

Nota : je ne veux pas afficher les données, je veux pouvoir les utiliser
pour d'autres traitements.