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

[Résolu]
Signaler
Messages postés
18
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
13 février 2011
-
Messages postés
18
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
13 février 2011
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
79
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)
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
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
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Et ma réponse serait la même (débutant ou non, informatique ou pas) à une question mathématique !
Messages postés
18
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
13 février 2011

Merci pour ce bout de code !

J'essaie et je vous tiens au courant.

Désolé pour m'être trompé d'endroit.
Messages postés
18
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
13 février 2011

Nickel !!!

Merci pour tout.