Méthode InputBox : incompatibilité de type

Bonjour à tous.

Je ne comprends pas pourquoi mon instruction InputBox qui fonctionnait super bien hier, toute la journée, refuse de fonctionner aujourd'hui sans que j'aie modifié mon code ?

Déjà que j'ai bataillé entre la méthode et la fonction InputBox en faisant plusieurs essais, j'ai opté pour la méthode pour pouvoir gérer le bouton annuler.

Ce qui fonctionnait très bien hier.

Dim ChoixSheet as string

ChoixSheet = Application.InputBox(prompt:="Entrez le numéro de la feuille qui servira à importer les données" & Chr(10) & Chr(10) & listeSheets, Title:="Entrer le numéro de la feuille", Type:=1 + 2) 'ATTENTION, ici il s'agit de la MÉTHODE InputBox

L’exécution du code me renvoie une erreur d'incompatibilité de type.

Ça vient visiblement de:

& Chr(10) & Chr(10) & listeSheets.

On ne peut pas faire comme une fonction IpnutBox et cumuler du texte et des variables ?

Ça fonctionne bien avec la fonction IpnutBox.

Ensuite, si quelqu'un peut m'explique comment c'est possible d'avoir type:= 1 +2 et que cela fonctionne...

On peut "cumuler" des valeurs de paramètres ?

Donc, ici, avec un type:= 1 +2 cela signifierait nombre + texte ?

Merci d'avance pour vos lumières.

Bonne matinée.

J'ai redémarré et tout fonctionne.

J'avais une instance excel qui continuait à tourner dans le gestionnaire des tâches et je ne sais pas si c'est ça qui mettait la pagaille...

Par contre, je suis toujours intéressé pour comprendre l'histoire du type:=1+2.

Bonjour,

InputBox ne renvoie que du texte (String)

Mais Application.InputBox peut renvoyer plusieurs types de données, et si on Annule c'est False (boolean) qui est renvoyé...

Or, ta variable ChoixSheet est String !

Pour des nombres, pas trop de problème, ils seront probablement convertis, mais tout ne l'est pas...

Donc, détype ta variable !

Par contre, pour les valeurs attendues, si je comprends bien tu réclames un nom de feuille, supprimes le 1 dans ce cas.

Un nom de feuille est toujours de type String, même s'il n'est composé que de chiffres.

Un petit test pour t'en convaincre : tu nommes une feuille : 2017.

Sub test()
    Worksheets(Year(Date)).Activate
End Sub

et tu auras une erreur 9... !

Cordialement.

Re-bonjour Mferrand.

En fait, je n'ai pas trouvé d'autre artifice pour que l'utilisateur choisisse la feuille de son choix parmi toutes celles présente dans le classeur, que d'afficher dans une InputBox le nom EXTERNE de la sheet (donc le nom des sheets qui s'affiche dans excel et que voit l'utilisateur, mais je ne t'apprends rien) et le numéro d'item correspondant de la feuille.

Ceci afin de simplifier la saisie dans l'InputBox et éviter les erreurs de saisie.

Il est plus facile de taper "1" que feuille_Equipements.

Le problème, c'est que je réutilise l'entrée de l'opérateur pour setter ma sheet et donc le n° d'item.

Mais comme tu l'as si bien dit, InputBox ne renvoie que des string.

J'ai donc typé ma variable ChoixSheet qui stocke le n° d'item de la sheet voulue en string puis je la convertis plus tard our pouvoir setter ma sheet grâce au numéro d'item.

Mais en fait, comme je l'ai écrit dans mon précédent post, ça fonctionne à merveille.

Ce que je ne comprends pas, ce sont les arguments de "type" de la méthode.

Type:=1 + 2 fonctionne mais je ne savais pas qu'on pouvait "cumuler" des arguments (si c'est bien comme ça que je l'interprète).

J'ai laissé ChoixSheet typé String parce qu'avant d'utiliser la méthode InputBox, j'utilisais la fonction et il n'y avait pas d'autres choix que de la typer en String (mais je ne pouvais pas gérer le bouton annuler).

Tu peux additionner les valeurs. Remarque que ce sont des puissances de 2. On peut tester le total de tes options avec l'opérateur And au niveau binaire :

For i = 1 To 7 'Pour les valeurs 1, 2, 4, 8, 16, (32), 64
    If 2 ^ (i - 1) And TotalOptions Then
        '.....
    End If
Next i
Rechercher des sujets similaires à "methode inputbox incompatibilite type"