Bonjour,

Je cherche à faire une macro de gestion de budget. Mon code fonctionnait mais je ne sais pas pourquoi il bug.
J'ai une userform qui est rempli, en fonction d'une valeur dans une combobox j'ajoute une ligne dans le bon tableau et copie les données de la userform.

J'ai une erreur de type 31 sur les lignes de code de ce genre :

[Tableau_BNP].Rows([Tableau_BNP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))

Pourriez-vous m'aider à corriger ce bug svp.

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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
 
 
Private Sub CommandButton1_Click()
'Option Compare Text
 
Dim Compte As Variant
Dim LastLine As Integer
 
Compte = (ComboBox_Compte.Value)
 
Select Case Compte
'on ajoute une ligne ddans le bon tableau pour copier les ?lements de la USERFORM
 
    Case "Compte BNP"
        ActiveSheet.ListObjects("Tableau_BNP").ListRows.Add
        LastLine = ActiveSheet.ListObjects("Tableau_BNP").DataBodyRange.Rows.Count
        [Tableau_BNP].Item(LastLine, 1).Select
        If [Tableau_BNP].Item(LastLine, 1) = "" Then
            [Tableau_BNP].Rows([Tableau_BNP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))
            Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
        End If
 
    Case "Compte LBP"
        ActiveSheet.ListObjects("Tableau_LBP").ListRows.Add
        LastLine = ActiveSheet.ListObjects("Tableau_LBP").DataBodyRange.Rows.Count
        [Tableau_LBP].Item(LastLine, 1).Select
        If [Tableau_LBP].Item(LastLine, 1) = "" Then
            [Tableau_LBP].Rows([Tableau_LBP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))
            Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
        End If
 
    Case "CAISSE"
        ActiveSheet.ListObjects("Tableau_CAISSE").ListRows.Add
        LastLine = ActiveSheet.ListObjects("Tableau_CAISSE").DataBodyRange.Rows.Count
        [Tableau_CAISSE].Item(LastLine, 1).Select
        If [Tableau_CAISSE].Item(LastLine, 1) = "" Then
            [Tableau_CAISSE].Rows([Tableau_CAISSE].Rows.Count) = Array(TextBox_Description.Value, TextBox_Montant.Value)
            Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
        End If
End Select
 
If UCase(TextBox_Description.Value) Like "*RETR*" Then
        ActiveSheet.ListObjects("Tableau_CAISSE").ListRows.Add
        LastLine = ActiveSheet.ListObjects("Tableau_CAISSE").DataBodyRange.Rows.Count
        [Tableau_CAISSE].Item(LastLine, 1).Select
        If [Tableau_CAISSE].Item(LastLine, 1) = "" Then
            [Tableau_CAISSE].Rows([Tableau_CAISSE].Rows.Count) = Array(TextBox_Description.Value & " " & ComboBox_Compte.Value & " " & CDate(TextBox_Daate.Value), TextBox_Montant.Value)
            Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
        End If
End If
 
 
' Transfer d'argent entre compte BNP & la poste
 
If ComboBox_Provenance.Value = "Compte BNP" Then
        ActiveSheet.ListObjects("Tableau_BNP").ListRows.Add
        LastLine = ActiveSheet.ListObjects("Tableau_BNP").DataBodyRange.Rows.Count
        '[Tableau_BNP].Item(LastLine, 1).Select
        If [Tableau_BNP].Item(LastLine, 1) = "" Then
            [Tableau_BNP].Rows([Tableau_BNP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))
            Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
        End If
End If
 
 
If ComboBox_Destination.Value = "Compte BNP" Then
        ActiveSheet.ListObjects("Tableau_BNP").ListRows.Add
        LastLine = ActiveSheet.ListObjects("Tableau_BNP").DataBodyRange.Rows.Count
        '[Tableau_BNP].Item(LastLine, 1).Select
        If Tableau_BNP.Item(LastLine, 1) = "" Then
            [Tableau_BNP].Rows([Tableau_BNP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))
            Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
        End If
End If
 
 
If ComboBox_Provenance.Value = "Compte LBP" Then
        ActiveSheet.ListObjects("Tableau_LBP").ListRows.Add
        LastLine = ActiveSheet.ListObjects("Tableau_LBP").DataBodyRange.Rows.Count
        '[Tableau_LBP].Item(LastLine, 1).Select
        If [Tableau_LBP].Item(LastLine, 1) = "" Then
            [Tableau_LBP].Rows([Tableau_LBP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))
            Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
        End If
End If
 
 
If ComboBox_Destination.Value = "Compte LBP" Then
        ActiveSheet.ListObjects("Tableau_LBP").ListRows.Add
        LastLine = ActiveSheet.ListObjects("Tableau_LBP").DataBodyRange.Rows.Count
        '[Tableau_LBP].Item(LastLine, 1).Select
        If [Tableau_LBP].Item(LastLine, 1) = "" Then
            [Tableau_LBP].Rows([Tableau_LBP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))
            Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
        End If
End If
 
 
Unload UserForm1
 
End Sub