Salut,
je travail actuellement sur un programe en access et j'utilise du code vba pour les boutons, je suis pas tres fort en vba, et actuellement je trouve un probleme avec un bouton de creation de table, alors le probleme c'est que j'ai deux bouton pour creer deux tables differentes,dans mon code j'ai mis une fonction qui verifie si cette table existe deja et affiche un message de confirmation dans ce cas et efface l'ancienne table, sinon il doit creer la table directement alors j'ai tester ce code sur le premieer bouton et ça marche tres bien sans aucun probleme, et apres j'ai mis le meme code(j'ai changer que le nom de la table et des champs) sur le deuxieme bouton mais cette fois il me met une erreur quand la table existe deja(e pense qu'il essaye meme pas de tester la condition if), j'ai pas reussis a trouver l'erreur et je souhaiterai avoir vore aide.
voici un fichier qui contient le code des deux boutons :

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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
Function Delete_Table(NomTable As String) As Boolean
    Dim db As DAO.Database
    Dim tbl As DAO.TableDef
    Dim conf
    Delete_Table = False
 
    Set db = CurrentDb
 
    For Each tbl In db.TableDefs
        If tbl.Name = NomTable Then
             Delete_Table = True
        Else
            Delete_Table = False
        End If
    Next tbl
 
End Function
 
------------------------------------------------------------------
Private Sub FichierReservations_Click()
Dim oDb As DAO.Database
Dim oNouvelleTable As DAO.TableDef
Dim oChamp, oChamp2 As DAO.Field
Dim oIndex, oIndex2 As DAO.index
Dim tb As String
Dim con
tb = "Réservations"
'Instancie la base de données
    Set oDb = CurrentDb
'Crée la nouvelle table
    Set oNouvelleTable = oDb.CreateTableDef("Réservations")
'Crée le champ N_Cin
    Set oChamp = oNouvelleTable.CreateField("N_Cin", dbText, 15)
    Set oChamp2 = oNouvelleTable.CreateField("Numéro", dbInteger, 10)
'Définit le champ en numero_auto
   ' oChamp.Attributes = dbAutoIncrField
'Ajoute le champ à la table
    oNouvelleTable.Fields.Append oChamp
    oNouvelleTable.Fields.Append oChamp2
'Crée les champs nom , prenom , adresse , profession et telephone et les ajoute
    oNouvelleTable.Fields.Append oNouvelleTable.CreateField("Date_Arrivee", dbDate)
    oNouvelleTable.Fields.Append oNouvelleTable.CreateField("Date_Depart", dbDate)
    oNouvelleTable.Fields.Append oNouvelleTable.CreateField("Date_Reservation", dbDate)
    oNouvelleTable.Fields.Append oNouvelleTable.CreateField("Nb_pers", dbInteger, 15)
  'définit les deux clés primaires sur N_Cin et numéro
    Set oIndex = oNouvelleTable.CreateIndex("PK_N_Cin-Numéro")
    With oIndex
    .Primary = True
    .Fields.Append .CreateField("N_Cin")
    .Fields.Append .CreateField("Numéro")
    End With
    'Ajoute l'index à la table
    oNouvelleTable.Indexes.Append oIndex
 
'supprimer la table si elle existe deja
 
    If Delete_Table(tb) = True Then
        con = MsgBox("la table " & tb & " existe deja , voulez vous supprimer cette table et creer une nouvelle?", vbYesNo + 256 + vbQuestion, "Confirmation")
        If con = vbYes Then
       oDb.TableDefs.Delete ("Réservations")
        MsgBox "L'ancienne table " & tb & " a bien été éffacée."
        oDb.TableDefs.Append oNouvelleTable
        MsgBox "La Nouvelle Table Réservations a été créer.", vbInformation + vbOKOnly + vbDefaultButton1, "Confirmation "
        Else: MsgBox "action annulé"
        End If
    Else
         oDb.TableDefs.Append oNouvelleTable
         MsgBox "La Table Réservations a été créer.", vbInformation + vbOKOnly, "Confirmation "
    End If
 
 
 
'Libère les variables
oDb.Close
Set oIndex = Nothing
Set oChamp = Nothing
Set oNouvelleTable = Nothing
Set oDb = Nothing
 
End Sub
 
--------------------------------------------------------------------------------------------------------------
Private Sub FichierClients_Click()
Dim oDb As DAO.Database
Dim oNouvelleTable As DAO.TableDef
Dim oChamp, oChamp2 As DAO.Field
Dim oIndex, oIndex2 As DAO.index
Dim tb As String
Dim con
tb = "Clients"
'Instancie la base de données
    Set oDb = CurrentDb
'Crée la nouvelle table
    Set oNouvelleTable = oDb.CreateTableDef("Clients")
'Crée le champ N_Cin
    Set oChamp = oNouvelleTable.CreateField("N_Cin", dbText, 15)
    'Set oChamp2 = oNouvelleTable.CreateField("Numéro", dbInteger, 10)
'Définit le champ en numero_auto
   ' oChamp.Attributes = dbAutoIncrField
'Ajoute le champ à la table
    oNouvelleTable.Fields.Append oChamp
    'oNouvelleTable.Fields.Append oChamp2
'Crée les champs nom , prenom , adresse , profession et telephone et les ajoute
    oNouvelleTable.Fields.Append oNouvelleTable.CreateField("Nom", dbText, 15)
    oNouvelleTable.Fields.Append oNouvelleTable.CreateField("Prenom", dbText, 15)
    oNouvelleTable.Fields.Append oNouvelleTable.CreateField("Profession", dbText, 15)
    oNouvelleTable.Fields.Append oNouvelleTable.CreateField("Adresse", dbText, 25)
    oNouvelleTable.Fields.Append oNouvelleTable.CreateField("Telephone", dbText, 15)
 
  Set oIndex = oNouvelleTable.CreateIndex("PK_N_Cin")
    oIndex.Primary = True
    oIndex.Fields.Append oIndex.CreateField("N_Cin")
    'Ajoute l'index à la table
    oNouvelleTable.Indexes.Append oIndex
 
'supprimer la table si elle existe deja
 
    If Delete_Table(tb) = True Then
        con = MsgBox("la table " & tb & " existe deja , voulez vous supprimer cette table et creer une nouvelle?", vbYesNo + 256 + vbQuestion, "Confirmation")
        If con = vbYes Then
       oDb.TableDefs.Delete ("Clients")
        MsgBox "L'ancienne table " & tb & " a bien été éffacée."
        oDb.TableDefs.Append oNouvelleTable
        MsgBox "La Nouvelle Table Clients a été créer.", vbInformation + vbOKOnly + vbDefaultButton1, "Confirmation "
        Else: MsgBox "action annulé"
        End If
    Else
         oDb.TableDefs.Append oNouvelleTable
         MsgBox "La Table Clients a été créer.", vbInformation + vbOKOnly, "Confirmation "
    End If
 
 
 
'Libère les variables
oDb.Close
Set oIndex = Nothing
Set oChamp = Nothing
Set oNouvelleTable = Nothing
Set oDb = Nothing
End Sub
code vba


je vous remercie d'avance.