INPUTBOX , des chiffres et touche annuler

  • Initiateur de la discussion Initiateur de la discussion bertgrav
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bertgrav

XLDnaute Occasionnel
bonsoir,

je suis plantée....
dans l'exemple qui suit, je veux afficher dans l'inputbox le n° de 1 à 12 (dim as BYTE irait trés bien)
je voudrais si on clique sur annuler sortir de la procédure, mais je ne sais pas pourquoi avec BYTE j'ai une erreur 13 incompatibilité de type

donc je met dim as variant
si j'affiche des lettres : ok ça bloque lors du contrôle suivant (avec le test entre 1 et 12)
mais si je met un chiffre entre 1 et 12 avec une virgule, ça passe mais je bloque plus tard dans le reste de ma procédure

comment faire pour imposer un format entre 1 et 12 sans virgule ?????

MERCI

CHANTAL






Sub a()

Dim mm As variant
suiv2:
mm = InputBox('mois: ', 'mois à planifier', 1) ' indique le mois
If mm = '' Then
Exit Sub
End If

If mm = 0 Then
GoTo suiv1
Else
If mm > 12 Then
suiv1:
MsgBox 'TAPER UN CHIFFRE ENTRE 1 ET 12 POUR LES MOIS !'
GoTo suiv2
Else
MsgBox mm 'pour contrôler ce qui a été tapé
End If
End If

End Sub
 
Bonjour

un petit exemple utilisant la méthode inputbox et non la fonction (on peut préciser le type de données) avec une boucle de vérification.

Cordialement, A+
Code:
Sub exemple()
Dim MM As Single
Do
If Not (MM = 0) Then MsgBox 'un nombre entier entre 1 et 12', vbOKOnly + vbInformation
MM = Application.InputBox(Title:='Mois', prompt:='Mois à planifier', Type:=1)
If MM = 0 Then Exit Sub
Loop Until (MM / 1 = MM \\ 1) And MM > 0 And MM < 13
'code à exécuter
End Sub
 
ps +
n'utiles pas une variable byte, integer ou long car le chiffre entré sera alors arrondi à l'initialisation de la variable et pourra passer le test sans correspondre à ce que voulait l'utilisateur
ex: 11,6 deviendra 12 et passera

A+

Message édité par: yeahou, à: 26/03/2006 20:32
 
je viens d'essayer ton code, ça a l'air de fonctionner trés bien

merci

chantal

p'tite question au passage: pourquoi un inputbox se plante avec un BYTE auquel on demande d'annuler ?
REPRENDRE MON EXEMEPLE EN METTANT
mm as BYTE
et demander l'annulation
 
cela plante car tu utilises la fonction inputbox et non la méthode inputbox, la syntaxe est légérement différente. la fonction inputbox renvoie obligatoirement du texte, quand tu initialises une variable numérique avec du spécifié texte, en l'occurence Faux, qui est renvoyé sur annulation, cela plante (cela aurait peut être pu passer si l'annulation renvoyait false (=0 pour VBA) mais faux ne signifie rien pour VBA).
avec la méthode inputbox, on n'a pas ce problème (elle renvoie 0 sur un type décimal), elle est de plus plus puissante que la fonction puisqu'on peut l'initialiser avec plusieurs types de données
0 Une formule.
1 Un nombre.
2 Texte (une chaîne).
4 Une valeur logique (True ou False).
8 Une référence de cellule, sous la forme d'un objet Range.
16 Une valeur d'erreur, telle que #N/A.
64 Un tableau de valeurs.

pour plus d'info, regardes l'aide visual basic ou tout cela est précisé

Cordialement, A+

Message édité par: yeahou, à: 26/03/2006 21:07
 
Bonsoir

Une autre approche (mais imparfaite)

Sub test()
Dim MOIS
MOIS = InputBox('Indiquez le mois', 'Choix du mois')
Select Case MOIS
Case 1 To 12
[A1] = MOIS 'ici pour l'exemple
Case Else
MsgBox 'Veuillez saisir un chiffre entre 1 et 12'
End
End Select
End Sub
 
Re

Avec une petite amélioration

Sub test2()
Dim MOIS
MOIS = InputBox('Indiquez le mois', 'Choix du mois')
If MOIS = vbNullString Then Exit Sub
Select Case MOIS
Case 1 To 12
[A1] = MOIS 'ici pour l'exemple
Case Else
MsgBox 'Veuillez saisir un chiffre entre 1 et 12'
End Select
End Sub

Message édité par: staple1600, à: 26/03/2006 21:38
 
Re
Encore une petit modif

Sub test3()
Dim MOIS
MOIS = InputBox('Indiquez le mois:' & Chr(13) & Chr(13) _
& '(Saisir un chiffre entre 1 et 12, svp)', 'Choix du mois')
'If MOIS = vbNullString Then Exit Sub
Select Case MOIS
Case 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
[A1] = MOIS 'ici pour l'exemple
Case Else
Exit Sub
End Select
End Sub
 
encore un grand merci

j'ai fini ce que je devais faire, et tout fonctionne trés bien, en cas d'erreur de saisie, je me retrouve soit au début de programme soit en fin en cas d'annulation, aucun message d'erreur.......
que du bonheur

chantal
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
906
  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
358
Réponses
15
Affichages
775
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour