Bonjour la communauté,
je suis entrain de modifier un code existant qui fonctionne actuellement.
Sauf que ce code fonctionne avec trois requêtes, et vu que ce code ce mets sur un tableau de bord, je souhaite obtenir quelque chose de beaux, donc j'ai effectué un code pour obtenir une phrase correcte qui éliminait les phrases ou le champ est égal à 0.
Ci-dessous le code qui fonctionne :
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 Public Sub InfosChq(TypeAffich As Integer) Dim oDb As DAO.Database Dim oRst As DAO.Recordset Dim StrSynt As String ' variable résultat obtenu. Dim StrNbChq As String ' variable nombre de chèque non encaissé. Dim IntMtChq As Currency ' variable montant total des chèques non encaissés. Dim StrNbChqE As String ' variable nombre de chèque émis non encaissé. Dim IntMtChqE As Currency ' variable montant total des chèques émis non encaissés. Dim StrNbChqSup3M As String ' variable nombre de chèque émis non encaissé. Dim IntMtChqSup3m As Currency ' variable montant total des chèques émis non encaissés. Set oDb = CurrentDb Set oRst = oDb.OpenRecordset("ChqNonEncaisse", dbOpenSnapshot) 'Appel de la réquete ChqNonEncaisse StrNbChq = Nz(oRst.Fields(0), 0) 'Attribue à la variable le résultat de la colonne 1 de la requête ChqNonEncaisse IntMtChq = Nz(oRst.Fields(1), 0) 'Attribue à la variable le résultat de la colonne 2 de la requête ChqNonEncaisse Set oRst = oDb.OpenRecordset("ChqEmis", dbOpenSnapshot) 'Appel de la réquete ChqEmis StrNbChqE = Nz(oRst.Fields(0), 0) 'Attribue à la variable le résultat de la colonne 1 de la requête ChqEmis IntMtChqE = Nz(oRst.Fields(1), 0) 'Attribue à la variable le résultat de la colonne 2 de la requête ChqEmis Set oRst = oDb.OpenRecordset("ChqNonEncaisseSup3mois", dbOpenSnapshot) 'Appel de la réquete ChqEmis StrNbChqSup3M = Nz(oRst.Fields(0), 0) 'Attribue à la variable le résultat de la colonne 1 de la requête ChqEmis IntMtChqSup3m = Nz(oRst.Fields(1), 0) 'Attribue à la variable le résultat de la colonne 2 de la requête ChqEmis Select Case StrNbChq Case Is = 0 'S'il n'y a pas de chèque en attente d'encaissement StrSynt = "Aucun chèque en attente d'encaissement actuellement." Case Is = 1 'S'il n'y a qu'un chèque en attente d'encaissement StrSynt = StrSynt & " - " & StrNbChq & " chèque non encaissé actuellement pour un montant de " & Format(IntMtChq, "Currency") & vbCrLf _ Case Else 'Crée une boucle qui va déterminer les résultats sous la forme : ' - Chèques non encaissé : ' - StrNbChq chèque(s) non encaissé pour un total de IntMtChq à ce jour ' dont StrNbChqE chèque(s) émis pour IntMtChqE. StrSynt = "" While Not oRst.EOF StrSynt = StrSynt & " - " & StrNbChq & " chèques non encaissés actuellement pour un montant total de " & Format(IntMtChq, "Currency") & vbCrLf _ & " dont " & StrNbChqE & " chèques émis pour un solde de " & Format(IntMtChqE, "Currency") & " ." & vbCrLf _ & " Nous avons " & StrNbChqSup3M & " chèques d'un solde de " & Format(IntMtChqSup3m, "Currency") & " qui sont en attente d'encaissement depuis au moins 3 mois." oRst.MoveNext Wend End Select 'Comme Source de la Zone de Texte, mise en place d'un titre + le résultat de la boucle. Select Case TypeAffich Case Is = -1 ''TypeAffich : -1 Pour Zone de texte Form_Menu.TxtChq.ControlSource = _ "=" & """" & StrSynt & """" End Select 'Fermetures des connexions oRst.Close oDb.Close Set oDb = Nothing Set oRst = Nothing End Sub
Donc le but est de développer la partie des "select case" via des If de la façon suivante en français :
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 Si nombre de Chéque Encaissé = O alors Aucun chèque en attente d'ecencaissement actuellement. Sinon Si nombre de Chéque Encaissé = chq emis = chqsup3mois = 1 alors 1 chéque émis de plus de 3 mois en attente d'encaissemnet actuellement Sinon Si nombre de Chéque Encaissé = chqsup3mois = 1 et chq emis = 0 alors 1 chéque reçu de plus de 3 mois en attente de d'encaissement actuellement Sinon Si nombre de Chéque Encaissé = chq emis = 1 et chqsup3mois = 0 alors 1 chéque émis en attente d'encaissement actuellement Sinon Si nombre de Chéque Encaissé = 1 et chq emis = chqsup3mois = 0 alors 1 chéque reçu en attente d'encaissement actuellement Sinon Si nombre de Chéque Encaissé > 1 et chq emis = chqsup3mois = 0 alors X chéques reçus en attente d'encaissement actuellement. Sinon Si nombre de Chéque Encaissé > 1 et chq emis = 1 et chqsup3mois = 0 alors X chéques en attente d'encaissement actuellement dont 1 chèquen émis. Sinon Si nombre de Chéque Encaissé = chq emis > 1 et chqsup3mois = 0 alors X chéques en attente d'encaissement actuellement dont X chèques émis. Sinon Si nombre de Chéque Encaissé > 1 et chq emis = chqsup3mois = 1 alors X chéques non encaissés actuellement dont 1 chèque émis. Nous avons un chèque en attente d'encaissement depuis plus de 3 mois. Sinon Si nombre de Chéque Encaissé = chq emis > 1 et chqsup3mois = 1 alors X chéques non encaissés actuellement dont X chèque émis. Nous avons un chèque en attente d'encaissement depuis plus de 3 mois. Sinon Si nombre de Chéque Encaissé = chq emis = chqsup3mois > 1 alors X chéques non encaissés actuellement dont X chèque émis. Nous avons X chèques en attente d'encaissement depuis plus de 3 mois.
Et en code j'ai mis ceci :
Je voulais savoir si mettre autant de condition est possible dans un codage ?
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 If StrNbChq = O Then StrSynt = "Aucun chèque en attente d'ecencaissement actuellement." Else If StrNbChq = StrNbChqE = StrNbChqSup3M = 1 then StrSynt = "1 chéque émis de plus de 3 mois en attente d'encaissemnet actuellement" Else If StrNbChq = StrNbChqSup3M = 1 AND StrNbChqE = 0 then StrSynt = "1 chéque reçu de plus de 3 mois en attente de d'encaissement actuellement" Else If StrNbChq = StrNbChqE = 1 AND StrNbChqSup3M = 0 then StrSynt = "1 chéque émis en attente d'encaissement actuellement" Else If StrNbChq = 1 AND StrNbChqE = StrNbChqSup3M = 0 then StrSynt = "1 chéque reçu en attente d'encaissement actuellement" Else If StrNbChq > 1 AND StrNbChqE = StrNbChqSup3M = 0 then StrSynt = & IntMtChq & "chéques reçus en attente d'encaissement actuellement." Else If StrNbChq > 1 AND StrNbChqE = 1 AND StrNbChqSup3M = 0 then StrSynt = & IntMtChq & "chéques en attente d'encaissement actuellement dont 1 chèquen émis." Else If StrNbChq = StrNbChqE > 1 AND StrNbChqSup3M = 0 then StrSynt = & IntMtChq & "chéques en attente d'encaissement actuellement dont" & IntMtChqE & "chèques émis." Else If StrNbChq > 1 AND StrNbChqE = StrNbChqSup3M = 1 then StrSynt = & IntMtChq & "chéques non encaissés actuellement dont 1 chèque émis." & vbCrLf _ & "Nous avons un chèque en attente d'encaissement depuis plus de 3 mois." Else If StrNbChq = StrNbChqE > 1 AND StrNbChqSup3M = 1 then StrSynt = & IntMtChq & "chéques non encaissés actuellement dont" & IntMtChqE & "chèque émis." & vbCrLf _ & "Nous avons un chèque en attente d'encaissement depuis plus de 3 mois." Else If StrNbChq = StrNbChqE = StrNbChqSup3M > 1 then StrSynt = & IntMtChq & "chéques non encaissés actuellement dont" & IntMtChqE & "chèque émis." & vbCrLf _ & "Nous avons" & IntMtChqSup3m & "chèques en attente d'encaissement depuis plus de 3 mois." End If End If End If End If End If End If End If End If End If End If End If
Et si oui, est ce que code semble t-il être cohérent, et correct ?
Merci pour les réponses et vos aides que je pourrai obtenir.
Bien cordialement,
Benjamin.
Partager