Application.Inputbox problème de traitement du bouton annuler

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #5293891
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





papou
Le #5293871
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"
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



FFO
Le #5293841
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
Le #5293811
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"
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







JB
Le #5293791
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"
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"



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 -




FFO
Le #5293741
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"
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












ctac
Le #5293721
Bonjour,

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

ctac

"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



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

"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"
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"



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 -




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

"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"
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
Le #5293621
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"
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







Publicité
Poster une réponse
Anonyme