Forcer la saisie de nombre vba excel

Résolu/Fermé
nounoursboy Messages postés 1 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 17 avril 2008 - 17 avril 2008 à 14:12
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 18 avril 2008 à 19:36
Bonjour,
Bonjour,

Je fais une petite macro dans excel et j'ai un petit souci...

Je souhaite controler la saisie de ce qui est tapé dans une inputbox.

voici le code qui me permet à l'utilisateur de saisir du "texte" (au sens large cad des nombres egalement) et de mettre cette saisie dans la case A1

Cells(1, 1).Value = InputBox(Message, Title, Default, 100, 100)

Et voici une facon (je doute que ce soit a faire dans mon cas) de vérifier que ce qui est tapé dans une case correspond à uin format choisit ici dans ce cas un nombre décimal compris entre -1000 et +1000

With Cells(1, 1).Validation
.Delete
.Add Type:=xlValidateDecimal, AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween, Formula1:="-1000", Formula2:="1000"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = "Saisisez un nombre"
.ErrorTitle = "ERREUR"
.InputMessage = "Nombre"
.ErrorMessage = "Ceci n'est pas un nombre"
.ShowInput = True
.ShowError = True
End With

Mais cette "validation" ne fonctionne que je tape "manuellement" quelque chose dans la case A1 et donc je peux encore mettre n'importe quoi dans mon inputbox il n'y aura pas d'erreur....

Voilà j'espère avoir été clair, merci pour votre aide....
A voir également:

4 réponses

LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337
17 avril 2008 à 17:26
bonjour

regarde dans l'aide de InputBox : tu peux filtrer le type de valeur saisie

par exemple pour un nombre tu aurais :
MonNombre = Application.InputBox(prompt:="Entrez un nombre", Type:=1)

à plus
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
17 avril 2008 à 21:01
Bonsoir,

il faut que tu boucles sur la saisie tant que les condition ne sont pas respectées.
Par exemple :
Sub test()
    Dim r As String
    r = "999999"
    While CLng(r) > 1000 Or CLng(r) < -1000
        r = InputBox("Message", "Title", Default, 100, 100)
    Wend
    [A1].Value = CLng(r)
End Sub


eric
0
Merci pour ta réponse Lepierre ça marche parfaitement...

Je n'ai pas essayé ta solution eriiic vu que celle d'avant marche mais merci quand même

A+
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
18 avril 2008 à 19:36
Bonsoir,
Poiurquoi avoir demandé 'compris entre -1000 et 1000' alors ?
Par contre en relisant je vois que tu acceptes les nombres décimaux. Dans ce cas remplacer CLng par CDbl, CCur ou CDec
eric
0