Extraire depuis une base de donnée vers un tableur Excel

Alpha41

XLDnaute Junior
Bonjour à tous,

J'avais l'habitude avec Excel 2002 d'extraire depuis un fichier mdb des informations à l'aide de ce type de code :
Code:
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=MS Access Database;DBQ=C:\HPCi_V2\Systemfiles\Riodatabase\SIOLIST.mdb;DefaultDir=C:\HPCi_V2\Systemfiles\Riodatabase;DriverI" _
        ), Array("d=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination _
        :=Range("A1"))
        .CommandText = Array( _
        "SELECT SYSTEM.`N°`, SYSTEM.Name, SYSTEM.Description, SYSTEM.Offset, SYSTEM.IOInput, SYSTEM.Resolution, SYSTEM.Master" & Chr(13) & "" & Chr(10) & "FROM `C:\HPCi_V2\Systemfiles\Riodatabase\SIOLIST`.SYSTEM SYSTEM" & Chr(13) & "" & Chr(10) & "WHERE system.used = 1" & Chr(13) & "" & Chr(10) & "ORDER BY system.IOInput ASC , system.offset ASC")
        .name = "Lancer la requête à partir de MS Access Database"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = True
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        ActiveSheet.Unprotect
        .Refresh BackgroundQuery:=False

J'avais utilisé l'enregistreur de macro !

Maintenant avec Excel 2007 je suis perdu! J'ai trouvé (il me semble ) le moyen d'extraire mais on ne peut pas ajouter de condition( Where ), je suis obligé d'importer la base toute entière!

Merci d'avance,

Nicolas
 

Alpha41

XLDnaute Junior
Re : Extraire depuis une base de donnée vers un tableur Excel

Rebonjour,

Merci à vous 2 pour vos réponses !
Mth c'est exactement ce qu'il me fallait.
Par contre j'ai un autre petit soucis, une fois que la requête est exécutée ( moi je l'appelle à l'ouverture du classeur ) j'ai une erreur qui me dit que je ne peux pas écrire sur la zone d'un tableau dynamique etc.
Alors que dans mon ancienne version ( crée avec Excel 2002 ya pas de soucis!)

Merci d'avance,
 

Pièces jointes

  • Erreur.jpg
    Erreur.jpg
    65.4 KB · Affichages: 207
  • Erreur.jpg
    Erreur.jpg
    65.4 KB · Affichages: 241
  • Erreur.jpg
    Erreur.jpg
    65.4 KB · Affichages: 237
Dernière édition:

mth

XLDnaute Barbatruc
Re : Extraire depuis une base de donnée vers un tableur Excel

re :)

Essaie en déplaçant ton TCD plus loin pour laisser toute la place nécessaire à la requête, voire même place ton TCD dans un autre onglet ?
(Sans voir le fichier je parle un peu dans le vide, mais ça doit être ça)

@ +

mth
 

Alpha41

XLDnaute Junior
Re : Extraire depuis une base de donnée vers un tableur Excel

Re,

L’intérêt est est qu'a chaque ouverture du fichier, la requête interroge la base, écrase les données existantes pour les remplacer en cas de nouvel ajout/modification.
L'ancien code, pourtant quasiment le même ne pose pas de problème.

Y aurait il un moyen de supprimer vraiment toute les données et requetes attachés a des cellules du tableur à l'aide d'un truc genre :
Cells.deepClear ? xD

J'ai déjà fait un cell.clear et ça ne marche pas
 

tototiti2008

XLDnaute Barbatruc
Re : Extraire depuis une base de donnée vers un tableur Excel

Bonjour Alpha41, Bonjour XY, Bonjour mth :)

Tu n'es pas obligé de recréer tes données externes à chaque fois, une fois qu'elles sont créées il existe un véritable lien et il suffit de l'actualiser

un truc comme

Code:
ActiveSheet.ListObjects(1).Refresh
Devrait suffire
 
Dernière édition:

Statistiques des forums

Discussions
312 248
Messages
2 086 596
Membres
103 252
dernier inscrit
Ersar