Bonjour,
pour un projet je dois faire un code de gestion de dettes. Pour cela j'ai créé une liste déroulante avec le nom des personnes, puis je calcule la dette que devrait avoir la personne. et je souhaiterai que suivant le nom choisi dans la combobox, la case de mon excel en face du nom de la personne en question se mette à jour avec la nouvelle dette calculée.
Mon projet est pour demain.. si quelqu'un pouvais m'aider.. merci.
J'ai mis la partie du userform en entier désolé si c'est long mais je préfère que vous ayez tout pour m'aider..
pour un projet je dois faire un code de gestion de dettes. Pour cela j'ai créé une liste déroulante avec le nom des personnes, puis je calcule la dette que devrait avoir la personne. et je souhaiterai que suivant le nom choisi dans la combobox, la case de mon excel en face du nom de la personne en question se mette à jour avec la nouvelle dette calculée.
Mon projet est pour demain.. si quelqu'un pouvais m'aider.. merci.
J'ai mis la partie du userform en entier désolé si c'est long mais je préfère que vous ayez tout pour m'aider..
VB:
Option Explicit
Dim ws As Worksheet
Dim ligne As Integer
Dim j As Integer
Private Sub CommandButton1_Click()
Interdits.ListBox1.Clear
Dim i As Integer
For i = 3 To 34
If Cells(i, 3).Value > 10 Then
Interdits.ListBox1.AddItem Cells(i, 2).Value
End If
Next
For i = 37 To 67
If Cells(i, 3).Value > 10 Then
Interdits.ListBox1.AddItem Cells(i, 2).Value
End If
Next
For i = 71 To 94
If Cells(i, 3).Value > 10 Then
Interdits.ListBox1.AddItem Cells(i, 2).Value
End If
Next
Dettes.Hide
Interdits.Show
End Sub
Private Sub tb20_Change()
Call checkall
'tbt20.Value = tb20.Value * 0.2
'Call calcul
End Sub
Private Sub tb30_Change()
'tbt30.Value = tb30.Value * 0.3
'Call calcul
Call checkall
End Sub
Private Sub tb50_Change()
'tbt50.Value = tb50.Value * 0.5
'Call calcul
Call checkall
End Sub
Private Sub tb70_Change()
Call checkall
'tbt70.Value = tb70.Value * 0.7
'Call calcul
'Call checkall
End Sub
Private Sub UserForm_Initialize()
tb20.Value = 0
tb30.Value = 0
tb50.Value = 0
tb70.Value = 0
Tbdancien.Value = 0
'initialisation des variables
ligne = 3
'On realise une boucle qui va charger les noms
Do While Cells(ligne, 2).Value <> "" 'Tant qu'il y a des valeurs on continu
Dettes.ComboBox1.AddItem Cells(ligne, 2).Value
ligne = ligne + 1 ' on incremente de 1
Loop
ligne = 37 'on reprend ligne 37 car il y a un blanc entre les noms pour impression
Do While Cells(ligne, 2).Value <> "" 'Tant qu'il y a des valeurs on contnu
Dettes.ComboBox1.AddItem Cells(ligne, 2).Value
ligne = ligne + 1 ' on incremente de 1
Loop
ligne = 71
Do While Cells(ligne, 2).Value <> "" 'Tant qu'il y a des valeurs on contnu
Dettes.ComboBox1.AddItem Cells(ligne, 2).Value
ligne = ligne + 1 ' on incremente de 1
Loop
End Sub
Private Sub tbdancien_Change()
' text box contenant l'ancienne dette
Call checkall
End Sub
Private Sub tbdnew_Change()
'text box contenant la nouvelle dette
End Sub
Sub calcul()
Dim u20 As Long
Dim u30 As Long
Dim u50 As Long
Dim u70 As Long
u20 = CInt(tb20.Value)
u30 = CInt(tb30.Value)
u50 = CInt(tb50.Value)
u70 = CInt(tb70.Value)
tbt20.Value = u20 * 0.2
tbt30.Value = u30 * 0.3
tbt50.Value = u50 * 0.5
tbt70.Value = u70 * 0.7
tbdnew.Value = 1 * Tbdancien.Value + tbt20.Value + 1 * tbt30.Value + tbt50.Value + tbt70.Value
End Sub
Sub checkall()
Dim res As Boolean
res = check(tb20, True)
res = res And check(tb30, True)
res = res And check(tb50, True)
res = res And check(tb70, True)
res = res And check(Tbdancien)
If Not res Then
tbdnew.Value = ""
tbt20.Value = ""
tbt30.Value = ""
tbt50.Value = ""
tbt70.Value = ""
Else
Call calcul
End If
End Sub
Function check(obj As MSForms.TextBox, Optional negatif As Boolean = False) As Boolean
Dim val As Integer
On Error GoTo traiteErreur
val = CInt(obj.Value)
negatif = CInt(obj.Value)
On Error GoTo 0
If val = 1245987.2 And negatif > 0 Then ' on choisis une valeur qui peut etre difficilement utilisé par l'utilisateur
check = False
obj.BackColor = RGB(255, 200, 200)
obj.ControlTipText = "La valeur doit être non nulle"
Else
check = True
obj.BackColor = RGB(255, 255, 255)
obj.ControlTipText = ""
End If
Exit Function
traiteErreur:
check = False
obj.BackColor = RGB(255, 200, 200)
obj.ControlTipText = "La valeur doit être un entier valide"
End Function