Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/09/2011, 11h20   #1
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
Par défaut mettre le champ d'un formulaire a vide après enregistrement.

Bonjour,

j'ai un formulaire (avec 2 sous formulaire) qui permet de saisir des infos.
Lorsque l'on clic sur le bouton enregistrer, une fenêtre s'ouvre pour aller chercher un fichier Excel et ainsi récupérer des données pour les autres tables.
Tout fonctionne bien même l'enregistrement.
Mon problème c'est que je n'arrive pas a mettre mes champs de mon formulaire et sous-formulaire a vide une fois l'enregistrement terminé.
J'ai voulu mettre un:
Code :
DoCmd.GoToRecord , , acNewRec
à la fin de mon programme mais ca ne marche pas.
Il dis que l'opération atteindre l'enregistrement n'est pas disponible pour le moment.
Savez vous pourquoi?

Je vous met mon code en entier.

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
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
Private Sub Commande19_Click()



Dim nPMOA, nSPMOA, sSQL, sSQL0, nSPCertu, nDesig, RQ, Offre, unite As String
Dim i, nbli, idcertu, idP, idPMOA, idSPMOA, idSPCertu, idDesig, idData As Integer
Dim Pu, Qte, Aleas  As Double
Dim db As DAO.Database
Dim myrst As DAO.Recordset
Set db = CurrentDb

idP = Me.ID_P

Dim strFullFilename  As String
Dim strFilename      As String
Dim strPathname      As String

    strFullFilename = OuvrirUnFichier(Application.hWndAccessApp, "Parcourir", 1, "Fichier Excel", "xlsx")
    strFilename = Mid$(strFullFilename, InStrRev(strFullFilename, "\") + 1)
    strPathname = Left$(strFullFilename, InStrRev(strFullFilename, "\") - 1)

    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True
    xlApp.Workbooks.Open (strPathname & "/" & strFilename)
    xlApp.Workbooks(strFilename).sheets("Feuil1").Activate
  
  
nbli = xlApp.Workbooks(strFilename).sheets("Feuil1").Range("A65536").End(xlUp).Row

DoCmd.SetWarnings (False)


For i = 2 To nbli

idcertu = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "A")
montCertu = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "B")
montCertu = Replace(montCertu, ",", ".")
nSPCertu = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "C")
montSPCertu = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "D")
montSPCertu = Replace(montSPCertu, ",", ".")
nPMOA = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "E")
montPMOA = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "F")
montPMOA = Replace(montPMOA, ",", ".")
nSPMOA = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "G")
montSPMOA = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "H")
montSPMOA = Replace(montSPMOA, ",", ".")
nDesig = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "I")
montDesig = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "J")
montDesig = Replace(montDesig, ",", ".")
unite = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "K")
Pu = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "L")
Qte = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "M")
Aleas = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "N")
RQ = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "O")
Offre = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "P")
ce = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "Q")
etape = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "R")
indice = xlApp.Workbooks(strFilename).sheets("Feuil1").Cells(i, "S")

idPMOA = 0
idSPMOA = 0
idSPCertu = 0
idDesig = 0
idData = 0

'partie pour la table Poste_MOA

