Bonjour à tous,
Chers amis passionnés d’informatique, de VBA et tous vous autres, je fais aujourd'hui appel à vous!
Je suis en train de bosser sur une macro de saisie depuis 2-3 jours. Je ne suis pas mauvais en VBA Excel, mais là je coince sur une erreur qui m’énerve à un point que vous n’imaginez pas.
[OMMETTRE SI PRESSE] Je vous explique rapidement, par respect, le fonctionnement de ma macro, les détails ne sont pas importants pour l’instant : un tableau tQ( , ) stocke temporairement une base de données (onglet ExtraitBD d'un fichier que je ne peux mettre en PJ). Je me sers ensuite de ce tableau pour créer, pour chaque ligne i de ce tableau une boîte de dialogue qui sert à saisir les réponses, dont le titre tQ(i,5), le code de la question tQ(i,1), l’invite tQ(i,2) ainsi que d’autres données servent à ‘personnaliser’ la boîte de dialogue.
[OMMETTRE SI PRESSE] Voilà que surgit une erreur incompréhensible dans ma macro. Je ne connais pas trop la gestion d’erreurs en VBA donc je n’arrive pas à isoler l’erreur… 2 jours de prise de tête. Après multiples débogages et tests je m’aperçois qu’en fait il semble que c’est le prompt qui doit respecter certaines contraintes.
Ci-dessous, j’ai isolé mon problème. Quelle est la difference entre les deux utilisations de l'InputBox ci-dessous? J’ai juste rajouté, pour la ‘troisième ligne’, une douzaine de ‘a’ pour allonger le prompt.
Sub test2()
Dim t1 As Integer
Dim t2 As Integer
t1 = Application.InputBox(Title:="intro", prompt:="Qaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:" & Chr(13) & "R1asdddddddddddddddddddddddddddddddddddddddd" & Chr(13) & "R2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" )
t2 = Application.InputBox(Title:="intro", prompt:="Qaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:" & Chr(13) & "R1asdddddddddddddddddddddddddddddddddddddddd" & Chr(13) & "R2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" )
End Sub
Mais alors Camille, ne sais-tu pas qu’il existe une aide VBA ?
[OMMETTRE SI PRESSE] Pour la fonction InputBox, voici ce que dit l’aide :
[OMMETTRE SI PRESSE] « invite Obligatoire. Expression de chaîne (expression de chaîne : expression qui, évaluée, donne une séquence de caractères contigus. L’expression peut comprendre les éléments suivants ; fonction qui renvoie une chaîne ou une chaîne de type Variant (VarType 8) ; opérateur sur chaîne, constante, variable ou Variant.) affichée comme message dans la boîte de dialogue. La longueur maximale de l'invite est d'environ 1 024 caractères, suivant la largeur des caractères utilisés. Si l'invite comporte plusieurs lignes, vous pouvez les séparer à l'aide d'un retour chariot (Chr(13)), d'un saut à la ligne (Chr(10)) ou de la combinaison des deux (Chr(13) et Chr(10)) entre chaque ligne. »
J’utilise la méthode InputBox, de toutes manières, et il y a largement moins de 1024 caractères.
Pour la méthode InputBox, voici ce que dit l’aide :
« Message à afficher dans la boîte de dialogue. Il peut s'agir d'une chaîne de caractères, d'un nombre, d'une date ou d'une valeur booléenne (Microsoft Excel contraint la valeur à avoir le type de données String avant de l'afficher). »
Résultat des courses :
• Je ne trouve rien sur Google
• Je ne trouve rien dans l’aide
• Je me prends la tête
Conclusion :
• Je ne sais pas quelles contraintes mon prompt doit respecter
• J’ai besoin de votre aide sinon je crains que mon PC passe par la fenêtre
Ma question est donc : quelles contraintes est-ce que mon prompt doit respecter ? Subsidiairement, ou aurais-je pu / ou avez-vous trouvé cette information ?
Je vous serais extrêmement reconnaissant d’éclairer ma lanterne sur ce sujet. Je suis évidemment disponible pour vous fournir des détails supplémentaires…
Camille Geniès