Access-Excel-VB [Résolu]

Signaler
Messages postés
5
Date d'inscription
jeudi 7 octobre 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
Messages postés
1
Date d'inscription
lundi 16 octobre 2006
Statut
Membre
Dernière intervention
16 octobre 2006
-
Comment exporter une table Access dans Excel par l'intermédiaire de Visual Basic ?

12 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Pas de problème, et en plus, je suis brave, je t'ai fait un bout de code :



Dim Rs As Recordset, sql As String, i As Integer
Dim Item (1 To X) As String 'remplace X par le nombre d'enregistrement
Dim Nb As Integer

NomBase = App.Path & "\nom du fichier" 'remplace nom fichier par le nom du fichier Access
Nb = 1

Set db = DBEngine.Workspaces(0).OpenDatabase(NomBase)

sql = "SELECT NomChamps FROM TableX" 'remplace NomChamps et TableX

Set Rs = db.OpenRecordset(sql)
Rs.MoveFirst

Do While Rs.EOF = False
Item (Nb) = Rs!NomChamps 'remplace NomChamps
Nb = Nb + 1
Rs.MoveNext
Loop

Set Rs = Nothing
db.Close


Dim objExcel As Object, objWorkBook As Object, objFeuille As Object

Set objExcel = CreateObject("excel.application")
Set objWorkBook = objExcel.WorkBooks.Open ("C:/Nom du chemin/nomfichier.xls")
Set objFeuille = objWorkBook.WorkSheets("Nom de la feuille") 'met le bon nom de feuille
objExcel.Application.Visible = True

For i 1 To X 'X le nombre que tu as mis dans "Dim Item (1 To X)"
objFeuille.Cells(i, 1).Value = Item (i)
Next i

Set objExcel = Nothing
Set objWorkBooks = Nothing


Voilà, je pense que ça te fait un bon début, essaie de l'adapter suivant tes besoins (quelques termes à remplacer, certainement)
Pense à cocher, dans les références, "Microsoft DAO 3.6 (ou 3.51)"

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
En cherchant par le moteur de recherche !

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Et en lisant le règlement

www.vbfrance.com/reglement.aspx


Merci
Messages postés
5
Date d'inscription
jeudi 7 octobre 2004
Statut
Membre
Dernière intervention
8 juin 2006

Désolé je ne comprend pas la réponse
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Généralement, on pose une question dans le forum en dernier recours, ou lorsque l'on a un code, et qu'une syntaxe plante quelque part.

Te concernant, tout en haut de cette page, sous les pubs, tu as
"Rechercher sur le site" avec une case.
Si tu tapes dedans "lire access" tu auras des codes pour lire des données dans des tables Access.
Puis, tape "écrire excel" et tu sauras comment faire pour replacer ces données dans un tableur Excel.

Concernant le fait que je te dise de lire le réglement, au cas où le lien ne fonctionne pas avec ton navigateur internet :

Règles pour poster un nouveau message sur le forum :
On fait une recherche sur le site avant de poster une question.
On est poli : « bonjour » et « merci » sont des mots appréciés.
On utilise un langage correct : pas de langage SMS, et on fait attention à l'orthographe.
On demande une explication sur un sujet précis, on ne l'exige pas.
On ne pose qu'une question par topic.
On pose une question aussi précise que possible.
On précise les détails du problème : contexte, langage, message d'erreur ...
On pense à donner le bout de code qui pose problème, et préciser le langage utilisé.
On ne demande pas un programme tout fait, on ne demande que de l'aide sur un problème concret.
On pense à laisser un petit message lorsqu'un problème est résolu et à cliquer sur le bouton « réponse acceptée ».

Merci de ton attention et bon courage quand même pour ton prog.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
Messages postés
5
Date d'inscription
jeudi 7 octobre 2004
Statut
Membre
Dernière intervention
8 juin 2006

Bonsoir Mortalino


