1 pièce(s) jointe(s)
VBA Import et export table Access dans Excel
Bonjour à tous,
Je suis un peux plus que débutant (mais pas trop :mrgreen:)en VBA Excel...
Au travail j'utilise un logiciel de schémas électriques ( On a 3 versions différentes) qui à un environnement. Cet environnement à un catalogue matériel qui est géré avec un fichier "Equipement.mdb". J'ai plus de 800 références matériel à créer sur chaque versions de logiciel, sois je passe par le logiciel (ce qui prendra des mois...), sois je modifie le fichier mdb. J'ai choisi de modifier le mdb.
Le problème est que je ne connais rien en Access et en SQL...
J'ai donc choisis de faire une macro VBA sous Excel pour importer les tables (de chaque fichier mdb(x3)) dans excel, de les trier sur excel et de les injecter dans les 3 fichiers Access . C'est pour fusionner mes tables en gérant les doublons.
Quand j'utilise l’enregistreur de macro pour importer une table, le résulta me convient. Mais le code m'est incompréhensible pour que je puisse le travailler et faire mes boucle dans ma macro....
Après avoir fouillé sur le net, j'ai commencé à faire du code pour importer un table sur Excel, mais je voudrais avoir les entêtes des colonnes ds Excel.
Est-ce que mon code est bien? On peux faire plus simple?
C'est possible d'avoir une solution pour supprimer (vider) une table Access et de la recréer (remplir) avec Excel? Là je bute :aie::aie:
J'utilise la méthode AOD (je n'arrive pas à le faire avec la méthode DAO):weird:
Ci joint mon fichier Excel et Access
MERCI par avance pour votre aide:):););)
VBA Import et export table Access dans Excel
J'aimerai avoir un fichier Excel qui fusionne les trois fichiers mdb en cliquant sur un bouton afin que les collègues de travail qui l'utiliseront ne puissent pas corrompre les fichiers mdb.
De plus dans les fichiers mdb certaines tables sont différentes suivant les versions du logiciel et doivent le rester. Si un utilisateur se trompe de table en fusionnant, certaines fonctionnalités du logiciel ne fonctionneront plus...
Et à la base nous sommes électriciens et c'est tous juste s'il savent utiliser Excel et la plupart (dont moi même) nous ne connaissons pas Access.
VBA Import et export table Access dans Excel
RE,
Ah d'accord je ne savais pas qu'il fallait le faire une seule fois.
Si un client nous passe sont environnement, est-ce qu'il faudrait refaire les lien? Je pense que oui.
J'ai compté, il y a en tout 126 tables. Les références matériels sont réparties dans 56 tables.
J'ai mis en pièce joint un fichier mdb et un excel. J'ai réduis le fichier mdb car il fait plus de 3Go.
Sur la feuille 1 du excel il y a les 56 tables de listées ou les références sont rangées.
Dans la macro j' ai pensé :
Faire une boucle pour chaque tables
récupérer les références du 1er fichier mdb et les mettre ds excel
récupérer les références du 2eme fichier mdb et les mettre ds excel à la suite
récupérer les références du 3eme fichier mdb et les mettre ds excel à la suite
Trier les doublons
prendre toutes les références ds la feuilles excel
les mettre ds la table correspondante des trois fichier mdb
et répéter 55 fois l’opération.
Je pense que c'est le plus simple et le plus rapide. Non?
Voici le code que j'ai commencé:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| Sub Import_AccessData()
Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim stDB As String
Dim wsSheet As Worksheet
Dim lnNumberOfField As Long
Dim lnCount As Integer
Dim FichierExcel As String
Dim Chemin As String 'Chemin du fichier Excel
Dim Chemin1 As String 'Chemin du fichier mdb V3R7
Dim Chemin2 As String 'Chemin du fichier mdb V4R1
Dim Chemin3 As String 'Chemin du fichier mdb V4R2
Dim CheminF1 As String 'Chemin du fichier mdb V3R7
Dim CheminF2 As String 'Chemin du fichier mdb V4R1
Dim CheminF3 As String 'Chemin du fichier mdb V4R2
Dim Fichier1 As String 'Fichier mdb V3R7
Dim Fichier2 As String 'Fichier mdb V4R1
Dim Fichier3 As String 'Fichier mdb V4R2
Dim i As Integer 'C'est un compteur
Dim j As Integer 'C'est un compteur
Dim x As Integer 'C'est un compteur
Dim Table As String
FichierExcel = ActiveWorkbook.Name
Workbooks(FichierExcel).Activate
Sheets("Feuil1").Select
Chemin1 = Range("D8")
Chemin2 = Range("D9")
Chemin3 = Range("D10")
Fichier1 = Range("D13")
Fichier2 = Range("D14")
Fichier3 = Range("D15")
CheminF1 = Chemin1 & "\" & Fichier1
CheminF2 = Chemin2 & "\" & Fichier2
CheminF3 = Chemin3 & "\" & Fichier3
Chemin = ActiveWorkbook.Path & "\" & FichierExcel
Cells(Cells.Columns.Count, 1).End(xlUp).Select 'Permet de déterminer la dernière cellule vide de la colonne 1
j = ActiveCell.Row 'permet de récupérer le N° de ligne dans la variable j
For i = 9 To j 'Boucle pour récupérer les nomS des tables à extraire vers Excel
Table = Range("A" & i)
stDB = CheminF1
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & stDB & ";"
rst.Open "SELECT * FROM" & "[" & Table & "]", cnt
FichierExcel = ActiveWorkbook.Name
Workbooks(FichierExcel).Activate
Sheets("Feuil7").Select
Cells(2, 1).CopyFromRecordset rst
Sheets("Feuil1").Select
'Range(Cells(2, 1), Cells(Range("A65536").End(xlUp).Row, Range("XFD2").End(xlToLeft).Column)).Select' Permet de selectionner des lignes et des colonnes sans conaitre la fin
rst.Close
cnt.Close
End ' Pour faire le test en pas à pas je quitte la macro pour ne pas faire la boucle
Next i
End Sub |
VBA Import et export table Access dans Excel
Pièce joint dans le premier poste
VBA Import et export table Access dans Excel
J'ai lu de la documentation sur le PowerQuery mais je n'ai pas compris ce que sait
Est ce une méthode comme le ADo ou DAO?
4 pièce(s) jointe(s)
VBA Import et export table Access dans Excel
Les 2 premiers libellés des colonnes colonne sont identiques sur toutes les tables, après les autre libellés se ne sont pas les même car les références matériels sont groupé par classes (ex: classe API = une table, classe CÂBLE = une autre table).
Pièce jointe 413476
Pièce jointe 413480
Pièce jointe 413484
Pièce jointe 413486
VBA Import et export table Access dans Excel
Les 3 fichiers ont l'a même structure.
Je n'est pas le schéma de structure.
Comment vérifie t-on les les relations entre les tables existant à l'intérieur des bases?
1 pièce(s) jointe(s)
VBA Import et export table Access dans Excel
Bonjour,
Oui j'ai pensé à regarder et j'ai commencer à le faire mais j'ai arrêté car c'est trop long comme solution.
En ce qui concerne les relations, j'ai regarder et je crois qu'il en n'a pas.
Voici ce qui ce passe lorsque je clique sur afficher toutes les relations
Pièce jointe 413557
VBA Import et export table Access dans Excel
Bonjour Chris,
Je vais essayer par VBA Excel de supprimer les données de la tables Access et de les ré-importer depuis Excel une fois les doublons gérés.
Je l'ai fait manuellement avec Excel. J'ai pris la plus grandes tables des fichiers et trié les doublons, Excel supporte bien l’opération est le temps d’exécution n'est pas si lent que ça. Je suis même surpris de sa rapidité:).
Quel est le code en VBA excel pour :
-Supprimer les données d'une tables?
-Exporter les données d'une feuille Excel dans une tables Access?