Excel 2010 : gestion des erreurs sur inputbox

Bonjour le forum,

Dans le cadre d'un développement de projet de stock je n'arrive pas à régler le problème des messages d'erreurs sur une inputbox qui s'affiche une fois saisi "S" (en majuscule) ou "E" (en majuscule) en I3

Je souhaiterai si l'utilisateur appuie sur Echap ou fait une mauvaise manip, que la cellule I3 soit sélectionnée de nouveau et qu'il n' y ait pas de message d'erreur.

J'ai bien essayé avec

if qte = "" then exit sub 

, ou

if qte = "" then range("i3").select

en le placant après

qte = InputBox("Entrer la longueur de la bobine en mètre linéaire")

mais cela ne marche pas

capture

Je vous remercie par avance pour l'aide que vous pourrez m'apporter.

Cordialement

Stéphane

9essai.xlsm (29.03 Ko)

Bonjour

à tester,

On Error Resume Next
deb:
qte = Application.InputBox("Entrer la longueur de la bobine en mètre linéaire", Title:="Nombre", Type:=1)

If qte = "Faux" Then Err.Clear: GoTo deb

Bonjour i20100, le forum,

Je vous remercie pour votre réponse, mais cela ne semble pas marché, j'ai le message "incompatibilité de type.

Cordialement

Stéphane

re,

regarde mon message précédent, j'ai fais une correction.

re, i20100 , le forum,

Merci je n'avais pas vu l'actualisation du message.

J'ai inséré le code à la place de mon inputbox, mais cela ne semble pas fonctionner. je reste bloqué sur saisir la quantité.

capture

Cordialement

stéphane

Bonjour stéphane,

à tester,

On Error Resume Next
deb:
qte = Application.InputBox("Entrer la longueur de la bobine en mètre linéaire", Title:="Nombre", Type:=1)

If qte = "Faux" Then
    Err.Clear: GoTo deb
Else
    'If ...  Then
        '........
    'Else
       '..........
    'End if
End If

Re i20100, le forum,

Cela ne change pas, je reste bloqué sur le message de la saisie de quantité,

Cordialement

Stéphane

Cela ne change pas, je reste bloqué sur le message de la saisie de quantité,

comment as-tu déclaré la variable qte ?

tu as entré quoi dans le InputBox lorsque tu reste bloqué ?

re i20100, le forum,

j'ai déclarer qte ainsi :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim derlig As Long
    Dim qte As Integer
    ...........

Et je saisis une valeur numérique par ex : "6000"

Cordialement

Stéphane

re,

à tester,

Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig As Long
Dim qte As Variant

If Target.Cells.Count > 1 Then Exit Sub

Application.EnableEvents = False

If Not Intersect(Target, [douchette]) Is Nothing Then    ' saisie douchette
    Range("I3").Select
End If

If Not Intersect(Target, Range("I3")) Is Nothing Then    ' saisie entrée ou sortie
    Range("I4").Select

        ' Validation de la longueur de bobine:
Inputbox1:
qte = Application.InputBox("Entrer la longueur de la bobine en mètre linéaire", Title:="Nombre", Type:=1)

If qte = "Faux" Then
    Err.Clear: GoTo Inputbox1
Else
        If Range("i3") = "S" Then
            Range("I4") = qte * -1
        Else
            Range("i4") = qte
        End If
    End If

End If

If Not Intersect(Target, Range("I4")) Is Nothing Then    ' saisie douchette
    derlig = Range("A" & Rows.Count).End(xlUp).Row
    ActiveSheet.Unprotect
    Cells(derlig + 1, 1).Value = [douchette].Value
    Cells(derlig + 1, 2).Value = [douchette].Offset(1, 0).Value
    Cells(derlig + 1, 3).Value = [douchette].Offset(2, 0).Value
    Cells(derlig + 1, 4).Value = [douchette].Offset(3, 0).Value
    '*******
    'Cells(derlig + 1, 5).Value = Fonction recherchev à inserer
    Cells(derlig + 1, 5).Value = WorksheetFunction.VLookup(Cells(derlig + 1, 1), ActiveSheet.Range("A1:g10000"), 5, 0)
    '*********
    Cells(derlig + 1, 6).Value = Cells(derlig + 1, 4).Value * Cells(derlig + 1, 5).Value / 1000
    Cells(derlig + 1, 7).Value = Date

    CommandButton1_Click
     ActiveSheet.Protect
End If
Application.EnableEvents = True
End Sub

re i20100, le forum,

Je te remercie pour le temps que tu consacres à mon problème.

J'ai copié tout le code, cependant que je valide la suite de la macro ne se réalise et pas et si j'annule je reste sur l'inputbox.

Cordialement

Stéphane

i20100, le forum,

J'ai réussi à trouver une solution, grace notamment à ton précédent message ou qté est déclaré en "variant"

Je l'ai déclaré en "String" et modifié un peu le code et visiblement ca fonctionne.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim derlig As Long
    Dim qte As String
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, [douchette]) Is Nothing Then    ' saisie douchette
        Range("I3").Select
    End If
    If Not Intersect(Target, Range("I3")) Is Nothing Then    ' saisie entrée ou sortie
        Range("I4").Select

            ' Validation de la longueur de bobine:
'Inputbox1:
qte = InputBox("Entrer la longueur de la bobine en mètre linéaire")

        If MsgBox("Voulez vous saisir " & qte & " ML ? ", vbCritical + vbYesNo, "Invalide") = vbNo Then
        Exit Sub
        'GoTo Inputbox1
            Else
            If Range("i3") = "S" Then
            Range("I4") = qte * -1
            Else
            Range("i4") = qte
            End If
        End If

End If

Merci beaucoup pour ton aide et du temps que tu y as consacré.

Bonne fin de journée.

Cordialement

stéphane

Rechercher des sujets similaires à "2010 gestion erreurs inputbox"