C'est bien de temps en temps de faire des rappels à l'ordre. Quant à moi, je suis sincèrement navré de ma demande quelque peu cavalière. J'accepte vos remarques et jen prend acte.


Pour revenir à ma demande, j'ai essayé un code qui est publié sur ce même site : Source N° 1097. La difficulté est que le tableau excel ne reçoit que le premier enregistrement de la table, et pas les autres. Je n'ai pas beaucoup d'expérience en la matière, j'apprend tout seul avec des livres et c'est long et fastidieux. De plus on ne trouve pas tout.


Encore toutes mes excuses


 
Messages postés
5
Date d'inscription
jeudi 7 octobre 2004
Statut
Membre
Dernière intervention
8 juin 2006

Un grand merci pour votre gentillesse. Je vais essayer ce code et l'adapter si besoin.
En fait j'ai conçu une application avec VB6, et j'utilise une base de données Access pour stocker des informations (Je fais ça pour une association d'insertion de jeunes en détresse). On voudrait pouvoir utiliser les données que nous avons stockés dans notre application en les exportant vers Excel (que l'un d'entre nous connait bien). Donc le but est de lancer à partir de notre application l'exportation de ces données vers excel. Tous les codes que je trouve ne marchent pas car je pense qu'ils sont écrit pour Access (pour un transfert Access>Excel). Nous c'est différent nous voulons le faire à l'aide de notre application qui tourne avec VB6.
Encore merci et bon vent
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
De rien et bon courage pour l'association, c'est beaucoup de boulot.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
Messages postés
5
Date d'inscription
jeudi 7 octobre 2004
Statut
Membre
Dernière intervention
8 juin 2006

Bonjour Motalino

J'ai essayé le code il fonctionne, mais la table Excel n'affiche qu'une seule colonne.
En effet, je n'arrive pas à entrer dans le code le nom des champs ici :
Do While Rs.EOF = False
    Item (Nb) = Rs!NomChamps  'remplace NomChamps
Il n'accepte qu'un seul champ. J'ai essayé plusieurs combinaisons mais aucune ne marche.
Au total, ma table contient 15 champs je suis donc loin du compte !
Je suis désolé de vous embêter, mais si vous pouviez encore m'aider
Merci par avance
Messages postés
1
Date d'inscription
vendredi 23 juin 2006
Statut
Membre
Dernière intervention
23 juin 2006

Bonjour,

Ne serait'il pas plus simple d'importer directement votre table depuis VB-Excel ?

Sous VB, il faut pendser à activer la référence : Microsoft DAOxx Object Library

Ci-dessous une proc Excel qui s'appuie sur une requète SQL simple :

Sub Requete()

Dim bdd As Database, req As QueryDef, enr As Recordset

Set bdd = Workspaces(0).OpenDatabase("C:\Exemples2.mdb")

Sql = "SELECT * FROM TBL;"

Set enr = bdd.OpenRecordset(Sql)

numberOfRows = Sheets("Feuil1").Cells(1, 1).CopyFromRecordset(enr)

enr.Close
bdd.Close

End Sub
Messages postés
1
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
3 août 2006

j'aimerais savoir comment lire une feuille  excel par vb et l'enregestrer dans access
Messages postés
1
Date d'inscription
lundi 16 octobre 2006
Statut
Membre
Dernière intervention
16 octobre 2006

Bonjour KanVan,
         j'ai essayé ton code mais j'obtiens un message d'erreur lorsque je l'exécute. Ça me dit type défini par l'utilisateur non-défini. Voici ton code modifié:

Dim bdd As Database, req As QueryDef, enr As Recordset


Set bdd = Workspaces(0).OpenDatabase("c:\RIT 2006\bd1.mdb")


sql = "SELECT * FROM IT_adhesion;"


Set enr = bdd.OpenRecordset(sql)


numberOfRows = Sheets("Feuil1").Cells(1, 1).CopyFromRecordset(enr)


enr.Close
bdd.Close


End Sub

Merci,

JS