sSQL0 = "SELECT ID_PMOA, Nom_PMOA FROM Poste_MOA;"

                        Set myrst0 = db.OpenRecordset(sSQL0)
                        'si le recordset n'est pas vide
                         If Not myrst0.EOF Then
                             ' tant qu'il n'est pas vide
                             Do While Not myrst0.EOF
                                If myrst0.Fields("Nom_PMOA").Value = nPMOA Then
                                idPMOA = myrst0.Fields("ID_PMOA").Value
                                End If
                         myrst0.MoveNext
                             Loop
                                If idPMOA = 0 Then
                                    sSQL = "INSERT INTO [Poste_MOA] ([Nom_PMOA]) VALUES ('" & nPMOA & "')"
                                    DoCmd.RunSQL (sSQL)
                                    sSQL = "SELECT ID_PMOA FROM Poste_MOA WHERE Nom_PMOA= '" & nPMOA & "';"
                                    Set myrst0 = db.OpenRecordset(sSQL)
                                    idPMOA = myrst0.Fields("ID_PMOA").Value
                                End If
                         Else
                                sSQL = "INSERT INTO [Poste_MOA] ([Nom_PMOA]) VALUES ('" & nPMOA & "')"
                                DoCmd.RunSQL (sSQL)
                                sSQL = "SELECT ID_PMOA FROM Poste_MOA WHERE Nom_PMOA= '" & nPMOA & "';"
                                Set myrst0 = db.OpenRecordset(sSQL)
                                idPMOA = myrst0.Fields("ID_PMOA").Value
                                
                         End If
                         
                         Set myrst0 = Nothing

'partie pour la table Sous_Poste_MOA

sSQL0 = "SELECT ID_SPMOA, Nom_SPMOA FROM Sous_Poste_MOA;"

                        Set myrst0 = db.OpenRecordset(sSQL0)
                        'si le recordset n'est pas vide
                         If Not myrst0.EOF Then
                             ' tant qu'il n'est pas vide
                             Do While Not myrst0.EOF
                                If myrst0.Fields("Nom_SPMOA").Value = nSPMOA Then
                                idSPMOA = myrst0.Fields("ID_SPMOA").Value
                                End If
                         myrst0.MoveNext
                             Loop
                                If idSPMOA = 0 Then
                                    sSQL = "INSERT INTO [Sous_Poste_MOA] ([Nom_SPMOA]) VALUES ('" & nSPMOA & "')"
                                    DoCmd.RunSQL (sSQL)
                                    sSQL = "SELECT ID_SPMOA FROM Sous_Poste_MOA WHERE Nom_SPMOA= '" & nSPMOA & "';"
                                    Set myrst0 = db.OpenRecordset(sSQL)
                                    idSPMOA = myrst0.Fields("ID_SPMOA").Value
                                End If
                         Else
                                sSQL = "INSERT INTO [Sous_Poste_MOA] ([Nom_SPMOA]) VALUES ('" & nSPMOA & "')"
                                DoCmd.RunSQL (sSQL)
                                sSQL = "SELECT ID_SPMOA FROM Sous_Poste_MOA WHERE Nom_SPMOA= '" & nSPMOA & "';"
                                Set myrst0 = db.OpenRecordset(sSQL)
                                idSPMOA = myrst0.Fields("ID_SPMOA").Value
                                
                         End If
                         
                         Set myrst0 = Nothing
                         

'partie pour la table Sous_Poste_Certu

sSQL0 = "SELECT ID_SP_Certu, Nom_SP_Certu FROM Sous_Poste_Certu;"

                        Set myrst0 = db.OpenRecordset(sSQL0)
                        'si le recordset n'est pas vide
                         If Not myrst0.EOF Then
                             ' tant qu'il n'est pas vide
                             Do While Not myrst0.EOF
                                If myrst0.Fields("Nom_SP_Certu").Value = nSPCertu Then
                                idSPCertu = myrst0.Fields("ID_SP_Certu").Value
                                End If
                         myrst0.MoveNext
                             Loop
                                If idSPCertu = 0 Then
                                    sSQL = "INSERT INTO [Sous_Poste_Certu] ([Nom_SP_Certu]) VALUES ('" & nSPCertu & "')"
                                    DoCmd.RunSQL (sSQL)
                                    sSQL = "SELECT ID_SP_Certu FROM Sous_Poste_Certu WHERE Nom_SP_Certu= '" & nSPCertu & "';"
                                    Set myrst0 = db.OpenRecordset(sSQL)
                                    idSPCertu = myrst0.Fields("ID_SP_Certu").Value
                                End If
                         Else
                                sSQL = "INSERT INTO [Sous_Poste_Certu] ([Nom_SP_Certu]) VALUES ('" & nSPCertu & "')"
                                DoCmd.RunSQL (sSQL)
                                sSQL = "SELECT ID_SP_Certu FROM Sous_Poste_Certu WHERE Nom_SP_Certu= '" & nSPCertu & "';"
                                Set myrst0 = db.OpenRecordset(sSQL)
                                idSPCertu = myrst0.Fields("ID_SP_Certu").Value
                                
                         End If
                         
                         Set myrst0 = Nothing

