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

positionner le focus et le curseur

  • Initiateur de la discussion Initiateur de la discussion zoroastre
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Z

zoroastre

Guest
Bonjour à tous.
Dans une feuille j'ai créé un userforme pour y encoder des temps (course).
Les différents blocs de texte (heures, minutes, secondes) sont contrôlés avant d'accéder au suivant.
J'aurai aimé que, quand ce test est mauvais, on reste dans le bloc avec le focus, le curseur et le contenu en surbrillance.
J'ai trouvé sur ce forum les données pour le code qui suit
Private Sub h_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If (Not IsNumeric(h) Or h < 0 Or h > 5) Then
MsgBox ("Erreur....")
Cancel = True
With Me.Controls("h")
.SelStart = 0
.SelLength = Len(Me.Controls("h").value)
.SetFocus​
End With​
End If​
End Sub
Le focus est bien ou je l'espérait (msgbox(ME.ActiveControl.name)) mais pas le curseur ni une surbrillance quelconque. je suis obligé de cliquer sur la box pour corriger alors que j'espérais pouvoir simplement écraser la mauvaise valeur
Qu'ai je bien oublié ou cela n'est-il pas possible ?
Merci de votre aide et de vos conseils
 
Re : positionner le focus et le curseur

Salut zoroastre et Bienvenue, Le Forum


Pas sur d'avoir compris mais essaye ce code

Code:
Private Sub h_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If (Not IsNumeric(h) Or h < 0 Or h > 5) Then
        MsgBox ("Erreur....")
        Cancel = True
        With Me.Controls("h")
            .SelStart = 0
            .SelLength = Len(Me.Controls("h").Text)
            .SetFocus
        End With
    End If
End Sub
Bonne Journée
 
Dernière édition:
Re : positionner le focus et le curseur

Bonjour et merci de ta réactivité
J'ai essayé mais sans résultat.Peut-être me suis je mal expliqué.
En fait je voudrais en cas d'erreur d'encodage (par exemple a pour un nombre d'heures),
avoir l'équivalent de la séquence suivant click dans la cellule puis f2 puis shift+home
je met ici un print screen de ce que je désirerais et de ce que j'ai


Merci à toi et bon dimanche
 
Re : positionner le focus et le curseur

Bonjour à tous,
Dans une feuille j'ai créé un userforme pour y encoder des temps (course).
Salut compatriote de la région fromagère
s'il s'agit de chronométrer le temps des athlètes à l'arrivée d'une course, je tiens à ta disposition un fichier dans lequel il suffit d'encoder les noms des athlètes avant le départ et ensuite, rentrer les numéros de dossard au franchissement de la ligne d'arrivée avec focus automatique sur la cellule suivante
les résultats sont mis en tableau en temps réel:
colonne 1 la place
colonne 2 le nom
colonne 3 le temps réalisé

le classeur est trop gros pour pouvoir le joindre à cette réponse



à+
Philippe
www.acdampicourt.be
 
Re : positionner le focus et le curseur

Salut zoroastre, Philippe, le Forum

Effectivement je n'avais pas tester avec
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
mais avec un CommandButton

Essaye ce le code ci-dessous


Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Not IsNumeric(TextBox1) Or TextBox1 < 0 Or TextBox1 > 5 Then
    MsgBox "Erreur...."[B]: Application.SendKeys "+{TAB}": Exit Sub[/B]
    End If
End Sub
EDITION: Salut Nono 🙂 Çac'estdel'artillerielourde 😀

Bonne Journée
 

Pièces jointes

Dernière édition:
Re : positionner le focus et le curseur

Bonjour zoroastre, les participants,

Si je puis me permettre d'intervenir sur ce problème (que j'ai déjà résolu),

Voici une petite amélioration au code fourni par camarchepas dans son fichier exemple :

Code:
Option Explicit

Private Sub CommandButton1_Click()
MsgBox TextBox4.Text & " : " & TextBox1.Text & ":" & TextBox2.Text & ":" & TextBox3.Text
Me.Hide
End Sub

Private Sub CommandButton2_Click()
MsgBox "Saisie annulée"
Me.Hide
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1.Value) Then
  Verif ActiveControl.Name
  Cancel = True
End If
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox2.Value) Then
  Verif ActiveControl.Name
  Cancel = True
End If
End Sub

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox3.Value) Then
  Verif ActiveControl.Name
  Cancel = True
End If
End Sub

Sub Verif(TB As String)
With Me.Controls(TB)
  .SelStart = 0
  .SelLength = Len(.Text)
End With
End Sub

Ce serait encore plus simple en utilisant un module de classe, mais je ne maîtrise pas encore cette technique.

Espérant avoir contribué de façon utile.

Cordialement à tous.
 
Re : positionner le focus et le curseur

Bonjour Papou-net,

Avec ton écriture, l'interactivité de controle de la saisie est différée, tu attends d'avoir saisie 25 fois un h et de valider pour envoyer le message, il n'y a pas non plus le controle des valeurs maxi . le is numéric pas mal . mais non modulable. merci pour cet échange d'idées
 
Re : positionner le focus et le curseur

Bonjour à tous et merci j'ai trouvé
J'ai essayé la solution de Dull qui n'a pas fonctionné mais parce que le problème n'était pas là. En fait le userform était en vbModal quelle horreur 🙄
Ensuite la solution de cavapas me plait bien pour sa réactivité immédiate et cava.
Enfin l'intervention du papou du net est moins réactive mais plus concise.
Dans mon cas les heures sont codées en 1 caractère, tandis que les minutes et les secondes en deux. Dès lors la réactivité.... 😕
Par contre, pour encoder le n° de dossard qui est plus long, la réactivité est plus importante. Donc je vais faire un mélange des deux solutions.
Enfin je suis heureux d'avoir grâce à votre aide trouvé une solution
Merci à tous 😉
NB je prends contact directement avec mon voisin du plateau..... de fromage 😀 pour échanger les potins du quartier
 
Re : positionner le focus et le curseur

Re, bonjour à tous
NB je prends contact directement avec mon voisin du plateau..... de fromage 😀 pour échanger les potins du quartier
moi mon plateau de fromage c'est Orval et la bière qui va avec
je viens de t'envoyer mon fichier sur ta mailbox .............. pas possible pour la bouteille 😀😀😀

à+
Philippe
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
922
Réponses
4
Affichages
1 K
H
Réponses
3
Affichages
1 K
HugoB99
H
E
  • Question Question
Réponses
16
Affichages
3 K
Réponses
3
Affichages
895
D
Réponses
3
Affichages
930
David69400
D
M
Réponses
2
Affichages
1 K
mikaconny
M
M
Réponses
3
Affichages
1 K
MarcTer
M
P
Réponses
10
Affichages
2 K
peper_eliot
P
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…