Probleme VBA On Error

Fermé
VBAbeginner - 11 juil. 2012 à 05:49
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 12 juil. 2012 à 07:02
Bonjour,

j'ai une question sans doute de débutant, mais j'aimerai comprendre.
Dans le programme suivant, si je n'entre pas de chiffres, j'obtiens bien un message d'erreur, mais ensuite le programme s'arrete au lieu de revenir me demander un chiffre (ie il ne revient pas à la ligne theNumber = Inputbox etc..pourquoi ne fait-il pas la boucle?

Sub Myfirstprocedure()
Const dataSheetName = "Kappa" ' name of sheet
Const raiseToPower = 2 ' square the number
Dim theNumber As Integer ' from user
Dim theResult As Integer ' calculated value
On Error Resume Next
theNumber = InputBox("Enter a whole number", "Integer Input", 0)
If Err.Number <> 0 Then
MsgBox "Your Input was not numeric. Please enter an Integer Value", vbOKOnly, "Error"
On Error GoTo 0
Err.Clear
Exit Sub
End If
On Error GoTo 0 ' allows errors to be handled by the system again
theResult = theNumber ^ raiseToPower
Worksheets(dataSheetName).Range("A1") = theResult
MsgBox theNumber & " raised to the power of " & raiseToPower & " = " & theResult
End Sub

J'utilise le Visual Basic editeur d'Excel 2010.


Merci par avance,

D

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
Modifié par michel_m le 11/07/2012 à 07:04
Bonjour,

Il y a plusieurs manières de gérer l'erreur en voici une


Dim flag as boolean

While flag = False   
     On Error Resume Next   
     theNumber = InputBox("Enter a whole number", "Integer Input", 0)   
     If Err.Number <> 0 Then   
          MsgBox "Your Input was not numeric. Please enter an Integer Value", vbOKOnly, "Error"   
          On Error GoTo 0   
      Else   
          flag = True   
     End If   
Wend


Michel
0
VBA beginner
12 juil. 2012 à 05:15
Merci de votre réponse, cela fonctionne effectivement. Juste pour mieux comprendre, pourriez vous me préciser quelle était l'erreur de code?
Merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
12 juil. 2012 à 07:02
Bonjour
Lorsque tu as une erreur, tu demandes la sortie de la procédure par "exit sub"

d'autre part err.clear ne sert à rien puisque on error goto 0 désactive la gestion de l'erreur
If Err.Number <> 0 Then
MsgBox "Your Input was not numeric. Please enter an Integer Value", vbOKOnly, "Error"
On Error GoTo 0
Err.Clear
Exit Sub
End If 


Bonne journée
0