Code avec de multiple condition SI
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:
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:
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 :
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
| 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 |
Je voulais savoir si mettre autant de condition est possible dans un codage ?
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.