Recuperer des donnée

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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
 
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
 
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
 
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).
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
665
Réponses
2
Affichages
2 K
Retour