Bonjour à tous et toutes
J'ai un formulaire qui contient une liste box dont les données sont issu d'une table "T_TEMPORAIRE" qui elle même provient d'une requête création de table "R_MAJ_TEMPORAIRE".
J'ai inséré un bouton de commande qui appelle une procédure MiseAjour qui contient les différentes fonctions pour créer cette table "T_TEMPORAIRE" ( cf ci-dessous)

Tout fonctionne bien lorsque je lance la première fois la procédure ( les données s'affichent dans ma liste box).
Mais lorsque je relance la procédure une deuxième fois la table "T_TEMPORAIRE" pour avoir des autres données, j'ai un message d'erreur qui s'affiche :
Erreur d'exécution 3211
le moteur de base de données n'a pa pu verrouiller la table T_TEMPORAIRE" car elle est déjà utilisé par une autre personne ou un autre processus"
je ne sais pas comment fermer cette table pour relancer la requête création de table

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
Option Compare Database
Public Sub MiseAjour()
 
 
    Dim stDocName As String
    Dim stLinkCriteria As String
    If ExisteTable("T_TEMPORAIRE") Then   ' Si la table recherche existe
        Call Delete_Tbl("T_TEMPORAIRE")   ' on la supprime
    End If
    LanceRequeteCreation (R_MAJ_TEMPORAIRE)   ' lancement requete creation de la nouvelle table
    stDocName = "Menu"
    DoCmd.OpenForm stDocName, , , stLinkCriteria     ' Ouverture du formulaire
 
End Sub
Public Function ExisteTable(T_TEMPORAIRE As String) As Boolean   ' Fonction de test existance table
'Pour fonctionner ce code nécessite la référence
'   - Microsoft DAO X Object Library
On Error GoTo Err
    Dim oDb As DAO.Database
    Dim oQdf  As DAO.TableDef
    'Accède à la base de données courante
    Set oDb = CurrentDb
    Set oQdf = oDb.TableDefs(T_TEMPORAIRE)
    'Retourne Vrai
    ExisteTable = True
fin:
    'Libère les objets
    Set oDb = Nothing
    Set oQdf = Nothing
    Exit Function
Err:
    'Remonte toutes les erreurs différents de l'erreur 3265
    '(la requête n'existe pas)
    If Err.Number <> 3265 Then
        Err.Raise Err.Number, Err.Source, Err.Description
    End If
    Resume fin
End Function
 
'---------------------------------------------------------------------------------------
'Fonction de suppression d'une table
'---------------------------------------------------------------------------------------
 
Public Sub Delete_Tbl(ByVal T_TEMPORAIRE As String)
 
 
    Dim oDb As DAO.Database
 
    Set oDb = CurrentDb
    oDb.TableDefs.Delete "T_TEMPORAIRE"
 
End Sub
 
 
'---------------------------------------------------------------------------------------
'Fonction de création d'une table
'---------------------------------------------------------------------------------------
Public Sub LanceRequeteCreation(R_MAJ_TEMPORAIRE As String)    ' lance les requetes creation de table
 
 
  Dim ReqFind As DAO.QueryDef
     Set ReqFind = CurrentDb.QueryDefs("R_MAJ_TEMPORAIRE")   ' lancement requete creation table
 
     ReqFind.Execute          ' execution requete
     Set ReqFind = Nothing    ' fermeture
End Sub