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 SubA 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 Subou 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 Subva 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.
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
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 SubAmicalement
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.