Bonsoir à tous,
je démarre dans vba, et je rencontre quelques difficultés :
je n'arrive pas à récupérer le montant quand celui a une valeur décimale négative. Vous trouverez ci-après une partie de mon code. Peut-être est ce dû au contrôle que je fais dans TxtMontant_Change(), où je veux saisir uniquement des chiffres et le "." pour les décimales

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
If FrmEncoder.CmbTypes = "Dépenses" Then
 
ActiveCell.Offset(0, 1).Value = FrmEncoder.CmbTypes.Value
ActiveCell.Offset(0, 2).Value = FrmEncoder.CmbCharges.Value
ActiveCell.Offset(0, 3).Value = FrmEncoder.CmbIntitules
ActiveCell.Offset(0, 4).Value = FrmEncoder.CmbDetails.Value
'ActiveCell.Offset(0, 5).Value = val(FrmEncoder.TxtMontant)
ActiveCell.Offset(0, 5).Value = -FrmEncoder.TxtMontant.Value
ActiveCell.Offset(0, 5).NumberFormat = "#,##0.00 €"
ActiveCell.Offset(0, 6).Value = FrmEncoder.CmbEtat.Value
ActiveSheet.Columns.AutoFit
Else
 
ActiveCell.Offset(0, 1).Value = FrmEncoder.CmbTypes.Value
ActiveCell.Offset(0, 2).Value = ""
ActiveCell.Offset(0, 3).Value = FrmEncoder.CmbIntitules
ActiveCell.Offset(0, 4).Value = FrmEncoder.CmbDetails.Value
'ActiveCell.Offset(0, 5).Value = val(FrmEncoder.TxtMontant)
ActiveCell.Offset(0, 5).Value = FrmEncoder.TxtMontant.Value
ActiveCell.Offset(0, 5).NumberFormat = "#,##0.00 €"
ActiveCell.Offset(0, 6).Value = FrmEncoder.CmbEtat.Value
ActiveSheet.Columns.AutoFit
End If
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Private Sub TxtMontant_Change()
On Error Resume Next
If Not IsNumeric(Right(TxtMontant, 1)) And Right(TxtMontant, 1) <> "." Then
        TxtMontant = Left(TxtMontant, Len(TxtMontant) - 1)
        End If
End If
End Sub
Ensuite, je souhaite calculer la somme de la colonne "montant" dont voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
colonne = 0
colonne = ActiveCell.SpecialCells(xlLastCell).Row
 
For i = 8 To colonne
résultat = résultat + Range("f" & i).Value
Next
MsgBox résultat