Access couper une table de taille très importante en plusieurs tables

  • Auteur de la discussion Schtroumphette
  • Date de début

Schtroumphette

Nouveau membre
Bonjour!

Je travaille sur une base de données avec une table gigantesque que je compte exporter vers Excel... Le hic? elle est si grosse que je ne peux l'exporter dans son intégralité.
La solution sur laquelle je planche mais n'aboutis pas: Prendre ma table et la couper en plusieurs tables (en gros faire une requête création mais appelée en boucle sous SQL). Le truc c'est que je veux couper ma table selon un critère (plusieurs noms dans la table). Je veux que chaque table nouvellement créée porte le nom dudit critère... Le hic, c'est que je ne sais pas s'il est possible de faire en sorte qu'une requête admette des arguments...

Si vous pouviez m'éclairer un tantinet...?

Merci!
 

zeb

Modérateur
Trop grosse pour Excel ou pour Access ?
Combien de lignes ?
Combien de colonnes ?
 

Schtroumphette

Nouveau membre
Il y a plus de 510 000 enregistrements, et 8 colonnes.
Donc c'est trop gros pour un spreadsheet d'excel!
 

boub popsyteam

Grand Maître
Question (peut etre bete): Y'a pas moyen que tu fasses des tris de tes enregistrement avant export, plutot que tout traiter dans excel ?
 

Schtroumphette

Nouveau membre
C'est ce que je comptais faire: La majorité de mon prog sous Access en cochant des références manquantes pour avoir des bibli d'Excel (désolée si cela fait charabia, mais je ne sais pas utiliser le langage info proprement).
Les tris sont déjà fait, mais j'ai besoin de sectionner ma grosse table en plusieurs tables. Il est vrai que je peux faire un recordset et lire les enregistrements un à un, mais ça prend énormément de temps...!
 

zeb

Modérateur
Contrairement à mon habitude, je te propose une solution complète pour résoudre ton problème.
Vous devez être connecté pour voir les images.

Code:
Option Explicit
Sub CadeauDuSchtroumphFarceur()
  Dim db As DAO.Database
  Dim rs As DAO.Recordset
  Dim row, col As Integer
  Dim ws As Worksheet

  Set db = OpenDatabase("chemin\fichier_access.mdb")
  Set rs = db.OpenRecordset("SELECT * FROM grosstable")

  row = 0
  Do While Not rs.EOF
    If row = 0 Then
      Set ws = Sheets.Add(, Sheets(Sheets.Count))
    End If
    For col = 0 To 1
      ws.Cells(row + 1, col + 1).Value = rs.Fields(col).Value
    Next
    rs.MoveNext
    row = row + 1
    If row >= 1000 Then row = 0
  Loop
  Set ws = Nothing
  rs.Close
  db.Close
  Set rs = Nothing
  Set db = Nothing
End Sub

En contre partie, je te demande :
- de copier tout ça dans un module VBA dans Excel.
- de cocher Microsoft DAO X.Y Object Library dans le menu Outils/Références de l'éditeur VBA dans Excel.
- de tenter de comprendre tout le code en t'aidant de l'aide de VBA.
- de l'adapter à ton besoin particulier
- de poster ici, soit les questions qui resteraient en suspend, soit un ptit mot pour nous dire que tu as tout compris ;) et que maintenant, toi aussi, tu aideras les autres en VBA sur PPC.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 845
Membres
1 586 372
Dernier membre
Meeithot
Partager cette page
Haut