Access-Excel-VB

Résolu
cs_philao Messages postés 5 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 8 juin 2006 - 8 juin 2006 à 00:23
dirtyjs Messages postés 1 Date d'inscription lundi 16 octobre 2006 Statut Membre Dernière intervention 16 octobre 2006 - 16 oct. 2006 à 17:24
Comment exporter une table Access dans Excel par l'intermédiaire de Visual Basic ?

12 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
8 juin 2006 à 01:41
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 !
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
8 juin 2006 à 00:41
En cherchant par le moteur de recherche !

@++

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

www.vbfrance.com/reglement.aspx


Merci
0
cs_philao Messages postés 5 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 8 juin 2006
8 juin 2006 à 00:54
Désolé je ne comprend pas la réponse
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
8 juin 2006 à 01:01
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 !
0
cs_philao Messages postés 5 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 8 juin 2006
8 juin 2006 à 01:20
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


 
0
cs_philao Messages postés 5 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 8 juin 2006
8 juin 2006 à 02:09
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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
8 juin 2006 à 02:10
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 !
0
cs_philao Messages postés 5 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 8 juin 2006
8 juin 2006 à 19:59
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
0
KanVanPoo Messages postés 1 Date d'inscription vendredi 23 juin 2006 Statut Membre Dernière intervention 23 juin 2006
23 juin 2006 à 10:33
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
0
ettoini Messages postés 1 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 3 août 2006
18 juil. 2006 à 14:38
j'aimerais savoir comment lire une feuille  excel par vb et l'enregestrer dans access
0
dirtyjs Messages postés 1 Date d'inscription lundi 16 octobre 2006 Statut Membre Dernière intervention 16 octobre 2006
16 oct. 2006 à 17:24
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
0
Rejoignez-nous