inputbox, gérer le "cancel" sans planter

Jimrcl

XLDnaute Occasionnel
Bonjour le forum,
j'utilise un peu les inputbox mais je ne gére pas le cancel cad que quand je clic dessus il me demande de déboguer ou de mettre fin.
Quel est la petite ligne à rajouter pour qu'il me fasse sortir gentillement?
Merci beaucoup . :)

Voici le code:
Sub cloturer()
Dim Lignesos As Integer
Lignesos = InputBox('Entrez le numéro de SOS à clôturer', ' NUMERO ???')
Range('W' & Lignesos).Select
End Sub
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

une façon simple qui te ferme ton inputbox quelque soit l'erreur

Sub cloturer()
Dim Lignesos As Integer
On Error GoTo erreur
Lignesos = InputBox('Entrez le numéro de SOS à clôturer', ' NUMERO ???')
Range('W' & Lignesos).Select
erreur:
End Sub

Bon courage
 

Hervé

XLDnaute Barbatruc
Bonjour Jimrcl

Re pascal

Une autre méthode : déclarer lignesos en variant et tester si la valeur renvoyée est de type null.

De plus attention à la sélection possible de la ligne 0, d'ou le double teste dans le code ci-dessous :

Dim Lignesos As Variant
Lignesos = InputBox('Entrez le numéro de SOS à clôturer', ' NUMERO ???')
If Lignesos = '' Or Lignesos = 0 Then Exit Sub

Range('W' & Lignesos).Select

salut
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Allez encore une petite dans le style quand on aime on ne compte pas

Sub cloturer()
Dim Lignesos As String
Lignesos = InputBox('Entrez le numéro de SOS à clôturer', ' NUMERO ???')
If Lignesos = '' Then Exit Sub
On Error GoTo erreur
Lignesos = CInt(Lignesos)
If Lignesos = 0 Or Lignesos > 65536 Then
MsgBox 'Je vais avoir du mal à trouver cette cellule. LOL!!'
Exit Sub
End If
Range('W' & Lignesos).Select
Exit Sub
erreur:
MsgBox 'Vous devez taper un numéro de ligne !!!!'
End Sub

Bon courage
 

Hervé

XLDnaute Barbatruc
re

Ah oui pascal, j'oubliai la limite de 65536 lignes :

Donc, une autre méthode :

Dim Lignesos As Variant
debut:
Lignesos = InputBox('Entrez le numéro de SOS à clôturer', ' NUMERO ???')

Select Case Lignesos
Case '':
Exit Sub
Case Is < 1:
MsgBox 'ben qu'il est trop petit ton chiffre ???', , 'Attention...'
GoTo debut
Case Is > 65536
MsgBox 'ca va pas !!!! y'a que 65536 lignes', , 'Attention...'
GoTo debut
End Select

Range('W' & Lignesos).Select

Pascal, je pense qu'on à fait le tour de cette question, :)

Salut
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour les amis

Pascal et Hervé, vous avez zappé 'Application.InputBox (méthode)' car là je ne vois que cette simple InputBox (fonction)... Et pourtant l'autre InputBox vous aurait bien simplifié la vie...

Moi je connais cette nuance grace à Ti... (comme toujours ! )

Enfin donc la Méthode InputBox permet de renvoyer différentes valeurs selon le type indiqué... Ici ce sont des Valeurs Numériques... Alors ça donne ceci :

Option Explicit

Sub Cloturer()
Dim LigneSos As Long

LigneSos = Application.InputBox('Entrez le numéro de SOS à clôturer', ' NUMERO ???', Type:=1)
&nbsp; &nbsp;
If LigneSos = 0 Or LigneSos > 65536 Then Exit Sub
&nbsp; &nbsp; &nbsp; &nbsp; Range('W' & CInt(LigneSos)).Select
End Sub

Pour les différents Types Disponible pour cette Méthode InputBox :
Value&nbsp; :&nbsp; Meaning
&nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; =&nbsp; A formula
&nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; =&nbsp; A number
&nbsp; &nbsp; 2&nbsp; &nbsp; &nbsp; =&nbsp; Text (a string)
&nbsp; &nbsp; 4&nbsp; &nbsp; &nbsp; =&nbsp; A logical value (True or False)
&nbsp; &nbsp; 8&nbsp; &nbsp; &nbsp; =&nbsp; A cell reference, as a Range object
&nbsp; 16&nbsp; &nbsp; &nbsp; =&nbsp; An error value, such as #N/A
&nbsp; 64&nbsp; &nbsp; &nbsp; =&nbsp; An array of values

Bon Après Midi
@+Thierry
 

Statistiques des forums

Discussions
312 310
Messages
2 087 113
Membres
103 476
dernier inscrit
achref att