Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Application.Inputbox problème de traitement du bouton annuler

18 réponses
Avatar
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.

Merci de vos éclairages
Brunos

10 réponses

1 2
Avatar
FFO
Salut Brunos

Mets plutôt :

Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8)
If Saisie <> "Faux" Then
Set monchamp = Saisie
For Each i In monchamp
i.Value = UCase(i.Value)
Next i
End If

Celà devrait convenir

Dis moi !!!

Set monchamp = Application.InputBox(prompt:="Choisissez un champ",
Type:=8)
For Each i In monchamp
i.Value = UCase(i.Value)
Next i



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





Avatar
papou
Bonjour
Il faut utiliser une gestion d'erreur avant ta ligne
Set monchamp = ....
Et il faut déclarer monchamp en tant que Range.

Je modifierai donc avec quelque chose comme ça :

Sub saisie_adresse()
Dim monchamp As Range
On Error Goto SaisieAnnulee
Set monchamp = Application.InputBox(prompt:="Choisissez un champ", _
Type:=8)
For Each i In monchamp
i.Value = UCase(i.Value)
Next i

Exit Sub

SaisieAnnulee:
'éventuellement petit message affichant le code erreur
'MsgBox Err.Number & vbLf & Err.Description
Err.Clear
On Error GoTo 0

End Sub


Cordialement
Pascal


"Brunos" a écrit dans le message de news:

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



Avatar
FFO
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





Avatar
Brunos
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







Avatar
JB
Bonjour,

En attendant de trouver + simple:

Sub saisie_adresse()
On Error Resume Next
Set monchamp = Application.InputBox(prompt:="Choisissez un champ",
Type:=8)
If Err > 0 Then Exit Sub ' Annuler?
On Error GoTo 0 ' supprime la gestion d'erreur pour la
suite
For Each i In monchamp
i.Value = UCase(i.Value)
Next i
End Sub

JB

On 15 jan, 17:03, "Brunos" wrote:
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 fonctio nner
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 plag e de
cellules, je n'arrive pas à résoudre le cas où l'utilisateur cliq ue sur
annuler.

Un exemple (tiré de
http://boisgontierjacques.free.fr/pages_site/inpubox.htm)
Sub saisie_adresse()
  Set monchamp = Application.InputBox(prompt:="Choisissez un cham p",
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- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -




Avatar
FFO
Rebonjour Bruno

Tu pourrais essayer avec ce code :

Saisie = InputBox("Saisissez un champ", "Champ")
If Saisie <> "" Then
For Each i In Range(Saisie)
i.Value = UCase(i.Value)
Next i
End If

Celà marche avec une saisie correct d'un champ ou si l'on ne saisie rien
ainsi qu'avec l'annulation
Par contre si la saisie n'est pas complète le code bug

A toi d'en tirer parti

Dis moi !!!!


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












Avatar
ctac
Bonjour,

Sub TypeDeSaisie()
Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8)
MsgBox TypeName(Saisie)
End Sub

ctac

"Brunos" a écrit dans le message de news:

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



Avatar
Brunos
Oui c'est simple comme traitement d'erreur, je vais faire avec.
Merci
Brunos

"JB" a écrit dans le message de news:

Bonjour,

En attendant de trouver + simple:

Sub saisie_adresse()
On Error Resume Next
Set monchamp = Application.InputBox(prompt:="Choisissez un champ",
Type:=8)
If Err > 0 Then Exit Sub ' Annuler?
On Error GoTo 0 ' supprime la gestion d'erreur pour la
suite
For Each i In monchamp
i.Value = UCase(i.Value)
Next i
End Sub

JB

On 15 jan, 17:03, "Brunos" wrote:
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- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -




Avatar
Brunos
Oui, c'est une piste, mais je me focalise sur Application.InputBox.
Merci
Brunos

"FFO" a écrit dans le message de news:

Rebonjour Bruno

Tu pourrais essayer avec ce code :

Saisie = InputBox("Saisissez un champ", "Champ")
If Saisie <> "" Then
For Each i In Range(Saisie)
i.Value = UCase(i.Value)
Next i
End If

Celà marche avec une saisie correct d'un champ ou si l'on ne saisie rien
ainsi qu'avec l'annulation
Par contre si la saisie n'est pas complète le code bug

A toi d'en tirer parti

Dis moi !!!!


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














Avatar
Brunos
Bonjour ctac
Effectivement, le type retourné est booléen.
Mais si tu mets Set saisie = ...etc. le bouton Annuler produit une erreur.
et si tu ne mets pas Set, tu ne peux pas exploiter Saisie comme un objet
Range.
C'est cornélien !
Brunos

"ctac" a écrit dans le message de news:
478ce1a9$0$17689$
Bonjour,

Sub TypeDeSaisie()
Saisie = Application.InputBox(prompt:="Choisissez un champ", Type:=8)
MsgBox TypeName(Saisie)
End Sub

ctac

"Brunos" a écrit dans le message de news:

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







1 2