'partie pour la table Designation

sSQL0 = "SELECT ID_Desig, Nom_Desig FROM Designation;"

                        Set myrst0 = db.OpenRecordset(sSQL0)
                        'si le recordset n'est pas vide
                         If Not myrst0.EOF Then
                             ' tant qu'il n'est pas vide
                             Do While Not myrst0.EOF
                                If myrst0.Fields("Nom_Desig").Value = nDesig Then
                                idDesig = myrst0.Fields("ID_Desig").Value
                                End If
                         myrst0.MoveNext
                             Loop
                                If idDesig = 0 Then
                                    sSQL = "INSERT INTO [Designation] ([Nom_Desig]) VALUES ('" & nDesig & "')"
                                    DoCmd.RunSQL (sSQL)
                                    sSQL = "SELECT ID_Desig FROM Designation WHERE Nom_Desig= '" & nDesig & "';"
                                    Set myrst0 = db.OpenRecordset(sSQL)
                                    idDesig = myrst0.Fields("ID_Desig").Value
                                End If
                         Else
                                sSQL = "INSERT INTO [Designation] ([Nom_Desig]) VALUES ('" & nDesig & "')"
                                DoCmd.RunSQL (sSQL)
                                'idDesig = DLookup("[ID_Desig]", "Designation", "[ID_Desig]=MAX")
                                sSQL = "SELECT ID_Desig FROM Designation WHERE Nom_Desig= '" & nDesig & "';"
                                Set myrst0 = db.OpenRecordset(sSQL)
                                idDesig = myrst0.Fields("ID_Desig").Value
                                
                         End If
                         
                         Set myrst0 = Nothing

'partie pour la table DATA

sSQL0 = "SELECT ID_Data, Unité, PU, Qté, Peraleas, Remarque, Offreur FROM DATA;"


                        Set myrst0 = db.OpenRecordset(sSQL0)
                        'si le recordset n'est pas vide
                         If Not myrst0.EOF Then
                             ' tant qu'il n'est pas vide
                             Do While Not myrst0.EOF
                                If myrst0.Fields("Unité").Value = unite And myrst0.Fields("PU").Value = Pu And myrst0.Fields("Qté").Value = Qte And myrst0.Fields("Peraleas").Value = Aleas And myrst0.Fields("Remarque").Value = RQ And myrst0.Fields("Offreur").Value = Offre Then
                                idData = myrst0.Fields("ID_Data").Value
                                End If
                         myrst0.MoveNext
                             Loop
                                If idData = 0 Then
                                    sSQL = "INSERT INTO [DATA] ([Unité], [PU], [Qté],[Peraleas],[Remarque],[Offreur]) VALUES ('" & unite & "'," & Pu & "," & Qte & "," & Aleas & ",'" & RQ & "','" & Offre & "')"
                                    DoCmd.RunSQL (sSQL)
                                    sSQL = "SELECT ID_Data FROM DATA WHERE (Unité= '" & unite & "' and PU= " & Pu & " and Qté= " & Qte & " and Peraleas= " & Aleas & " and Remarque= '" & RQ & "' and Offreur= '" & Offre & "');"
                                    Set myrst0 = db.OpenRecordset(sSQL)
                                    idData = myrst0.Fields("ID_Data").Value
                                End If
                         Else
                                    sSQL = "INSERT INTO [DATA] ([Unité], [PU], [Qté],[Peraleas],[Remarque],[Offreur]) VALUES ('" & unite & "'," & Pu & "," & Qte & "," & Aleas & ",'" & RQ & "','" & Offre & "')"
                                    DoCmd.RunSQL (sSQL)
                                    sSQL = "SELECT ID_Data FROM DATA WHERE (Unité= '" & unite & "' and PU= " & Pu & " and Qté= " & Qte & " and Peraleas= " & Aleas & " and Remarque= '" & RQ & "' and Offreur= '" & Offre & "');"
                                    Set myrst0 = db.OpenRecordset(sSQL)
                                    idData = myrst0.Fields("ID_Data").Value
                                
                         End If
                         
                         Set myrst0 = Nothing
                         
