Bonjour à tous !

Je cherche à créer une application userform qui va chercher un fichier mde et qui l'ouvre avec Excel.

Jusque là, ça marche, mais je voudrais automatiser la suite : Créer une page excel par table.

La tête de l'application :

Nom : Base.png
Affichages : 648
Taille : 38,4 Ko

On clique sur le bouton à droite du textbox, qui nous ouvre l'explorateur de fichier, on choisit son .mde/.mdb, et l'appli récupère le lien dans le textbox :

Nom : Lien.png
Affichages : 657
Taille : 42,0 Ko

(J'ai cache le lien, je sais pas si j'ai le droit de le montrer. Dans le doute... Bref)



---------- (A partir de là, je ne sais pas comment automatiser le processus) ----------

On clique sur Ouvrir, ça va chercher le fichier via le lien du textbox, et ça l'ouvre dans Excel.

Vu qu'il y a plusieurs tables dans le fichier mde, ça vous ouvre cette popup :

Nom : Tables.png
Affichages : 595
Taille : 19,8 Ko

Quand on sélectionne une ou plusieurs tables, ça nous ouvre ça :

Nom : ImportDonnees.png
Affichages : 646
Taille : 30,3 Ko

Si on a choisi une seule table, on peut choisir "Feuille de calcul existante" Et ça nous met la table Access dans le tableau Excel avec des titres aux colonnes, des filtres etc.

Si on sélectionne plusieurs tables, APPAREMMENT il y a un conflit (je suis pas sur d'avoir réellement compris, mais en gros je pense qu'il essaye d'écrire sur la feuille la table suivante, sauf que la table précedente est déjà écrit sur cette feuille, donc il y a conflit)
Je suppose donc qu'il faut cliquer sur "Nouvelle feuille de calcul" mais je n'ai pas réussi à tester car mon Excel chargeait en boucle et j'ai pas eu la patience pour attendre le résultat final.

Je cherche donc à automatiser ce processus, afin que l'utilisateur ait juste à cliquer sur Ouvrir, et que Excel ne demande rien de plus, le logiciel ouvrirait toutes les tables contenues dans le mdb/mde, et rajoute chaque table dans une nouvelle feuille de calcul.

En gros, quand il clique, il se retrouve avec un nouveau classeur, et X feuilles dedans (X correspond au nombre de table du fichier mdb/mde) avec pour chaque feuille, une table différente de la base de donnée Access. L'utilisateur n'aurait rien d'autre à faire que de choisir le fichier en fait.

J'ai essayé d'enregistrer une macro pour simuler les cliques de souris sur "nouvelle feuille de calcul" et "OK" mais on ne peut pas le faire quand le programme tourne.

Je ne m'y connais pas assez en vba pour écrire dans mon programme une connexion à Access, récupérer le nombre de table, et faire une boucle sur ces tables pour créer une feuille de calcul, puis créer des colonnes en fonction de ce que contient la table Access etc...

C'est pourquoi je solicite votre aide, y a t-il moyen d'automatiser ce processus ?

Voici également le code actuel de l'application :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
Private Sub BoutonEffacer_Click()
    TextBoxChemin.Text = ""
End Sub
 
Private Sub BoutonGo_Click()
    Workbooks.Open Filename:=TextBoxChemin.Text
     ' Code
     'Windows(ChDir & "\" & NomFichier).Close
End Sub
 
Private Sub BoutonOuvrir_Click()
    Dim CheminEtTypeFichier As String, Fichier As String
    CheminEtTypeFichier = "C:"
    Fichier = BrowseFile(CheminEtTypeFichier)
    TextBoxChemin.Text = Fichier
End Sub
 
Function BrowseFile(CheminEtTypeFichier) As String
    With Application.FileDialog(msoFileDialogFilePicker)
 
        .AllowMultiSelect = False
        .InitialFileName = CheminEtTypeFichier
        .Filters.Clear
        .Filters.Add "Access Database", "*.mde"
        .FilterIndex = 1
        .InitialView = msoFileDialogViewProperties
        .Show
 
        If .SelectedItems.Count > 0 Then
            BrowseFile = .SelectedItems(1)
        Else
            BrowseFile = ""
        End If
    End With
 End Function
Merci d'avance pour votre attention,

Cordialement,

Maxime OZENNE.