Importation automatique sous Access - VBA

Fermé
fleur - 13 mai 2013 à 12:56
 Tessel75 - 19 juin 2014 à 16:14
Bonjour,

Je suis débutante en VBA et cherche une solution afin d'importer sous access des fichiers Excel. Pour le moment rien de bien compliqué; cependant, les fichiers à importer changent de nom chaque mois .

Exemple : (PO_YYMM)
PO_1302

Je ne sais pas exactement comment m'y prendre. Quelqu'un aurait une idée à me suggérer?

Merci d'avance.

Fleur

8 réponses

Access sait importer des fichiers issus d'un programme de gestion de projet, ou d'un tableur :

Les fichiers au format XLS ainsi que les tâches et ressources de microsoft Project au format xls. Tous les formats excel sont gérés par le même pilote ISAM;

Les importations de fichiers Excel dans access -quelque soit le nom du fichier changeant- se font à travers la création d'une table "par importation depuis Excel.

Si vous n'êtes pas une fervente passionné du SGB -Système de gestion de base de données- je vous suggère d'activer l'Assistance guide dans votre programme ACCESS qui va vous expliquer comment faire.

Il se trouve dans le menu "Outils" pour ACCESS 2003 par exemple. (pour les autres versions je ne sais pas)

Nom supprimé Modération CCM
0
Bonjour Djerimay,

Je ne suis pas sûre d'avoir compris vos explications.
ça n'est pas l'importation en elle même qui me pose problème mais le fait que chaque mois, le fichier porte un autre nom.

En fait, j'ai un formulaire (j'aurais peut-être dû le préciser sur mon post), dans lequel je possède un bouton d'importation et d'autres pour exporter des données issues de mes requêtes.

C'est le code de ce bouton qui me pose problème. Je pensais au début créer une boucle qui va chercher le fichier portant le mois le plus haut (exemple 06 pour juin) mais le problème est que j'ai dans ce répertoire des données de 2012 (exemple 201206). Je doute que cela fontionne correctement.

Fleur
0
Utilisateur anonyme
13 mai 2013 à 14:41
Voulez-vous en savoir un peu plus sur les codes VBA ? c'est tous, ce que je peux faire ; pour le reste je laisserai d'autres internautes répondre à ma place, parce que là cela dépasse mes compétences...
0
Oui c'est tout à fait cela.
Merci pour votre message ;)
J'avance tout doucement là. Je pense et j'espère qu'avec de l'acharnement je trouverais ;)

Fleur
0
Voici les opérateurs logiques (codes VBA) les plus courants :

And, Or, Not, Xor

Qui sont utilisable via l'éditeur de script dans lequel vous avez écrit votre programme relié à votre touche de formlaire "Importer les données".

Il faut cliquer sur l'onglet de la page "Modules" puis double-cliquer dans la liste sur CODE GLOBAL pour ouvrir votre programme -appelé aussi module- dans l'éditeur VBA

A ce niveau, personne d'autre ne peut vous aider, car vous seul savez ce que vous avez écrit ou exécuter dans le script, que vous visualisez sur la page blanche en bas de l'écran.

Vous devez modifiez votre script avec les opérateurs que je vous ai donné pour que votre problème soit résolu.

Nom supprimé Modération CCM
0

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

Posez votre question
blux Messages postés 26536 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
13 mai 2013 à 15:32
Salut,

tu veux faire quoi au juste ?
Sélectionner un fichier via une boite de dialogue, regarder si un fichier a un nom en relation avec la date courante, autre chose ?
Qu'as-tu actuellement dans ton code ?
0
Bonjour Blux

Comme je ne sais pas quelle est la meilleur solution à vrai dire j'aurais aimé une boite de dialogue dans laquelle je rentre par exemple 1304 pour avril 2013 afn q'uil m'importe le fichier sous un nom précis, par exemple POavril.

Avec mon code actuellement je peux importer des données. Mais lorsque dans mon répertoire j'ai PO_1301, PO_1302... j'ai un message d'erreur m'indiquant qu'il ne trouve pas le fichier PO_1301. Par contre si dans ce répertoire j'ai que PO_1302 pas de soucis d'importation.

Quant à la boite de dialogue, je ne me suis pas encore penchée dessus...

Merci

Fleur
0
blux Messages postés 26536 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
14 mai 2013 à 09:39
Peux-tu poster ton code d'importation actuel qu'on regarde ce qu'il faut modifier pour récupérer le fichier correspondant à ton choix (ou à la date courante de manière automatique si tu le souhaites) ?
0
Voici mon code, bon désolée je débute alors ce code n'est pas parfait...

Private Sub Imp_Click()

    Dim dossier As String
    dossier = Dir("C:\Main\2013*.xls", vbDirectory)
        Do While dossier <> ""
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "POavril", dossier, True
                dossier = Dir
Loop
MsgBox "Import PO terminé! "
End Sub


Merci
Fleur
0
blux Messages postés 26536 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
14 mai 2013 à 10:08
Et donc, on va y rajouter quoi :

- une boite de dialogue pour choisir un fichier dans le répertoire
- une boite de dialogue pour taper un nom que l'on va utiliser ensuite
- du code pour récupérer automatiquement un fichier à partir de la date
- ...

Sous quelle forme sont les noms des fichiers dans le répertoire ?
0
Je dirais une boite de dialogue où je taperais 1304 (pour avril 2013 pour rappel les fichiers sont sous cette forme PO_1304, PO_1303 et je souhaite importer le dernier fichier soit ici celui du mois d'avril).

Fleur
0
Oui Djerimay, j'ai déjà avancé. J'ai mon code mais qui n'est ni parfait, ni optimisé, qui comporte encore une erreur d'exécution et qui n'effectue pas entièrement ce que je recherche mais je m'y approche doucement ;)

Je travaille encore dessus et le posterais si vraiment je bute toujours.
Merci encore.

Fleur
0
Bonjour,

Peux-tu poster ton code car j'ai le même problème que toi avec les noms de fichier qui changent de mois en mois?

Merci d'avance!
0
Bonjour à tous,
Il faudrait savoir si vos noms "variables" de fichiers Excel répondent à une logique un peu précise ou bien sont plutôt aléatoires.
S'ils sont logiques, du genre : ABCD & Année & Mois , il est tout à fait possible d'écrire son nom avant la ligne d'importation, par exemple:
An = Year(Date) ' Donne l'année en cour
Mois = Month (date) 'donne le mois courant
NomFichierA_Importer = NomFichier & An & Mois
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "", _ NomFichierA_Importer, True

Sinon il est toujours possible de, soit changer le nom du fichier Excel de manière transitoire le temps de faire l'import de telle sorte que les fichiers à importer aient toujours le même nom, soit faire une copie provisoire du fichier avec ce nom, faire l'importation et envoyer le fichier provisoire à la corbeille.
Cela prend 30 secondes et évite tous les soucis.
Bonne suite.
0