bonjour,

sur ma base access , j'ai plusieurs tables que je dois remplir régulierement avec des données mises a jour sur feuille excel.

ce que je voudrais parvenir a réaliser, c'est la fonction importer des données externe de access en VBA en cliquant sur un bouton de mon formulaire:
- cibler le fichier
- importer le fichier excel sur une table temp (hormis la premiere ligne)
- remplacer les donnees de la table par celle de la table temp

J'ai plusieurs tables a remplir de cette maniere (donc plusieurs boutons). Faudrais t il faire une fonction pour chacune des tables ou alors une seule fonction avec des arguments spécifique pour chaque table.

J'ai bien cherché sur le forum du code pour faire cela mais j'ai du mal a compiler tous les éléments.

la partie de code pour cibler le fichier :

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
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
'Fenêtre permettant de choisir un fichier
Public Function OuvrirUnFichier(Handle As Long, _
                                titre As String, _
                                TypeRetour As Byte, _
                                Optional TitreFiltre As String, _
                                Optional typeFichier As String, _
                                Optional RepParDefaut As String) As String
 'OuvrirUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir _
 'la boîte de dialogue de sélection d'un fichier.
 'Explication des paramètres
    'Handle = le handle de la fenêtre (Me.Hwnd)
    'Titre = Titre de la boîte de dialogue
    'TypeRetour (Définit la valeur, de type String, renvoyée par la fonction)
        '1 = Chemin complet + Nom du fichier
        '2 = Nom fichier seulement
    'TitreFiltre = Titre du filtre
        'Exemple: Fichier Excel
        'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
    'TypeFichier = Extention du fichier (Sans le .)
        'Exemple: XLS
        'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
    'RepParDefaut = Répertoire d'ouverture par defaut
        'Exemple: C:\windows\system32
        'Si vous laissé l'argument vide, par defaut il se place dans le répertoire de votre application
 
Dim StructFile As OPENFILENAME
Dim sFiltre As String
 
 'Construction du filtre en fonction des arguments spécifiés
If Len(TitreFiltre) > 0 And Len(typeFichier) > 0 Then
  sFiltre = TitreFiltre & " (" & typeFichier & ")" & Chr$(0) & "*." & typeFichier & Chr$(0)
End If
sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)
 
 
 'Configuration de la boîte de dialogue
  With StructFile
    .lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure
    .hWndOwner = Handle 'Identification du handle de la fenêtre
    .lpstrFilter = sFiltre 'Application du filtre
    .lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254
    .nMaxFile = 254 'Taille maximale du fichier
    .lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254
    .nMaxFileTitle = 254  'Taille maximale du nom du fichier
    .lpstrTitle = titre 'Titre de la boîte de dialogue
    .flags = OFN_HIDEREADONLY  'Option de la boite de dialogue
    If ((IsNull(RepParDefaut)) Or (RepParDefaut = "")) Then
        RepParDefaut = CurrentDb.Name
        PathStripPath (RepParDefaut)
        .lpstrInitialDir = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Mid$(RepParDefaut, 1, _
InStr(1, RepParDefaut, vbNullChar) - 1)))
        Else: .lpstrInitialDir = RepParDefaut
    End If
  End With
 
If (GetOpenFileName(StructFile)) Then 'Si un fichier est sélectionné
    Select Case TypeRetour
      Case 1: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFile, InStr(1, StructFile.lpstrFile, vbNullChar) - 1))
      Case 2: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFileTitle, InStr(1, StructFile.lpstrFileTitle, vbNullChar) - 1))
    End Select
Else
    OuvrirUnFichier = ""
End If
 
End Function
 
'Permet de savoir si un fichier est déjà ouvert (pas en mode lecture seule)
Public Function IsFileOpen(sFilePath As String) As Boolean
    Dim nFile As Integer
 
    On Error GoTo Erreur
 
    nFile = FreeFile()
    Open sFilePath For Input Access Read Lock Read Write As nFile
    Close nFile
 
    IsFileOpen = False
    Exit Function
 
Erreur:
    If Err.Number = 70 Then
        ' Si permission refusée, alors fichier déjà ouvert
        IsFileOpen = True
    Else
        ' Sinon, toute autre erreur est répercutée dans la procédure appelante
        Err.Raise Err.Number, "IsFileOpen"
    End If
End Function


le début de ma commande

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
Public Function Intégration()
 
 
 
 
    On Error GoTo Texte_err
    Dim db As Database
    Dim rec As DAO.Recordset, recResult As DAO.Recordset
    Dim fichier As String, SQL As String
    Dim table As String, tablefinal As String, tableBase As String
 
 
    DoCmd.SetWarnings False
    fichier = OuvrirUnFichier(Form_Accueil.Hwnd, "Parcourir", 1, "Fichier import", "xls")
    If fichier = "" Then
        GoTo Nochoice_exit
    End If
    If (IsFileOpen(fichier)) Then
        MsgBox "Le fichier " & fichier & vbLf & "est déjà ouvert. " & vbCrLf & vbCrLf & "Veuillez le fermer avant de recommencer l'import."
        Exit Function
    End If
.....
merci d'avance de me donner un coup de main pour avancer