OVH Cloud OVH Cloud

Créer une table temporaire

8 réponses
Avatar
youssef.berkane
Bonjour à tous,

Je travaille en vba Excel mais pour autant, on m'a conseillé de poser ma
question sur le groupe Access.
J'aimerais créer une table temporaire en sql via le code vba.
quelle est la synthaxe.

Merci d'avance.

8 réponses

Avatar
Raymond [mvp]
Bonjour.

on va essayer de ne pas te balader de forum en forum, mais pourquoi veux-tu
créer une table temporaire sous access alors que tu travailles sous excel ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"youssef.berkane" a écrit dans le
message de news:
Bonjour à tous,

Je travaille en vba Excel mais pour autant, on m'a conseillé de poser ma
question sur le groupe Access.
J'aimerais créer une table temporaire en sql via le code vba.
quelle est la synthaxe.

Merci d'avance.


Avatar
youssef.berkane
Bon, je te mets dans le contexte pour ne pas t'influencer dans le choix de la
méthode.
J'ai élaboré un fichier Excel qui importe un tableau sur une feuille appelée
"Population" et qui extrait de ce tableau X lignes ( X pouvant aller jusqu'à
2000 ) pour les réunir dans un nouveau tableau sur une feuille appelée
"Echantillon". En résumé, c'est un outil d'échantillonnage. Mais j'ai vite
compris à mes dépends que la feuille Excel ne pouvait pas contenir plus de
65536 lignes. Or Je travaille sur des tableaux dont le nombre de lignes peut
excéder 65536 J'ai donc décidé de passer par Access.
J'ai une base de données Access dans laquelle existe une table nommée
"Population". Ses enregistrements sont numérotés automatiquement dans le
champ "Numéro".
Je souhaite importer sur excel X enregistrements, X pouvant aller jusqu'à
2000, et ce de manière aléatoire.

Quel est la meilleure solution?

Merci.
Avatar
Raymond [mvp]
si tu tiens à l'aléatoire, il est donc préférable de générer un nombre
aléatoire entre 1 et le nombre maximum d'enregistrement de la table, par vba
avec Rnd , et d'additionner dans une table temporaire par requête ou vba
l'enregistrement qui porte ce numéro. selon que tu connais mieux le sql ou
le vba tu peux choisir l'un ou l'autre. mais faudra faire les deux car je ne
suis pas certain du plus performant sur 2000 enregistrements à sélectionner
sur , supposons 500.000.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"youssef.berkane" a écrit dans le
message de news:
Bon, je te mets dans le contexte pour ne pas t'influencer dans le choix de
la
méthode.
J'ai élaboré un fichier Excel qui importe un tableau sur une feuille
appelée
"Population" et qui extrait de ce tableau X lignes ( X pouvant aller
jusqu'à
2000 ) pour les réunir dans un nouveau tableau sur une feuille appelée
"Echantillon". En résumé, c'est un outil d'échantillonnage. Mais j'ai vite
compris à mes dépends que la feuille Excel ne pouvait pas contenir plus de
65536 lignes. Or Je travaille sur des tableaux dont le nombre de lignes
peut
excéder 65536 J'ai donc décidé de passer par Access.
J'ai une base de données Access dans laquelle existe une table nommée
"Population". Ses enregistrements sont numérotés automatiquement dans le
champ "Numéro".
Je souhaite importer sur excel X enregistrements, X pouvant aller jusqu'à
2000, et ce de manière aléatoire.

Quel est la meilleure solution?

Merci.



Avatar
youssef.berkane
Merci pour ton aide

Ta démarche est intéressante mais comment s'y prendre?
Comment créer la table temporaire?
Comment la remplir?
Avatar
3stone
Salut,

"Raymond [mvp]"
| si tu tiens à l'aléatoire, il est donc préférable de générer un nombre
| aléatoire entre 1 et le nombre maximum d'enregistrement de la table, par vba
| avec Rnd , et d'additionner dans une table temporaire par requête ou vba
| l'enregistrement qui porte ce numéro. selon que tu connais mieux le sql ou
| le vba tu peux choisir l'un ou l'autre. mais faudra faire les deux car je ne
| suis pas certain du plus performant sur 2000 enregistrements à sélectionner
| sur , supposons 500.000.


Pour ce qui est de la sélection alléatoire, il peu utiliser ceci:
http://www.mvps.org/accessfr/queries/qry0011.htm



--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Raymond [mvp]
tu peux procéder comme ceci:

Private Sub Commande0_Click()
Randomize
Nombre 10
End Sub

Public Function Nombre(Optional occurs As Integer = 1) As String
DoCmd.SetWarnings False
On Error Resume Next
Dim I As Long
If occurs = 0 Then occurs = 1
For I = 1 To occurs
Nombre = Int(((CurrentDb.TableDefs("table21").RecordCount - 1) *
Rnd) + 1)
DoCmd.RunSQL "INSERT INTO table11 SELECT table21.* FROM table21
WHERE table21.Numéro=" & Nombre & ";"
Next I
DoCmd.SetWarnings True
End Function

je n'ai testé qu'un seul passage sur 20 enregistrements, ce qui veut dire
qu'il faut affiner le code.
Nombre 10 est le nombre d'enregistrement à ajouter dans la table remporaire.
je n'ai pas testé le random à 100%
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"youssef.berkane" a écrit dans le
message de news:
Merci pour ton aide

Ta démarche est intéressante mais comment s'y prendre?
Comment créer la table temporaire?
Comment la remplir?




Avatar
Raymond [mvp]
Bonjour Pierre.

les cheveux ne poussent pas trop en dedans ce matin ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"3stone" a écrit dans le message de news:

Avatar
Philippe T [MS]
Bonjour,

Comme quoi ma réponse dans microsoft.public.fr.officexp était la bonne !!!
Je te l'avais dit Youssef qu'il y avait des cracks dans ce NewsGroup !!! :-)

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"youssef.berkane" wrote in
message news:
Merci pour ton aide

Ta démarche est intéressante mais comment s'y prendre?
Comment créer la table temporaire?
Comment la remplir?