A oui c'est clair, parce que cela ce complique grave la chose
A oui c'est clair, parce que cela ce complique grave la chose
Bonjour Jean Philippe,
Si j'ai bien compris, je fais un module en déclarant ma variable tel que :ou encore :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Option Explicit 'Je déclares une variable de type string 'Est ce que "Public strMaVar As String" serait mieux ? Dim strMaVar As String 'VarRequery() est le nom de la variable Sub VarRequery() 'Affectation de ton code strMaVar = UpdateControl(strFormName As String) If CurrentProject.AllForms(strFormName).IsLoaded Then Forms(strFormName).Requery End If End SubJ'utilise "Dim" car la valeur contenue est supprimée à la fin de la procédure, comme expliques le tuto, mais ce que j'ai pas compris c'est comment j'appelle "strMaVar" dans mon code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub VarRequery() 'Je déclares une variable de type string 'Est ce que "Public strMaVar As String" serait mieux ? Dim strMaVar As String 'Affectation de ton code strMaVar = UpdateControl(strFormName As String) If CurrentProject.AllForms(strFormName).IsLoaded Then Forms(strFormName).Requery End If End Sub
Par ailleurs, dans ton code c'est pas comme si tu déclarais une variable aussi avec "strFormName As String" ?
J'ai essayé mais ça marche pas, il y a encore des choses que je saisis pas
Où est ce que je me trompes ?
Cordialement,
Sylvain
pfffff je suis trop nul je comprends rien à la logique Access, j'ai contourné le pb avecC'est du bidon je l'admet, la facilité, mais ça marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Application.Echo False DoCmd.Close acForm, "FmAccueil" DoCmd.OpenForm "FmAccueil" Application.Echo True DoCmd.Close acForm, Me.Name
Seul soucis c'est que je dois trouver maintenant comment redonner le focus au formulaire de modification, il se met en arrière plan ...
Mais j'ai trouvé d'où venaient les bogues qd je modifiais ou supprimais, les Tb avaient toujours une source, et en même temps le code appelait aussi les sources .. tu vois ce que je veux dire, ça ne provoques plus de doublons et ça ne bogue plus
Bonjour Jean Philippe,
Voilà, quand j'ouvre le formulaire d'ajout et si je le ferme sans rien ajouter il m'ajoute tout de même des lignes vides à la table comment éviter cela ? J'utilise ton code :
Merci d'avance,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub BtnAjout_Click() Dim RS As New ADODB.Recordset Dim strSQL As String strSQL = "SELECT * FROM TbEntree" RS.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic RS.AddNew RS.Fields("DateEntree") = Me.zdtDateEntree RS.Fields("Qte") = Me.zdtQteEntre RS.Fields("PrixLitre") = Me.zdtPrixLitre RS.Update RS.Close DoCmd.Close acForm, Me.Name End Sub
Cordialement,
Sylvain
ton formulaire a un seul bouton dans ce cas ?
il faut soit:
- faire un 2nd bouton avec le Docmd.Close seul
- faire un test de remplissage des controls avant un éventuel ajout
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Oui un seul bouton, le bouton fermer étant celui du formulaire en lui même, tu penses donc qu'il est préférable de mettre un bouton close ??
yes, vu qu'à aucun moment tu ne vérifies ce que ton utilisateur a rentrer comme information, tu dois pouvoir lui laisser la possiblité de quitter le formulaire sans rien ajouter
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
un simple :Suffit ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub BtnFermer_Click() DoCmd.Close acForm, Me.Name End Sub
Ou je remplace tout de même "name" par le nom du formulaire à fermer?
Non non ca suffit.
Par contre, tu dois tout de meme blinder les saisies vides pour ton autre bouton.
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Help
Comment faire ?
Déjà que pour le rafraichissement j'ai du bidouiller, ça marche mais c'est bidouille grave
Sur ton évènement de click bouton, tu passes par un test du style
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 Private Sub BtnAjout_Click() Dim RS As New ADODB.Recordset Dim strSQL As String If Me.zdtQteEntre<>0 and Me.zdtPrixLitre<>0 Then strSQL = "SELECT * FROM TbEntree" RS.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic RS.AddNew RS.Fields("DateEntree") = Me.zdtDateEntree RS.Fields("Qte") = Me.zdtQteEntre RS.Fields("PrixLitre") = Me.zdtPrixLitre RS.Update RS.Close End If DoCmd.Close acForm, Me.Name End Sub
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Et cela pour tous les formulaires d'ajout, évidemment.
Mon rafraichissement je l'ai fait si je te le dit comment tu va être MDR
tout simplement
C'est nul je sais mais j'ai rien compris au module et aux tutos, ils sont très bien les tutos, mais ça s'adresse déjà à qqun qui à qqs connaissances VB, moi j'en suis encore loin
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub Form_Close() Application.Echo False DoCmd.Close acForm, "FmAccueil" DoCmd.OpenForm "FmAccueil" Application.Echo True End Sub
Il faut les lire progressivement, on les a exprès mis par niveau
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
J'imagines, surtout que c'est vrai ils sont très très bien les tutos, mais certains sont qd même assez durs pour un non initié, l'histoire des modules pour faire le requery pas moyens de comprendre franchement
Du coup j'ai bidouillé, ça marche mais c'est chiant cela me remet à chaques fois sur l'onglet même si je suis sur le 2
Bonjour Jean Philippe,
Je ne comprends pas ce qui se passe, j'ai blindé le code pour ne rien ajouté si les champs sont vides, comme tu me l'a dit, sauf que le bouton fermer, lui m'ajoutes des lignes vides qd je ferme ?
Voici mon code en entier pour l'ajout de carburant :
Cordialement,
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 Option Compare Database Private Sub BtnFermer_Click() DoCmd.Close acForm, Me.Name End Sub Private Sub Form_Load() Dim IDEntree As Double IDEntree = Nz(GetParam("IDEntree"), 0) If IDEntree <> 0 Then 'load existing data Me.zdtDateEntree = Nz(DLookup("DateEntree", "TbEntree", "IDEntree=" & IDEntree), Date) Me.zdtQte = Nz(DLookup("Qte", "TbEntree", "IDEntree=" & IDEntree), "") Me.zdtPrixLitre = Nz(DLookup("PrixLitre", "TbEntree", "IDEntree=" & IDEntree), "") Else 'create new one Me.zdtDateEntree = Date Me.zdtQte = "" Me.zdtPrixLitre = "" End If End Sub Private Sub BtnModif_Click() Dim RS As New ADODB.Recordset Dim strSQL As String If Me.zdtQte <> 0 And Me.zdtPrixLitre <> 0 Then Dim IDEntree As Double 'on modifie le mouvement en cours IDEntree = GetParam("IDEntree") strSQL = "SELECT * FROM TbEntree WHERE IDEntree=" & IDEntree RS.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic RS.Fields("DateEntree") = Me.zdtDateEntree RS.Fields("Qte") = Me.zdtQte RS.Fields("PrixLitre") = Me.zdtPrixLitre RS.Update RS.Close Application.Echo False DoCmd.Close acForm, "FmAccueil" DoCmd.OpenForm "FmAccueil" Application.Echo True DoCmd.Close acForm, Me.Name Else If MsgBox("Rien n'a été modifié, voulez vous quittez cette fenêtre tout de même ?", vbYesNo) = vbYes Then DoCmd.Close acForm, Me.Name End If End If End Sub Private Sub BtnSupp_Click() If MsgBox("Etes vous sur de vouloir supprimer?", vbYesNo) = vbYes Then Dim RS As New ADODB.Recordset Dim strSQL As String Dim IDEntree As Double 'on supprime le mouvement en cours IDEntree = GetParam("IDEntree") strSQL = "SELECT * FROM TbEntree Where IDEntree =" & IDEntree RS.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic RS.Delete RS.Close Application.Echo False DoCmd.Close acForm, "FmAccueil" DoCmd.OpenForm "FmAccueil" Application.Echo True DoCmd.Close acForm, Me.Name Else DoCmd.Close acForm, Me.Name End If End Sub
Sylvain
Il faut que ton test de blindage correspondent au moins aux valeurs mises par défaut
si tu les initialises à
alors ton test sera
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Me.zdtQte = "" Me.zdtPrixLitre = ""
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me.zdtQte <>"" and Me.zdtPrixLitre <> ""
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Ahaaa oki ( "" ) à la place de 0
Mais c'est surque cela m'ajoutes des lignes vierges dans la table ? Est-ce normal ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub BtnFermer_Click() DoCmd.Close acForm, Me.Name End Sub
ah non, c'est pas normal, tu es sur de ton coup ?
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager