inputbox, gérer le "cancel" sans planter

  • Initiateur de la discussion Initiateur de la discussion Jimrcl
  • 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 !

J

Jimrcl

Guest
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
 
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
 
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
 
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
 
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
 
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
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour