Application.Inputbox problème de traitement du bouton annuler
18 réponses
Brunos
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage de
cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique sur
annuler.
Un exemple (tiré de
http://boisgontierjacques.free.fr/pages_site/inpubox.htm)
Sub saisie_adresse()
Set monchamp = Application.InputBox(prompt:="Choisissez un champ",
Type:=8)
For Each i In monchamp
i.Value = UCase(i.Value)
Next i
End Sub
Quand on clique sur le bouton Annuler on a une erreur 13 incompatibilité de
type.
C'est logique puisque la valeur renvoyée est False, alors que le type est
Range.
Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à traiter
l'erreur.
Sub saisie_adresse() debut: Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) Select Case TypeName(Saisie) Case "Boolean" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Variant()" For Each i In Saisie i.Value = UCase(i.Value) Next i End Select End Sub
isabelle
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage de cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique sur annuler.
Un exemple (tiré de http://boisgontierjacques.free.fr/pages_site/inpubox.htm) Sub saisie_adresse() Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) For Each i In monchamp i.Value = UCase(i.Value) Next i End Sub
Quand on clique sur le bouton Annuler on a une erreur 13 incompatibilité de type. C'est logique puisque la valeur renvoyée est False, alors que le type est Range. Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à traiter l'erreur.
Merci de vos éclairages Brunos
bonjour Bruno,
Sub saisie_adresse()
debut:
Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8)
Select Case TypeName(Saisie)
Case "Boolean"
MsgBox "Vous devez sélectionner une plage"
GoTo debut
Case "Variant()"
For Each i In Saisie
i.Value = UCase(i.Value)
Next i
End Select
End Sub
isabelle
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage de
cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique sur
annuler.
Un exemple (tiré de
http://boisgontierjacques.free.fr/pages_site/inpubox.htm)
Sub saisie_adresse()
Set monchamp = Application.InputBox(prompt:="Choisissez un champ",
Type:=8)
For Each i In monchamp
i.Value = UCase(i.Value)
Next i
End Sub
Quand on clique sur le bouton Annuler on a une erreur 13 incompatibilité de
type.
C'est logique puisque la valeur renvoyée est False, alors que le type est
Range.
Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à traiter
l'erreur.
Sub saisie_adresse() debut: Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) Select Case TypeName(Saisie) Case "Boolean" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Variant()" For Each i In Saisie i.Value = UCase(i.Value) Next i End Select End Sub
isabelle
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage de cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique sur annuler.
Un exemple (tiré de http://boisgontierjacques.free.fr/pages_site/inpubox.htm) Sub saisie_adresse() Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) For Each i In monchamp i.Value = UCase(i.Value) Next i End Sub
Quand on clique sur le bouton Annuler on a une erreur 13 incompatibilité de type. C'est logique puisque la valeur renvoyée est False, alors que le type est Range. Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à traiter l'erreur.
Merci de vos éclairages Brunos
isabelle
correction pour traiter les objet range,
Sub saisie_adresse() On Error Resume Next debut: Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) If Err > 0 Then On Error GoTo 0 x = TypeName(Saisie) Select Case x Case "Empty" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Range" For Each i In Saisie i.Value = UCase(i.Value) Next i End Select End Sub
isabelle
bonjour Bruno,
Sub saisie_adresse() debut: Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) Select Case TypeName(Saisie) Case "Boolean" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Variant()" For Each i In Saisie i.Value = UCase(i.Value) Next i End Select End Sub
isabelle
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage de cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique sur annuler.
Un exemple (tiré de http://boisgontierjacques.free.fr/pages_site/inpubox.htm) Sub saisie_adresse() Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) For Each i In monchamp i.Value = UCase(i.Value) Next i End Sub
Quand on clique sur le bouton Annuler on a une erreur 13 incompatibilité de type. C'est logique puisque la valeur renvoyée est False, alors que le type est Range. Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à traiter l'erreur.
Merci de vos éclairages Brunos
correction pour traiter les objet range,
Sub saisie_adresse()
On Error Resume Next
debut:
Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8)
If Err > 0 Then On Error GoTo 0
x = TypeName(Saisie)
Select Case x
Case "Empty"
MsgBox "Vous devez sélectionner une plage"
GoTo debut
Case "Range"
For Each i In Saisie
i.Value = UCase(i.Value)
Next i
End Select
End Sub
isabelle
bonjour Bruno,
Sub saisie_adresse()
debut:
Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8)
Select Case TypeName(Saisie)
Case "Boolean"
MsgBox "Vous devez sélectionner une plage"
GoTo debut
Case "Variant()"
For Each i In Saisie
i.Value = UCase(i.Value)
Next i
End Select
End Sub
isabelle
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage
de cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique
sur annuler.
Un exemple (tiré de
http://boisgontierjacques.free.fr/pages_site/inpubox.htm)
Sub saisie_adresse()
Set monchamp = Application.InputBox(prompt:="Choisissez un champ",
Type:=8)
For Each i In monchamp
i.Value = UCase(i.Value)
Next i
End Sub
Quand on clique sur le bouton Annuler on a une erreur 13
incompatibilité de type.
C'est logique puisque la valeur renvoyée est False, alors que le type
est Range.
Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à
traiter l'erreur.
Sub saisie_adresse() On Error Resume Next debut: Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) If Err > 0 Then On Error GoTo 0 x = TypeName(Saisie) Select Case x Case "Empty" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Range" For Each i In Saisie i.Value = UCase(i.Value) Next i End Select End Sub
isabelle
bonjour Bruno,
Sub saisie_adresse() debut: Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) Select Case TypeName(Saisie) Case "Boolean" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Variant()" For Each i In Saisie i.Value = UCase(i.Value) Next i End Select End Sub
isabelle
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage de cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique sur annuler.
Un exemple (tiré de http://boisgontierjacques.free.fr/pages_site/inpubox.htm) Sub saisie_adresse() Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) For Each i In monchamp i.Value = UCase(i.Value) Next i End Sub
Quand on clique sur le bouton Annuler on a une erreur 13 incompatibilité de type. C'est logique puisque la valeur renvoyée est False, alors que le type est Range. Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à traiter l'erreur.
Merci de vos éclairages Brunos
Brunos
Bonsoir Isabelle Ton code marche pour le cas ou on clique sur annuler, mais le reste ne fonctionne pas. Saisie n'est pas considéré comme une plage. Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à creuser là. Bruno
"isabelle" a écrit dans le message de news:
bonjour Bruno,
Sub saisie_adresse() debut: Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) Select Case TypeName(Saisie) Case "Boolean" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Variant()" For Each i In Saisie i.Value = UCase(i.Value) Next i End Select End Sub
isabelle
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage de cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique sur annuler.
Un exemple (tiré de http://boisgontierjacques.free.fr/pages_site/inpubox.htm) Sub saisie_adresse() Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) For Each i In monchamp i.Value = UCase(i.Value) Next i End Sub
Quand on clique sur le bouton Annuler on a une erreur 13 incompatibilité de type. C'est logique puisque la valeur renvoyée est False, alors que le type est Range. Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à traiter l'erreur.
Merci de vos éclairages Brunos
Bonsoir Isabelle
Ton code marche pour le cas ou on clique sur annuler, mais le reste ne
fonctionne pas.
Saisie n'est pas considéré comme une plage.
Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à
creuser là.
Bruno
"isabelle" <i@v> a écrit dans le message de news:
O7Yugm5VIHA.5348@TK2MSFTNGP03.phx.gbl...
bonjour Bruno,
Sub saisie_adresse()
debut:
Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8)
Select Case TypeName(Saisie)
Case "Boolean"
MsgBox "Vous devez sélectionner une plage"
GoTo debut
Case "Variant()"
For Each i In Saisie
i.Value = UCase(i.Value)
Next i
End Select
End Sub
isabelle
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage de
cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique sur
annuler.
Un exemple (tiré de
http://boisgontierjacques.free.fr/pages_site/inpubox.htm)
Sub saisie_adresse()
Set monchamp = Application.InputBox(prompt:="Choisissez un champ",
Type:=8)
For Each i In monchamp
i.Value = UCase(i.Value)
Next i
End Sub
Quand on clique sur le bouton Annuler on a une erreur 13 incompatibilité
de type.
C'est logique puisque la valeur renvoyée est False, alors que le type est
Range.
Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à traiter
l'erreur.
Bonsoir Isabelle Ton code marche pour le cas ou on clique sur annuler, mais le reste ne fonctionne pas. Saisie n'est pas considéré comme une plage. Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à creuser là. Bruno
"isabelle" a écrit dans le message de news:
bonjour Bruno,
Sub saisie_adresse() debut: Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) Select Case TypeName(Saisie) Case "Boolean" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Variant()" For Each i In Saisie i.Value = UCase(i.Value) Next i End Select End Sub
isabelle
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage de cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique sur annuler.
Un exemple (tiré de http://boisgontierjacques.free.fr/pages_site/inpubox.htm) Sub saisie_adresse() Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) For Each i In monchamp i.Value = UCase(i.Value) Next i End Sub
Quand on clique sur le bouton Annuler on a une erreur 13 incompatibilité de type. C'est logique puisque la valeur renvoyée est False, alors que le type est Range. Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à traiter l'erreur.
Merci de vos éclairages Brunos
isabelle
Bonsoir Isabelle Ton code marche pour le cas ou on clique sur annuler, mais le reste ne fonctionne pas. Saisie n'est pas considéré comme une plage. Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à creuser là.
oui, mais difficile de traiter les objets range avec "Set" sans "On Error",
Sub saisie_adresse() On Error Resume Next debut: Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) If Err > 0 Then: Err.Clear: On Error GoTo 0 'claire et annule On Error x = TypeName(Saisie) Select Case x Case "Empty" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Range" For Each i In Saisie MsgBox i.Address & " = " & i Next i End Select End Sub
isabelle
Bonsoir Isabelle
Ton code marche pour le cas ou on clique sur annuler, mais le reste ne
fonctionne pas.
Saisie n'est pas considéré comme une plage.
Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à
creuser là.
oui, mais difficile de traiter les objets range avec "Set" sans "On Error",
Sub saisie_adresse()
On Error Resume Next
debut:
Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8)
If Err > 0 Then: Err.Clear: On Error GoTo 0 'claire et annule On Error
x = TypeName(Saisie)
Select Case x
Case "Empty"
MsgBox "Vous devez sélectionner une plage"
GoTo debut
Case "Range"
For Each i In Saisie
MsgBox i.Address & " = " & i
Next i
End Select
End Sub
Bonsoir Isabelle Ton code marche pour le cas ou on clique sur annuler, mais le reste ne fonctionne pas. Saisie n'est pas considéré comme une plage. Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à creuser là.
oui, mais difficile de traiter les objets range avec "Set" sans "On Error",
Sub saisie_adresse() On Error Resume Next debut: Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) If Err > 0 Then: Err.Clear: On Error GoTo 0 'claire et annule On Error x = TypeName(Saisie) Select Case x Case "Empty" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Range" For Each i In Saisie MsgBox i.Address & " = " & i Next i End Select End Sub
isabelle
Brunos
Joli, l'idée est bien creusée ! Brunos
"isabelle" a écrit dans le message de news:
Bonsoir Isabelle Ton code marche pour le cas ou on clique sur annuler, mais le reste ne fonctionne pas. Saisie n'est pas considéré comme une plage. Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à creuser là.
oui, mais difficile de traiter les objets range avec "Set" sans "On Error",
Sub saisie_adresse() On Error Resume Next debut: Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) If Err > 0 Then: Err.Clear: On Error GoTo 0 'claire et annule On Error x = TypeName(Saisie) Select Case x Case "Empty" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Range" For Each i In Saisie MsgBox i.Address & " = " & i Next i End Select End Sub
isabelle
Joli, l'idée est bien creusée !
Brunos
"isabelle" <i@v> a écrit dans le message de news:
uI58od6VIHA.1164@TK2MSFTNGP02.phx.gbl...
Bonsoir Isabelle
Ton code marche pour le cas ou on clique sur annuler, mais le reste ne
fonctionne pas.
Saisie n'est pas considéré comme une plage.
Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à
creuser là.
oui, mais difficile de traiter les objets range avec "Set" sans "On
Error",
Sub saisie_adresse()
On Error Resume Next
debut:
Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8)
If Err > 0 Then: Err.Clear: On Error GoTo 0 'claire et annule On Error
x = TypeName(Saisie)
Select Case x
Case "Empty"
MsgBox "Vous devez sélectionner une plage"
GoTo debut
Case "Range"
For Each i In Saisie
MsgBox i.Address & " = " & i
Next i
End Select
End Sub
Bonsoir Isabelle Ton code marche pour le cas ou on clique sur annuler, mais le reste ne fonctionne pas. Saisie n'est pas considéré comme une plage. Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à creuser là.
oui, mais difficile de traiter les objets range avec "Set" sans "On Error",
Sub saisie_adresse() On Error Resume Next debut: Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) If Err > 0 Then: Err.Clear: On Error GoTo 0 'claire et annule On Error x = TypeName(Saisie) Select Case x Case "Empty" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Range" For Each i In Saisie MsgBox i.Address & " = " & i Next i End Select End Sub
isabelle
papou
Bonjour
Finalement tu vas arriver avec une syntaxe plus longue et fastidieuse qu'une simple gestion d'erreur claire et efficace. Ca ne te fait pas réfléchir ?
Cordialement Pascal
"Brunos" a écrit dans le message de news:
Joli, l'idée est bien creusée ! Brunos
"isabelle" a écrit dans le message de news:
Bonsoir Isabelle Ton code marche pour le cas ou on clique sur annuler, mais le reste ne fonctionne pas. Saisie n'est pas considéré comme une plage. Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à creuser là.
oui, mais difficile de traiter les objets range avec "Set" sans "On Error",
Sub saisie_adresse() On Error Resume Next debut: Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) If Err > 0 Then: Err.Clear: On Error GoTo 0 'claire et annule On Error x = TypeName(Saisie) Select Case x Case "Empty" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Range" For Each i In Saisie MsgBox i.Address & " = " & i Next i End Select End Sub
isabelle
Bonjour
Finalement tu vas arriver avec une syntaxe plus longue et fastidieuse qu'une
simple gestion d'erreur claire et efficace.
Ca ne te fait pas réfléchir ?
Cordialement
Pascal
"Brunos" <pasdemail@moi.mezig> a écrit dans le message de news:
O7okpL8VIHA.4712@TK2MSFTNGP04.phx.gbl...
Joli, l'idée est bien creusée !
Brunos
"isabelle" <i@v> a écrit dans le message de news:
uI58od6VIHA.1164@TK2MSFTNGP02.phx.gbl...
Bonsoir Isabelle
Ton code marche pour le cas ou on clique sur annuler, mais le reste ne
fonctionne pas.
Saisie n'est pas considéré comme une plage.
Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à
creuser là.
oui, mais difficile de traiter les objets range avec "Set" sans "On
Error",
Sub saisie_adresse()
On Error Resume Next
debut:
Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8)
If Err > 0 Then: Err.Clear: On Error GoTo 0 'claire et annule On Error
x = TypeName(Saisie)
Select Case x
Case "Empty"
MsgBox "Vous devez sélectionner une plage"
GoTo debut
Case "Range"
For Each i In Saisie
MsgBox i.Address & " = " & i
Next i
End Select
End Sub
Finalement tu vas arriver avec une syntaxe plus longue et fastidieuse qu'une simple gestion d'erreur claire et efficace. Ca ne te fait pas réfléchir ?
Cordialement Pascal
"Brunos" a écrit dans le message de news:
Joli, l'idée est bien creusée ! Brunos
"isabelle" a écrit dans le message de news:
Bonsoir Isabelle Ton code marche pour le cas ou on clique sur annuler, mais le reste ne fonctionne pas. Saisie n'est pas considéré comme une plage. Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à creuser là.
oui, mais difficile de traiter les objets range avec "Set" sans "On Error",
Sub saisie_adresse() On Error Resume Next debut: Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) If Err > 0 Then: Err.Clear: On Error GoTo 0 'claire et annule On Error x = TypeName(Saisie) Select Case x Case "Empty" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Range" For Each i In Saisie MsgBox i.Address & " = " & i Next i End Select End Sub
isabelle
FFO
Rebonjours Brunos
Ta remarque suite à ma propsition ma suggéré cette parade :
On Error Resume Next Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) If monchamp <> "" Then For Each i In monchamp i.Value = UCase(i.Value) Next i MsgBox "test" End If
Et là "test" n'apparait que si on a saisie une cellule et que celle-ci n'est pas vide
Je pense que c'est un bon compromis
Qu'en penses tu ????
Merci de vous décarcasser.
Papou : merci pour ton exemple de gestion de l'erreur, mais j'aurais voulu éviter d'en arriver là.
FFO : On Error Resume Next marche parceque la suite du traitement s'appuie sur monchamp qui est vide, mais si je rajoute autre chose à la suite, ça s'exécute. Exemple : On Error Resume Next Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) For Each i In monchamp i.Value = UCase(i.Value) Next i MsgBox "test" "test" s'affiche quand on clique sur Annuler.
Il doit bien y avoir une solution !?
Brunos
"FFO" a écrit dans le message de news:
Rebonjour Brunos
Ma proposition si elle résoud ta difficulté ne permet pas de fonctionner pour une saisie normale
Mille excuses
Essaies plutôt :
On Error Resume Next Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) For Each i In monchamp i.Value = UCase(i.Value) Next i
J'espère que la !!!!!
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage de cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique sur annuler.
Un exemple (tiré de http://boisgontierjacques.free.fr/pages_site/inpubox.htm) Sub saisie_adresse() Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) For Each i In monchamp i.Value = UCase(i.Value) Next i End Sub
Quand on clique sur le bouton Annuler on a une erreur 13 incompatibilité de type. C'est logique puisque la valeur renvoyée est False, alors que le type est Range. Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à traiter l'erreur.
Merci de vos éclairages Brunos
Rebonjours Brunos
Ta remarque suite à ma propsition ma suggéré cette parade :
On Error Resume Next
Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8)
If monchamp <> "" Then
For Each i In monchamp
i.Value = UCase(i.Value)
Next i
MsgBox "test"
End If
Et là "test" n'apparait que si on a saisie une cellule et que celle-ci n'est
pas vide
Je pense que c'est un bon compromis
Qu'en penses tu ????
Merci de vous décarcasser.
Papou : merci pour ton exemple de gestion de l'erreur, mais j'aurais voulu
éviter d'en arriver là.
FFO : On Error Resume Next marche parceque la suite du traitement s'appuie
sur monchamp qui est vide, mais si je rajoute autre chose à la suite, ça
s'exécute. Exemple :
On Error Resume Next
Set monchamp = Application.InputBox(prompt:="Choisissez un champ",
Type:=8)
For Each i In monchamp
i.Value = UCase(i.Value)
Next i
MsgBox "test"
"test" s'affiche quand on clique sur Annuler.
Il doit bien y avoir une solution !?
Brunos
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de news:
67ED8391-794C-4FA5-8AD3-99064F64E699@microsoft.com...
Rebonjour Brunos
Ma proposition si elle résoud ta difficulté ne permet pas de fonctionner
pour une saisie normale
Mille excuses
Essaies plutôt :
On Error Resume Next
Set monchamp = Application.InputBox(prompt:="Choisissez un champ",
Type:=8)
For Each i In monchamp
i.Value = UCase(i.Value)
Next i
J'espère que la !!!!!
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage de
cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique sur
annuler.
Un exemple (tiré de
http://boisgontierjacques.free.fr/pages_site/inpubox.htm)
Sub saisie_adresse()
Set monchamp = Application.InputBox(prompt:="Choisissez un champ",
Type:=8)
For Each i In monchamp
i.Value = UCase(i.Value)
Next i
End Sub
Quand on clique sur le bouton Annuler on a une erreur 13 incompatibilité
de
type.
C'est logique puisque la valeur renvoyée est False, alors que le type est
Range.
Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à traiter
l'erreur.
Ta remarque suite à ma propsition ma suggéré cette parade :
On Error Resume Next Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) If monchamp <> "" Then For Each i In monchamp i.Value = UCase(i.Value) Next i MsgBox "test" End If
Et là "test" n'apparait que si on a saisie une cellule et que celle-ci n'est pas vide
Je pense que c'est un bon compromis
Qu'en penses tu ????
Merci de vous décarcasser.
Papou : merci pour ton exemple de gestion de l'erreur, mais j'aurais voulu éviter d'en arriver là.
FFO : On Error Resume Next marche parceque la suite du traitement s'appuie sur monchamp qui est vide, mais si je rajoute autre chose à la suite, ça s'exécute. Exemple : On Error Resume Next Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) For Each i In monchamp i.Value = UCase(i.Value) Next i MsgBox "test" "test" s'affiche quand on clique sur Annuler.
Il doit bien y avoir une solution !?
Brunos
"FFO" a écrit dans le message de news:
Rebonjour Brunos
Ma proposition si elle résoud ta difficulté ne permet pas de fonctionner pour une saisie normale
Mille excuses
Essaies plutôt :
On Error Resume Next Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) For Each i In monchamp i.Value = UCase(i.Value) Next i
J'espère que la !!!!!
Bonjour,
Quand j'utilise la méthode Application.InputBox pour choisir une plage de cellules, je n'arrive pas à résoudre le cas où l'utilisateur clique sur annuler.
Un exemple (tiré de http://boisgontierjacques.free.fr/pages_site/inpubox.htm) Sub saisie_adresse() Set monchamp = Application.InputBox(prompt:="Choisissez un champ", Type:=8) For Each i In monchamp i.Value = UCase(i.Value) Next i End Sub
Quand on clique sur le bouton Annuler on a une erreur 13 incompatibilité de type. C'est logique puisque la valeur renvoyée est False, alors que le type est Range. Connaissez-vous un façon de faire ? Je voudrais éviter d'avoir à traiter l'erreur.
Merci de vos éclairages Brunos
Brunos
Ben oui, j'arrête pas de réfléchir justement ! ;-) Je cherchais une façon de traiter le problème sans gestion d'erreur, je ne l'ai pas trouvé. FFO a fait des propositions mais aucune ne marche complétement. Les autres réponses utilisent la gestion d'erreur, il y a pas mal de choses intéressantes : - la façon de Papou qui est très claire - la façon de JB très concise - la solution d'Isabelle (Select Case TypeName) me plaisait car je pensais qu'on pouvait ajouter d'autres cas, mais finalement je ne vois que deux retours différents possibles donc je n'utiliserai probablement pas select case. Merci à tous Brunos
"papou" a écrit dans le message de news:
Bonjour
Finalement tu vas arriver avec une syntaxe plus longue et fastidieuse qu'une simple gestion d'erreur claire et efficace. Ca ne te fait pas réfléchir ?
Cordialement Pascal
"Brunos" a écrit dans le message de news:
Joli, l'idée est bien creusée ! Brunos
"isabelle" a écrit dans le message de news:
Bonsoir Isabelle Ton code marche pour le cas ou on clique sur annuler, mais le reste ne fonctionne pas. Saisie n'est pas considéré comme une plage. Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à creuser là.
oui, mais difficile de traiter les objets range avec "Set" sans "On Error",
Sub saisie_adresse() On Error Resume Next debut: Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) If Err > 0 Then: Err.Clear: On Error GoTo 0 'claire et annule On Error x = TypeName(Saisie) Select Case x Case "Empty" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Range" For Each i In Saisie MsgBox i.Address & " = " & i Next i End Select End Sub
isabelle
Ben oui, j'arrête pas de réfléchir justement ! ;-)
Je cherchais une façon de traiter le problème sans gestion d'erreur, je ne
l'ai pas trouvé. FFO a fait des propositions mais aucune ne marche
complétement.
Les autres réponses utilisent la gestion d'erreur, il y a pas mal de choses
intéressantes :
- la façon de Papou qui est très claire
- la façon de JB très concise
- la solution d'Isabelle (Select Case TypeName) me plaisait car je pensais
qu'on pouvait ajouter d'autres cas, mais finalement je ne vois que deux
retours différents possibles donc je n'utiliserai probablement pas select
case.
Merci à tous
Brunos
"papou" <cpapounospamthanx@lapostenospamthanks.net> a écrit dans le message
de news: OBcC0HBWIHA.5348@TK2MSFTNGP03.phx.gbl...
Bonjour
Finalement tu vas arriver avec une syntaxe plus longue et fastidieuse
qu'une simple gestion d'erreur claire et efficace.
Ca ne te fait pas réfléchir ?
Cordialement
Pascal
"Brunos" <pasdemail@moi.mezig> a écrit dans le message de news:
O7okpL8VIHA.4712@TK2MSFTNGP04.phx.gbl...
Joli, l'idée est bien creusée !
Brunos
"isabelle" <i@v> a écrit dans le message de news:
uI58od6VIHA.1164@TK2MSFTNGP02.phx.gbl...
Bonsoir Isabelle
Ton code marche pour le cas ou on clique sur annuler, mais le reste ne
fonctionne pas.
Saisie n'est pas considéré comme une plage.
Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à
creuser là.
oui, mais difficile de traiter les objets range avec "Set" sans "On
Error",
Sub saisie_adresse()
On Error Resume Next
debut:
Set Saisie = Application.InputBox(prompt:="Choisissez un champ",
Type:=8)
If Err > 0 Then: Err.Clear: On Error GoTo 0 'claire et annule On Error
x = TypeName(Saisie)
Select Case x
Case "Empty"
MsgBox "Vous devez sélectionner une plage"
GoTo debut
Case "Range"
For Each i In Saisie
MsgBox i.Address & " = " & i
Next i
End Select
End Sub
Ben oui, j'arrête pas de réfléchir justement ! ;-) Je cherchais une façon de traiter le problème sans gestion d'erreur, je ne l'ai pas trouvé. FFO a fait des propositions mais aucune ne marche complétement. Les autres réponses utilisent la gestion d'erreur, il y a pas mal de choses intéressantes : - la façon de Papou qui est très claire - la façon de JB très concise - la solution d'Isabelle (Select Case TypeName) me plaisait car je pensais qu'on pouvait ajouter d'autres cas, mais finalement je ne vois que deux retours différents possibles donc je n'utiliserai probablement pas select case. Merci à tous Brunos
"papou" a écrit dans le message de news:
Bonjour
Finalement tu vas arriver avec une syntaxe plus longue et fastidieuse qu'une simple gestion d'erreur claire et efficace. Ca ne te fait pas réfléchir ?
Cordialement Pascal
"Brunos" a écrit dans le message de news:
Joli, l'idée est bien creusée ! Brunos
"isabelle" a écrit dans le message de news:
Bonsoir Isabelle Ton code marche pour le cas ou on clique sur annuler, mais le reste ne fonctionne pas. Saisie n'est pas considéré comme une plage. Mais merci pour l'idée 'Select Case TypeName' il y a surement qqchose à creuser là.
oui, mais difficile de traiter les objets range avec "Set" sans "On Error",
Sub saisie_adresse() On Error Resume Next debut: Set Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8) If Err > 0 Then: Err.Clear: On Error GoTo 0 'claire et annule On Error x = TypeName(Saisie) Select Case x Case "Empty" MsgBox "Vous devez sélectionner une plage" GoTo debut Case "Range" For Each i In Saisie MsgBox i.Address & " = " & i Next i End Select End Sub