Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 InputBox and focus à la fin de la ligne d'une valeur par défaut

zedude

XLDnaute Nouveau
Bonjour à toutes et tous,

Dans un de mes codes VBA, j'ai une interaction utilisateur avec un fenêtre lui demandant de saisir une valeur. Ce champs de saisie est préinitialisé avec un texte et j'aimerais que le curseur se positionne à la fin car ce que je demande à l'utilisateur, c'est de saisir un numéro à la fin de ce texte.
Manque de bol, il semble que le fonctionnement par défaut soit de sélectionner la totalité du texte par défaut en surbrillance, ce qui oblige l'utilisateur à d'abord appuyer sur la touche "Fin/End" du clavier avant de faire la saisie que je lui demande.

Y'a-t-il, à l'instar de ce qui existe avec les boites de dialogue type MsgBox et ses vbYesNo, vbCritical, ... des paramètres utilisables avec InputBox qui forcerait le positionnement du curseur à la fin du texte par défaut ?

Exemple de commande pour que vous puissiez tester vous-même si vous ne voyez pas ce que je veux dire :

DefaultCFValue = "FID2024-"
LibelleCF = InputBox("Merci de saisir le numéro de la carte de fidelité" & vbCrLf & "(juste le numéro final allant de 1 à xxx)", "Numéro de fidelité", DefaultCFValue)
 

Phil69970

XLDnaute Barbatruc
Bonjour @zedule

Si le texte est fixe et que tu attends un nombre pour le rajouter à la fin le plus simple est de mettre ce texte dans une variable et de rajouter le nombre tapé dans la boite de dialogue

Exemple :

VB:
MonTexte = "FID2024-"

LibelleCF = InputBox("Merci de saisir le numéro de la carte de fidelité" & vbCrLf & "(juste le numéro final allant de 1 à xxx)", "Numéro de fidelité")
LibelleCF = MonTexte & LibelleCF
MsgBox LibelleCF 'Pour la visu à supprimer

Merci de ton retour
 

job75

XLDnaute Barbatruc
Bonsoir,

Il suffit d'envoyer la touche :
VB:
Sub a()
DefaultCFValue = "FID2024-"
CreateObject("WScript.Shell").SendKeys "{END}"
LibelleCF = InputBox("Merci de saisir le numéro de la carte de fidelité" & vbCrLf & "(juste le numéro final allant de 1 à xxx)", "Numéro de fidelité", DefaultCFValue)
End Sub
A+
 

zedude

XLDnaute Nouveau
S'il n'avait pas été possible de mettre le curseur à la fin, j'aurais envisagé cette solution.
Mais job75 m'a totalement bluffé avec une solution qui correspond 100% à l'objectif que je cherchais
 

zedude

XLDnaute Nouveau
Alors là, tu m'as cloué
Sur le coup, je me demandais "mais comment la simulation d'envoi d'une touche du clavier va marcher alors que la fenêtre apparaît dans la ligne de code qui suit"
Mais de fait, ça répond totalement à ma question

You rock !
Thanks buddy.
 

Discussions similaires

Réponses
16
Affichages
605
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…