'MsgBox (idP & "--" & idcertu & "--" & idSPCertu & "--" & nSPCertu & "--" & idPMOA & "--" & nPMOA & "--" & idSPMOA & "--" & nSPMOA & "--" & idDesig & "--" & nDesig & "--" & idData & "--" & unite & "--" & Pu & "--" & Qte & "--" & Aleas & "--" & RQ & "--" & Offre)
sSQL = "INSERT INTO [Detail_Poste] ([ID_P],[ID_PMOA],[Num_Certu],[Montant_PCertu],[Montant_PMOA]) VALUES (" & idP & ", " & idPMOA & ", " & idcertu & ", " & montCertu & ", " & montPMOA & ")"
DoCmd.RunSQL (sSQL)
sSQL = "INSERT INTO [Detail_Poste_MOA] ([ID_PMOA],[ID_SPMOA],[Montant_SPMOA]) VALUES (" & idPMOA & ", " & idSPMOA & ", " & montSPMOA & ")"
DoCmd.RunSQL (sSQL)
sSQL = "INSERT INTO [Detail_SP_MOA] ([ID_SPMOA],[ID_Desig],[ID_PMOA],[Montant_Desig]) VALUES ( " & idSPMOA & ", " & idDesig & "," & idPMOA & ", " & montDesig & ")"
DoCmd.RunSQL (sSQL)
sSQL = "INSERT INTO [Detail_Poste_Certu] ([ID_SP_Certu],[Num_Certu],[Montant_SP_Certu]) VALUES ( " & idSPCertu & ", " & idcertu & ", " & montSPCertu & ")"
DoCmd.RunSQL (sSQL)
sSQL = "INSERT INTO [Detail_SP_Certu] ([ID_SP_Certu],[ID_Desig],[Num_Certu],[Montant_Desig]) VALUES ( " & idSPCertu & ", " & idDesig & "," & idcertu & "," & montDesig & ")"
DoCmd.RunSQL (sSQL)
sSQL = "INSERT INTO [Contient] ([ID_Desig],[ID_Data],[CE],[Etape],[Indice]) VALUES (" & idDesig & ", " & idData & ", '" & ce & "', '" & etape & "' , '" & indice & "')"
DoCmd.RunSQL (sSQL)


Next


DoCmd.SetWarnings (True)

xlApp.Application.Quit

DoCmd.GoToRecord , , acNewRec
merci de votre aide.
rob1son76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 11h44   #2
Membre actif
 
Avatar de antoinev2
 
Inscription : septembre 2008
Messages : 124
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : septembre 2008
Messages : 124
Points : 181
Points : 181
Bonjour,

alors je sais ça ne répond pas à votre question, mais c'est bon à savoir :
quand vous déclarez des variables de cette façon :
Citation:
Envoyé par rob1son76 Voir le message
Code :
1
2
3
4
 
Dim nPMOA, nSPMOA, sSQL, sSQL0, nSPCertu, nDesig, RQ, Offre, unite As String
Dim i, nbli, idcertu, idP, idPMOA, idSPMOA, idSPCertu, idDesig, idData As Integer
Dim Pu, Qte, Aleas  As Double
seule la dernière sera du type indiqué : toutes les autres seront du type Variant.

