Ouvrir un classeur Excel en VB et traiter les données pour remplir une table Acc

LowmanX Messages postés 5 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 5 juillet 2004 - 11 mai 2004 à 12:55
arsene_lupin Messages postés 2 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 21 avril 2005 - 26 mai 2004 à 16:46
Salut

Je soihaite ouvrir un classeur Excel en VB pour traiter les données qu'il contient, feuille par feuille, , puis remplir une table Access.

Comment faire. :)

6 réponses

HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
11 mai 2004 à 13:17
Bonjour,

pour ouvrir un classeur Excel et le traiter :
Dim appExcel As Excel.Application
Dim cheminClasseur, nomfeuille As String
Dim feuille As Excel.Worksheet
Set appExcel = New Excel.Application
appExcel.Visible = True

cheminClasseur = "C:\classeur.xls"

appExcel.WorkBooks.Open cheminClasseur

nomfeuille = "Feuil1"

Set feuille = appExcel.WorkBooks(1).WorkSheets(feuille)
feuille.Activate


Dans le même temps, connexion à la base Access :
Dim cnnADO As New ADODB.Connection
Dim cmdADO As New ADODB.Command
Dim rsADO As New ADODB.Recordset
'Fournisseur BDD Access : Microsoft jet OLEDB
cnnADO.Provider = "Microsoft.jet.OLEDB.4.0"
'Chemin BDD
cnnADO.ConnectionString = App.Path & "\test.mdb"
'Ouverture
cnnADO.Open
' Pour relier la connexion ouverte à la commande
cmdADO.ActiveConnection = cnnADO


Ensuite par exemple :
' ICI TA REQUETE SQL
cmdADO.CommandText = "SELECT * FROM table"

rsADO.CursorLocation = adUseClient
rsADO.CursorType = adOpenDynamic
rsADO.Open cmdADO

'Apres tu joues avec ton recordset :
rsADO.MoveFirst
'tant que tu n'es pas au bout de ton recordset :
While Not rsADO.EOF
rsADO.Fields(1).Value = feuille.Range("A1").Value
rsADO.Update
Wend


Par contre, je n'ai pas pu tester car je n'ai pas Access au boulot, donc j'ai mis d'apres mes souvenirs.
Au moins ça te donne les grandes lignes de comment faire.

N'oublies pas de cocher les librairies nécessaires : ADO et Excel.

J'espère t'avoir aidé un peu.

PS : Pour voir comment tu peux traiter les données de ta feuille Excel (si tu ne sais pas comment faire), tu peux toujours aller voir dans ma source : ICI
Il y a dedans des exemples de ce que tu peux faire avec les cellules et tout.

Fanny
0
Nightmoo Messages postés 22 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 27 juillet 2004
11 mai 2004 à 13:25
Cette exemple m'a l'air plus simple et plus concret que celui que tu m'avait donner Fanny.

Je te remercie de prendre du temps à nous répondre.

Nightmoo.
0
LowmanX Messages postés 5 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 5 juillet 2004
11 mai 2004 à 13:51
Merci.

Je vais essayer ça.

J'insère le code dans Form Load, c'est ça?
:)
0
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
11 mai 2004 à 14:14
Tu me diras merci si ça marche seulement NightMoo :)
Vu que je n'ai rien pour tester sur place, j'espère n'avoir rien oublié. Mais au moins, ça donne un fil directeur.

Sinon LowmanX, tu insères ce code à l'endroit où tu veux exécuter tes traitements.
Au niveau d'un bouton de commande par exemple.

Si tu mets tout ça au niveau du Form Load, le code s'exécutera directement sans que tu n'ai interagit avec ton programme (enfin, pas explicitement).

Donc il vaut mieux que tu mettes ce bout de code dans un bouton sur lequel tu cliqueras au moment où tu veux remplir ta base Access ...

Euh ... je ne sais pas si j'ai été assez claire là ... :blush) ...

Fanny
0

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

Posez votre question
LowmanX Messages postés 5 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 5 juillet 2004
12 mai 2004 à 11:12
Bon, j'ai essayé ça :

Private Sub CmdImporter_Click()

Dim appExcel As Excel.Application
Dim cheminClasseur, nomfeuille As String
Dim feuille As Excel.Worksheet

Set appExcel = New Excel.Application
appExcel.Visible = True
cheminClasseur = "C:\FichierExcel.xls"
appExcel.WorkBooks.Open cheminClasseur
nomfeuille = "Feuil1"
Set feuille = appExcel.WorkBooks(1).WorkSheets(feuille)
feuille.Activate

End Sub

Private Sub CmdQuitter_Click()
End
End Sub

mais ça bloque au niveau de Dim appExcel As Excel.Application : type defini par utilisateur non défini!!!

ça sert à quoi cette ligne?

Merci
0
arsene_lupin Messages postés 2 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 21 avril 2005
26 mai 2004 à 16:46
Il faut que tu fasses Project\References

et que tu ajoutes la référence Microsoft Excel
0
Rejoignez-nous