Retour à une InputBox au travers d'une MsgBox

Bonjour,

J'ai créé un fichier qui n'a pas d'autre prétention que de faire des essais.

Comment faudrait-il modifier mon code afin qu'une entrée erronée dans la InputBox (c'est à dire une entrée non numérique) soit indiquée comme telle par la MsgBox mise en place - comme c'est le cas actuellement - mais que l'utilisateur puisse reprendre sa saisie dans la InputBox au lieu d'être simplement jeté comme il l'est actuellement ?

Je joins mon code et mon fichier :

Sub Placer_Chiffre()
Dim LigFin As Long, LigneVide As Integer, LigneVide2 As Integer, Chiffre As String

    Chiffre = InputBox("Chiffre à placer à la suite dans la colonne A", "TitreXxxx")
    If IsNumeric(Chiffre) Then
            LigFin = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
                If Range("A1") = "" Then LigneVide = 1 Else LigneVide = LigFin + 1
            LigneVide2 = LigneVide + 1
            Range("A" & LigneVide).Select
            ActiveCell = Chiffre
            Range("A" & LigneVide2).Select
        Else
        MsgBox "Le texte entré n'est pas un chiffre"
    End If

End Sub

A vous relire.

tu peux le faire avec un goto:

Sub Placer_Chiffre()

    Dim LigFin As Long, LigneVide As Integer, LigneVide2 As Integer, Chiffre As String

Debut:
    Chiffre = InputBox("Chiffre à placer à la suite dans la colonne A", "TitreXxxx")
    If IsNumeric(Chiffre) Then
            LigFin = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
                If Range("A1") = "" Then LigneVide = 1 Else LigneVide = LigFin + 1 'ligne de code nécessaire car la ligne 1 peut être vide
            LigneVide2 = LigneVide + 1
            Range("A" & LigneVide).Select
            ActiveCell = Chiffre
            Range("A" & LigneVide2).Select
    Else
        'Pour pouvoir sortir sur cancel
        If Not Chiffre = "" Then
            MsgBox "Le texte entré n'est pas un chiffre"
            GoTo Debut
        End If
    End If

End Sub

ou une autre solution avec application.inputbox où tu peux déterminer le type de donnée accepté:

Sub Placer_Chiffre()
    Dim LigFin As Long, LigneVide As Integer, LigneVide2 As Integer, Chiffre As String

    Chiffre = Application.InputBox("Chiffre à placer à la suite dans la colonne A", "TitreXxxx", Type:=1)
    If Not Chiffre = "Faux" Then
            LigFin = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
                If Range("A1") = "" Then LigneVide = 1 Else LigneVide = LigFin + 1 'ligne de code nécessaire car la ligne 1 peut être vide
            LigneVide2 = LigneVide + 1
            Range("A" & LigneVide).Select
            ActiveCell = Chiffre
            Range("A" & LigneVide2).Select
    End If

End Sub

va voir dans l'aide pour tes types possible

Salut Math,

Je te remercie infiniment pour tes réponses. Je n'ai pas le temps de les tester avant la semaine prochaine, mais je ne manquerai pas de t'informer de mes observations.

A la prochaine.

Bonsoir à tous,

à tester

Sub essai()
Dim Rep
    Do
        Rep = Application.InputBox("Chiffre à placer à la suite dans la colonne A" _
        , "Prix vendu", 0, Type:=1)
        If Rep = False Then Exit Sub  'bouton  Annuler
    Loop While Rep = ""
        Range("A65536").End(xlUp)(2) = Rep
End Sub

Amicalement

Claude

Un tout grand merci Math et Claude pour vos propositions ; toutes fonctionnent à merveilles.

Et en plus j'ai (re)découvert l'aide grâce au conseil de Math.

Merci encore et bonnes salutations.

Rechercher des sujets similaires à "retour inputbox travers msgbox"