Par exemple pour la 1e ligne, toutes les variables seront de type Variant sauf "unite" qui sera bien de type String.

Pour les déclarer toutes de type String, il faur écrire :
Code :
Dim nPMOA As String, sSQL As String, sSQL0 As String (et ainsi de suite)
antoinev2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 11h52   #3
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
Merci de cette information je ne savais pas.
J'étais persuadé d'avoir lu quelque part que ca marché comme ca.
C'est bizarre que je n'ai pas eu de msg d'erreur lorsque j'ai lancé mon prog.
rob1son76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 12h54   #4
Membre actif
 
Avatar de antoinev2
 
Inscription : septembre 2008
Messages : 124
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : septembre 2008
Messages : 124
Points : 181
Points : 181
En fait, ça peut effectivement bien fonctionner : tant que tu affectes à une variable Variant une donnée qui est compatible avec les traitements que tu effectueras ensuite, aucune erreur ne sera générée. Après c'est toujours mieux d'utiliser les types précis par principe et pour l'espace occupé en mémoire.

Pour le
Code :
DoCmd.GoToRecord , , acNewRec
qui bugge, tu peux vérifier que l'ajout de données est bien autorisé dans ton formulaire :
dans les propriétés du formulaire, onglet "Données", propriété "Ajout autorisé".
antoinev2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 13h36   #5
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
La propriété ajout autorisé est bien coché dans mon formulaire comme mes sous formulaire.
Ca enregistre très bien mes je voudrai a la fin que mes champs revienne a vide.
Et c'est la que ca bug.
rob1son76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 14h09   #6
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Bonjour,

Ne suffit-il pas de parcourir les contrôles que tu souhaites mettre à vide ?
Avec genre un For Each sur tous les contrôles, et ensuite tu vérifies le type du contrôle avec TypeOf. En gros (à vue de nez hein...) :

Code :
1
2
3
4
5
6
7
8
9
10
 
Dim CTRL As Control
 
For Each CTRL In Me.Controls
  If TypeOf CTRL Is TextBox Then
     CTRL = ""
  Elseif TypeOf CTRL Is CheckBox Then
     CTRL = False
  Endif
Next
Normalement avec ça, tous tes champs textes seront vidés et tes cases à cocher remises à Faux (je n'ai pas testé donc une erreur peut s'être glissée dans le code ). C'est ce que tu veux..?

PS : merci antoinev2, j'ignorais aussi le problème de déclaration des variables... Je viens de vérifier, tu as parfaitement raison ^^'
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 14h31   #7
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
J'y ai pensé mais dans se cas ca enregistre a vide.
Si je met
Code :
DoCmd.GoToRecord , , acNewRec
avant mon programme ca ne marche pas non plus.
rob1son76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 10h06   #8
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 32
Points : 18
Points : 18
Je n'y connais rien en VBA et ma réponse va peut être paraître simpliste, mais pourquoi ne pas simplement mettre un bouton "enregistrement suivant" auquel tu applique une macro avec action "atteindreEnregistrement" et en argument ";;Nouveau;"

Edit: Oups j'ai oublier le "?" à la fin de ma phrase x)
Rominou28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 11h30   #9
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
je ne peux pas (enfin a ma connaissance) appliquer une macro et un code évènementielle à un bouton.
La macro nouveau enregistrement équivaux en vba à :
Code :
DoCmd.GoToRecord , , acNewRec
rob1son76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 12h37   #10
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 32
Points : 18
Points : 18
Dans les Macros, une action s'intitule "Executer code". Il te suffit d'utiliser cette action à la suite de la première et d'y insérer ton code je pense (à voir hein !).
Rominou28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h30   #11
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
Merci.
Mais ca ne marche pas.
Il n'exécute pas mon code.
Il enregistre seulement.
rob1son76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h41   #12
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Citation:
je ne peux pas (enfin a ma connaissance) appliquer une macro et un code évènementielle à un bouton.
Citation:
Le problème c'est que c'est mon code que je dois exécuter avant la macro.

