Recuperer des donnée

  • Initiateur de la discussion Emilie
  • Date de début
E

Emilie

Guest
Bonjour Forum,

je dois recuperer des donnée d'une feuille excel dans un emplacement.
Pour cela j'a réalisé ce programe en VB en cosidérant que la feuille source est ma base de donnée.mais j'arrive pas à faire la connection.
si quelqu'un peut m'aider je lui serai reconnaissant.
merci d'avance

Private Sub CmdParcourirFichierSource_Click()
Dim BaseDonnée As Database
Dim Fiches As Recordset
'Lance la session Base de données Microsoft Jet
Set session = DBEngine.workspaces(0)
Set BaseDonnée = session.openDatabase('C:\\Nouveau Dossier\\BD.xl')
Set Fiches = BaseDonnée.openRecordset('BD', dbopenDynaset)
End Sub
 

michel_m

XLDnaute Accro
Bonjour Emilie et le forum,

Il faut préciser que tu travailles avec Excel dans opendatabase:

....opendatabase('tonfichier.xls',false,false,'excel 8.0;')

les 2 false sont facultatifs et sont par défaut (mode partagé et accès en lecture-écriture)
tu peux donc écrire:
opendatabase('tonfichier.xls',,,'excel 8.0;')



Rappel 'au cas où': la référence microsoft DAO 3;X object Library doit être cochée dans outils références du VBE

Bonne soirée avec tonton DAO

Michel
 
E

EMILIE

Guest
Bonjour Michel et le forum,

j'ai essayer ce que tu m'as dit mais à chaque fois quand j'execute il ya le message Erreur de compilation 'type défini par l'utilisateur non défini' au niveau
(Dim BaseDonnée As Database)

merci kaméme pour ton aide
 
M

Michel_m

Guest
Re

J'ai fait un copier coller de ton code en l'adaptant à mon arborescence

Il fautécrire les 2 false (excuse-moi) sinon il y a un bloquage sur la ligne opendatabase

L'erreur que tu me signales correspond à la bibliothèque DAO non cochée dans outil-r'férences du VBE

Ce code fonctionne:

Private Sub CmdParcourirFichierSource_Click()
Dim BaseDonnée As Database
Dim Fiches As Recordset
Dim chemin As String
'Lance la session Base de données Microsoft Jet
chemin = ActiveWorkbook.Path
Set session = DBEngine.Workspaces(0)
Set BaseDonnée = session.OpenDatabase(chemin & '\\actualisation_liste.xls', False, False, 'excel 8.0;')
Set Fiches = BaseDonnée.OpenRecordset('data', dbOpenDynaset)

'Set Fiches = Nothing
'Set BaseDonnée = Nothing
End Sub


Donc, hormis les 2 false, je ne vois pas...

Michel
 
M

michel_m

Guest
re re

Le nom du fichier dans opendatabase doit être le nom complet du fichier.

Comme le fichier avec lequel j'ai testé ton code était dans le même dossier que 'actualisation_liste.xls'
l'instruction activeworkbook.path donne lel'emplacement dans l'arborescence.


chemin =C:\\mes documents ect...
et dans opendatabase on a le nom complet

cela évite de saisir un texte long...

Si le fichier à ouvrir est dans un autre dossier il faut alors tout écrire

quand à set fiches=nothing certains disent que c'est inutile car la variable se vide à la fin de la macro, d'autres disent que non, comme ca me dépasse techniquement je l'inscris (j'enlève l'appostrophe à la compilation.
A+
Michel at work
 
E

Emilie

Guest
ah oui j'ai réglé le probléme de chemin mais qu'and j'exécute le programe il ya erreu au niveau de:
Set Fiches = BaseDonnée.OpenRecordset('lissagedonnées', dbOpenDynaset)

attend je t'envoi mon nouveau code


Private Sub Command1_Click()
Dim BaseDonnée As Database
Dim Fiches As Recordset
Dim chemin As String
'Lance la session Base de données Microsoft Jet
chemin = 'C:\\Nouveau dossier\\données'
Set session = DBEngine.Workspaces(0)
Set BaseDonnée = session.OpenDatabase(chemin & 'données.xls', False, False, 'excel 8.0;')
Set Fiches = BaseDonnée.OpenRecordset('données', dbOpenDynaset)

Set Fiches = Nothing
Set BaseDonnée = Nothing
End Sub

et en plus il va à l'emplacement que j'ai sauvegardé le fichier pour créer un autre fichier de meme nom(donnéesdonnées) que je ne peux ni ouvrir ni supprimer.
merci encore pour ton aide
 

Jam

XLDnaute Accro
Bonjour Emilie, Michel_m,

Ci-joint un bout de code qui effectue la même chose mais avec ADOet non DAO. DAO est (normalement) amené à disparaitre et ADO est plus performant.
Pour que ce code fonctionne il faut vérifier que tu as bien une référence à 'Microsoft ActiveX Data Object 2.x Library' dans ton projet.

Code:
Sub test()
Dim oRec As ADODB.Recordset
Dim lsDSN As String
 
Set oRec = New ADODB.Recordset

lsDSN = 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
        'Data Source=C:\\Nouveau dossierdonnées\\données.xls;' & _
        'Extended Properties=''Excel 8.0;HDR=Yes;IMEX=1'''
oRec.Open Source:='SELECT * FROM [Données]', ActiveConnection:=lsDSN
Worksheets(1).Cells(1, 1).CopyFromRecordset oRec

Set oRec = Nothing
End Sub

Bon après-midi

PS.: Si tu n'as pas la librairie, il suffit de te rendre sur le site de Micro$soft et de télécharger le MDAC (version 2.8).
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 329
Messages
2 087 335
Membres
103 520
dernier inscrit
Azise