Explication de code source

Signaler
Messages postés
17
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
21 novembre 2009
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Salut.
J'ai trouvé ce bout de code quelque part dans ce site.Et je ne le comprend pas bien.
Quelqu'un pour me l'expliquer s'il vous plaît.


Private Sub Command5_Click()

If Text2 = "Aucun" Then
reponse = MsgBox("Vous devez selectionner un compte", vbInformation, "Attention")
GoTo fin
End If

solde = 0

cpt = 0

exist = "c:\compte\operation" + Form1.Text2 + ".dat"
If Dir(exist) <> "" Then
Open "c:\compte\operation" + Form1.Text2 + ".dat" For Input As #1
Do
cpt = cpt + 1
If EOF(1) Then Exit Do
Input #1, op1
Input #1, op2
Input #1, op3
Input #1, op4
solde = solde + Val(op4)
Loop
Close
End If

If solde >= 0 Then
MsgBox ("Solde créditeur de " + Format(solde, "#####.##") + " €")
Else
MsgBox ("Solde débiteur de " + Format(solde, "#####.##") + " €")
End If

fin:

End Sub

3 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
exemple typique de plein de choses a ne pas faire...

allez, restructuration et explication de texte:

Private Sub Command5_Click()
Dim nSolde As Single
Dim sFichier As String
Dim iFile As Integer
Dim xnOp(3) As Single
If text2.Text = "Aucun" Then
MsgBox "Vous devez selectionner un compte.", vbExclamation, "Pas de compte selectionné"
Else
sFichier = "c:\compte\operation" & text2.Text & ".dat"
If LenB(Dir$(sFichier)) = 0 Then
MsgBox "Le fichier correspondant au compte '" & text2.Text & "' n'a pas été trouvé.", vbExclamation, "Fichier non trouvé"
Else
Open sFichier For Input As #iFile
Do Until EOF(iFile)
Input #1, xnOp
nSolde = nSolde + xnOp(3)
Loop
Close iFile

MsgBox "Solde " & IIf(nSolde >= 0, "créditeur", "débiteur") & " de " & FormatCurrency(nSolde, 2), vbInformation
End If
End If
End Sub

NB: a adapater bien sur pour donner le bon type de donnée au tableau xnOp.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
manque un
iFile = FreeFile
avant le
Open sFichier
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
Private Sub Command5_Click()
'# 1- Code non indenté => peu clair
'# 2- se méfier des propriétés par default. utiliser ici Text2.Text
If Text2 = "Aucun" Then
'# 3- a quoi sert 'reponse' ? Ou est déclarée cette variable ?
'# 4- 'Attention' n'est pas un bon titre de MsgBox, il faut y resumer le message
reponse = MsgBox("Vous devez selectionner un compte", vbInformation, "Attention")
'# 5- un If...Then...Else convient ici, et simplifie la lecture. Au pire, l'instruction 'Exit Sub' existe...
GoTo fin
End If

'# 6- Ces variables son déclarées où ?
solde = 0
cpt = 0

'# 7- On ne fait pas de concaténation en utilisant '+', on utilise '&'
exist = "c:\compte\operation" + Form1.Text2 + ".dat"
If Dir(exist) <> "" Then
'# 8- Pourquoi ne pas réutiliser la variable existe ?
'# 9- dangereux d'utilise #1. utiliser FreeFile
Open "c:\compte\operation" + Form1.Text2 + ".dat" For Input As #1
Do
'# 10- cpt ne sert a rien...
cpt = cpt + 1
If EOF(1) Then Exit Do
Input #1, op1
Input #1, op2
Input #1, op3
Input #1, op4
solde = solde + Val(op4)
Loop
'# 11- cibler le close en y ajoutant le canal de fichier a fermer. sinon, ca ferme tous les fichiers ouverts => source d'erreur
Close
End If

If solde >= 0 Then
MsgBox ("Solde créditeur de " + Format(solde, "#####.##") + " €")
Else
MsgBox ("Solde débiteur de " + Format(solde, "#####.##") + " €")
End If

fin:

End Sub





et pour l'explication de texte....
on ouvre un fichier dat, contenant differents montant.
on cumule ceux de la quatrieme colonne
et on affiche le solde résultant