Si c'est juste ça le problème, tu mets juste à la fin de ton code :
Code :
DoCmd.RunMacro NomDeTaMacro
Et la macro va s'exécuter...
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h50   #13
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
Merci Beub.
mais j'ai un msg d'erreur 2502, l'action requière un argument Nom de macro.
Je ne sais pas ce qu'il veux.
j'ai utilisé le code que tu m'a dis:
Code :
DoCmd.RunMacro (Macro_Nouv_projet)
rob1son76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 14h00   #14
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
Bon j'ai réussit mais j'ai tjs le même msg:

l'opération atteindre l'enregistrement n'est pas disponible pour le moment

Qu'est-ce que je peux faire d'autre,
rob1son76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 14h56   #15
Invité régulier
 
Femme
Inscription : mars 2011
Messages : 52
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 52
Points : 9
Points : 9
je ne sais pas si je peux me permettre de répondre (novice)

mais moi dans mon formulaire
j'ai fait :

Code :
1
2
Me.Refresh
DoCmd.GoToRecord acForm, "nomduformulaire", acNewRec, 1
tout se met en place et est pret pour un nouvel enregistrement
rose0729 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 15h22   #16
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
Bien sur que tu peux te permettre de répondre.
Que l'on soit novice ou pas on peux très bien avoir la réponse.
Malheureusement la tienne ne fonctionne pas. ^^
J'ai tjs le même msg d'erreur.
Mais merci quand même.
rob1son76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 16h07   #17
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Tu devrais peut-être revoir tes requêtes, il y a peut-être une liaison qui entraine une erreur. Il y a tellement de code et de requêtes (et si peu de commentaires...) que je n'ai pas le courage de regarder... 250 lignes pour une fonction, quand même... En VBA, je dépasse jamais les 100 lignes, je m'y perds après

Fin, je doute que la solution vienne à proprement parler du code en lui-même. Si ça plante, c'est parce que quelque chose ne va pas dans tes tables/requêtes (à mon avis... ).
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 16h52   #18
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
Je ne pense pas que le problème vienne de mes tables ou de mes requêtes.
Mais plutôt un problème de mémoire du a mes recordset.
je vais les vider pour voir si ca viens de la.

Et il n'y a pas 250 lignes (enfin je crois lol) et c'est tout le tps la même chose.
Je répète la même opération par table.
Le début de mon code se sert d'une fonction pour parcourir un fichier excel et importer les données.

Et ce n'est pas une fonction mon programme.

mais c'est vrai qu'il n'y a pas de commentaire et donc dur a comprendre.
Même pour moi. lol
rob1son76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 17h42   #19
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut à tous,

Citation:
Envoyé par rob1son76
avant mon programme ca ne marche pas non plus.
Citation:
Envoyé par rob1son76
La propriété ajout autorisé est bien coché dans mon formulaire comme mes sous formulaire.
Citation:
Envoyé par rose0729
Me.Refresh
perso, rien avoir avec le code.
à l'ouverture tu peux ajouter manuellement un nouvel enregistrement?
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 09h13   #20
Membre habitué
 
quentin massé
Inscription : janvier 2010
Messages : 251
Détails du profil
Informations personnelles :
Nom : quentin massé
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2010
Messages : 251
Points : 125
Points : 125
En faite j'ai créé un formulaire (grâce à un code trouver sur le net) à onglet.
Les onglets sont des boutons qui lorsqu'on appuie dessus affecte une source à un sous formulaire situé juste en dessous.
Lorsque je clic sur le bouton correspondant à mon formulaire de saisie, j'arrive effectivement à un nouvelle enregistrement.
Mais je voudrai qu'il se remette à jour directement lorsque j'appuie sur le bouton enregistrer de mon formulaire d'ajout, afin d'éviter des erreurs de manipulation.
rob1son76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h37.


 
 
 
 
Partenaires

Hébergement Web