[Déplacé .Net --> VBA] Erreur de type Dépassement de capacité

Résolu
olidef Messages postés 18 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 13 février 2011 - 28 oct. 2009 à 14:08
olidef Messages postés 18 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 13 février 2011 - 29 oct. 2009 à 13:33
Bonjour,

Je débute dans la programmation sous VBA Excel (2003).

Je viens de créer une application, grâce à vos précieux conseils.

Il reste tout de même un bug au niveau du CommandButton : Lorsque Textbox1 et Textbox2 sont alimentés, tout va bien, le résultat sort.

Par contre, si les champs sont laissés vides ou égaux à 0, alors j'ai une erreur "Dépassement de capacité".

Que puis-je faire pour régler ce problème ?

Le code en question, en gras, la ligne qui semble produire l'erreur.


Public CustomProperties As UFCustomproperties


Private Sub CommandButton1_Click()

Dim complement As Integer
Dim montantdecalage As Integer
Dim demismic As Integer
Dim Contenu As String

demismic = 1337.75 / 2
complement = Round((Val(TextBox1.Value) / (Val(TextBox3.Value))) * 0.4, 0)

montantdecalage = Round((30 - complement) * 14.96, 0)

Contenu = "Le D.E. touchera " & 448.8 + Val(TextBox1.Value) & " euros brut pendant les 3 premiers mois." & vbNewLine & " A partir du 4eme mois, il touchera la prime de 1 000 euros et une prime forfaitaire mensuelle de 150 euros soit " & Val(TextBox1.Value) + 150 & " euros."

If Val(TextBox2.Value) >= 78 Then MsgBox Contenu Else proportionnel

End Sub


Private Sub Label2_Click()

End Sub

Private Sub TextBox1_Change()

Private Sub TextBox2_Change()

End Sub

Private Sub TextBox3_Change()

End Sub
Private Sub proportionnel()
Dim decalage1 As Integer
Dim decalage2 As Integer
Dim complement1 As Integer
Dim complement2 As Integer


decalage1 = ((Val(TextBox1.Value) - (1337.75 / 2)) / Val(TextBox3.Value)) * 0.4
decalage2 = ((Val(TextBox1.Value) / Val(TextBox2.Value))) * 0.4
complement1 = (30 - decalage1) * Val(TextBox3.Value)
complement2 = (30 - decalage2) * Val(TextBox3.Value)

If Val(TextBox1.Value) <= (1337.75 / 2) Then MsgBox ("cumul intégral pendant 6 mois puis " & Val(TextBox1.Value + complement2) & " euros jusqu'au 12eme mois ou 750 heures") Else MsgBox ("Le D.E. touchera " & Val(TextBox1.Value) + complement1 & " euros. A partir du 7eme mois il touchera " & Val(TextBox1.Value + complement2) & " euros jusqu'au 12eme mois ou 750 heures")


End Sub

Private Sub UserForm_Activate()
Set CustomProperties = New UFCustomproperties
Me.CustomProperties.Initialisation Me.CustomProperties.FullSizing
Me.Left = Me.Left + 1
Me.Left = Me.Left - 1
End Sub

Public Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim reponse As Integer
Cancel = True
code = InputBox(prompt:="Mot de passe : ")
If code = "TOTO" Then
Application.Visible = True
Unload UserForm1
UserForm1.Hide
Else: ActiveWorkbook.Saved = True
Application.Quit
End If
End Sub

5 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
28 oct. 2009 à 16:20
Il te faut donc tester si la valeur d'un diviseur n'est pas nulle avant de faire des opérations avec, exemple :
If Val(maTextBox.Value) = 0 Then
  MsgBox "Saisissez une valeur dans maTextBox"
ElseIf Val(maDeuxièmeTextBox.Value) = 0 Then
  MsgBox "Saisissez une valeur dans maDeuxièmeTextBox"
Else
  MsgBox "Résultat " & CStr(Val(maTextBox) / Val(maDeuxièmeTextBox.Value))
End If

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 7
28 oct. 2009 à 14:15
Bonjour,

1) du VB.net (la présente section du forum) ?
Certainement pas ! C'est du VB6
2) je vais dans ce cas me contenter d'un seul indice (aussi énorme qu'un éléphant) : la division par zéro conduit à l'infini
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 7
28 oct. 2009 à 14:18
Et ma réponse serait la même (débutant ou non, informatique ou pas) à une question mathématique !
0
olidef Messages postés 18 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 13 février 2011
28 oct. 2009 à 18:53
Merci pour ce bout de code !

J'essaie et je vous tiens au courant.

Désolé pour m'être trompé d'endroit.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
olidef Messages postés 18 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 13 février 2011
29 oct. 2009 à 13:33
Nickel !!!

Merci pour tout.
0