Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > VBA Access

VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.

Réponse
 
Outils de la discussion
Vieux 08/10/2008, 15h21   #1 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: octobre 2008
Localisation: Afrique du Sud
Âge: 22
Messages: 22
Par défaut Access et Excel: importer un classeur complet

Salut la compagnie,

Voulant creer une routine de mise a jour pour ma base de donnees Access, j'aurai besoin de programmer sous vb l'importation d'une feuille quelconque (et pas uniquement la premiere) Excel

J'ai bien essayer d'utiliser ce type de code:

Code :
DoCmd.TransferSpreadsheet acImport, 8, "A", (Update), True, ""
Mais cela ne me permet d'importer que la premiere feuille de mon classeur alors qu'en fait il faudrait que j'importe toutes les feuilles qu'il contient.

Le mieux serait meme que je puisse toutes les inserer dans une seul et meme table mais si j'arrivais deja c creer autant de table que j'ai de feuilles je serais content!

Merci d'avance!

PS: j'ai effectuer un max de recherche avant de poster cette question mais je n'ai rien trouve...

Dernière modification par Philippe JOCHMANS ; 08/10/2008 à 16h51 Motif: Ajout des balises codes (sélection du code + #), ce n'est pas facultatif
damfury est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/10/2008, 15h59   #2 (permalink)
Expert Confirmé Sénior
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: RP
Âge: 24
Messages: 2 915
Envoyer un message via MSN à jpcheck
Par défaut

bonjour damfury,
bienvenue sur DVP

en lisant une des infos de la
http://access.developpez.com/faq
il est écrit qu'on peut spécifier les zones à importer dans Access :
http://access.developpez.com/faq/?pa...l#ImpFichExcel

Mon petit doigt me dit que si tu passes par une collection de page au préalable, tu devrais pouvoir fair une boucle d'import avec toutes les pages

dans l'idée ca donnerait ceci (non vérifié mais au debug près ):
Code :
Dim xlWbk As Worbook
Dim col As collection
Dim tmpWsh as WorkSheet
Dim i As integer
 
' avec attribution préalable de xlWbk à ton classeur en question
For Each tmpWsh In xlWbk.WorSheets
      Col.Add tmpWsh.Name
Next
 
For i = 0 to Ubound(col)
DoCmd.TransferSpreadsheet acImport, 8, "T_" & col(i),"C:\Fichier.xls", True, "A1:C12" 
Next i
__________________
Piou-Piou
Poussin Developpeur

Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/10/2008, 16h23   #3 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: octobre 2008
Localisation: Afrique du Sud
Âge: 22
Messages: 22
Par défaut

Merci beaucoup pour ta reponse!

Qu'est-ce que tu entends par "attribution préalable de xlWbk à ton classeur en question"???

Desole je suis assez novice en vb!!

D'autant plus que je recupere le chemin de mon classeur par l'intermediaire d'une variable appelee "update".
damfury est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/10/2008, 22h42   #4 (permalink)
pgz
Expert Confirmé
 
Avatar de pgz
 
Date d'inscription: août 2005
Localisation: AriègePyrénées
Messages: 1 756
Par défaut

Bonjour.

C'est dans l'argument 'Etendue' que tu peux préciser le nom de la feuille dans le classeur.

Bon courage,

PGZ
__________________
Vous n'auriez pas l'idée de déclamer : "Oh taon, suspends ton vol!". Alors, de grâce, ne dites plus "Autant pour moi!". Dites : "Au temps pour moi!".
pgz est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 07h36   #5 (permalink)
Membre expérimenté
 
Date d'inscription: août 2006
Messages: 597
Par défaut

True pour prendre en compte les noms de colonnes
si ces noms sont identiques, on peut importer dans une même table
Le nom de la feuille est suivi de !

Code :
 
 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "NomTable1", "C:\dossier\fichierexcel.xls", True, "Feuil1!"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "NomTable2", "C:\dossier\fichierexcel.xls", True, "Feuil2!"
 
helas est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 08h12   #6 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: octobre 2008
Localisation: Afrique du Sud
Âge: 22
Messages: 22
Par défaut

Merci a tous pour vos reponses!

Bon pour que cela fonctionne avec une variable qui contient le chemin du fichier c'etait pas complique.

Ca donne ca:
Code :
DoCmd.TransferSpreadsheet acImport, 8, "A", (Update), True, "A!"
DoCmd.TransferSpreadsheet acImport, 8, "B-C", (Update), True, "B-C!"
Maintenant il va me faloir mettre en forme les tables obtenues car les premieres lignes sont inutiles, certaines colonnes le sont aussi et les noms de champs ne sont pas les bons.

Donc je vais essayer de chercher par moi meme mais si vous avez quelques indices a me laisser concernant la mise en forme des bases grace a des instructions VB ne vous genez pas!!!!!

Merci a tous
damfury est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > VBA Access

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide