IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Positionnement curseur dans userform


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 37
    Points
    37
    Par défaut Positionnement curseur dans userform
    J'ai fait un Userform que j'affiche. Je souhaite qu'à l'affichage le curseur du texte vienne directement se positionner dans la case texte.
    Est-ce possible ?

    D'autre part je n'arrive pas à valider le UserForm en appuant sur la touche entrée. Les deux fonctions :
    Private Sub UserForm_KeyPress....

    et

    Private Sub UserForm_Keydown....

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Qu'entends-tu par
    D'autre part je n'arrive pas à valider le UserForm
    ?
    Pour que l'événement KeyUp ou l'événement KeyDown soit intercepté tu as deux solutions : Vider ton userform de tous les contrôles (Visible = false pour tous) ou sinon ça devient tout de suite plus compliqué.
    Pourquoi as-tu besoin de ces événements ?
    A+

  3. #3
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Mets la propriété TabOrder de ton premier champs à zéro.

    Pour la validation, regarde dans l'aide du côté de l'événement Validate.

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonsoir,

    Soit un userform contenant un textbox 'TextBox1' et un bouton 'btnOK'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = 13 Then btnOK_Click '13=Enter
    End Sub
     
    Private Sub btnOK_Click()
        MsgBox "Click sur OK"
    End Sub
    Appuyer sur entree lorsque le focus est sur le textbox equivaut a cliquer sur le bouton ok.

    Cordialement,

    tirex28

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 37
    Points
    37
    Par défaut Complément
    Merci à tirex28...cela fonctionne comme je le souhaite.

    Par contre, zazaraignée je ai trouvé ta fonction Tabindex au lieu de Taborder mais le curseur ne s'affiche pas. Apparemment c'est bien le premier champ mais pas d'apparition du curseur. Mon premier champ s'appele Textbox1

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub UserForm_Initialize()
    TextBox1.TabIndex = 0
    End Sub

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Citation Envoyé par Bibelosse
    Par contre, zazaraignée je ai trouvé ta fonction Tabindex au lieu de Taborder mais le curseur ne s'affiche pas. Apparemment c'est bien le premier champ mais pas d'apparition du curseur. Mon premier champ s'appele Textbox1
    Bonjour,

    Essaye d'ajouter ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub UserForm_Activate()
        TextBox1.SetFocus
    End Sub
    Tirex28/

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 37
    Points
    37
    Par défaut
    J'ai déjà essayé et cela ne fonctionne pas.

    En fait j'ai l'impression que l'index de tabulation du frame prend le dessus car je n'arrive pas à changer son index...il reste à zéro.

    En fait sur mon userfrom j'ai fait "Bouton-droit" et j'ai regardé l'ordre de tabulation. Textbox1 est bien en premier ???

  9. #9
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    912
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 912
    Points : 1 371
    Points
    1 371
    Par défaut
    1) Le problème de la validation automatique:
    Je ne suis pas sur que la solution de tirex28 soit nécessaire.

    Si dans les propriétés de ton btnOK tu mets la propriété "Default" à "True", cela devrait fonctionner sans que tu n'aies à faire un event KeyDown sur tous les champs.

    Idem pour la touche "Echap" et la propriété "Cancel" des boutons.


    2) Pour le problème de Tab, la solution de zazaraignée devrait fonctionner, mais elle l'a mal exprimée. Il ne s'agit pas d'une propriété de ton champ texte.

    Va dans le menu "View", là tu trouveras "Tab Order". Places-y en tête de liste le champ dans lequel tu souhaites le focus au démarrage.

    Tiens-nous au courant.

    Laurent

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 37
    Points
    37
    Par défaut Plus d'explication
    Merci pour la première astuce cela fonctionne parfaitement.

    Par contre je ne sais pas ou touver le menu de ta deuxième remarque ?

    Peux tu m'en dire plus ?

    Merci

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je pense que lvr donne une solution VB6 (ou ultérieure à Office 2003)
    Dans VBA-Excel, je ne connais pas non plus le menu View.
    pour te placer directement sur un contrôle à l'ouverture de l'userform, tu peux tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Activate()
    TextBox1.setfocus
    End Sub
    Je n'ai pas suivi ton problème de Tab. Tu peux expliquer ?
    A+

  12. #12
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    912
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 912
    Points : 1 371
    Points
    1 371
    Par défaut
    Dans VBA-Excel, je ne connais pas non plus le menu View.
    Et l'Anglais, vous connaissez ?

    J'ai trouvé un VBA en français sur mon PC. "View" en français s'écrit "Affichage" et "Tab Order" donne "Ordre de tabulation".

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 37
    Points
    37
    Par défaut
    Merci pour la leçon de traduction cependant cela ne fonctionne pas....

    Merci pour ton aide ouskel'n'or mais cela ne fonctionne pas non plus. Peut-être ai-je oublié un paramètre ?

  14. #14
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Points : 9 402
    Points
    9 402
    Par défaut
    Une solution qui n'est pas top mais qui fonctionne.

    1 - Tu mets tous tes objets a enable=false
    2 - Tu mets la txtbox souhaité a enable=true
    3 - tu mets les autres objets a anable=true

    le curseur se trouve dans la txtbox souhaité quelque soir l'ordre des TAB

    Jérôme

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par lvr
    Et l'Anglais, vous connaissez ?

    J'ai trouvé un VBA en français sur mon PC. "View" en français s'écrit "Affichage" et "Tab Order" donne "Ordre de tabulation".
    Alors pourquoi ne pas le dire en français ? C'est vrai, quoi !
    (en fait je cherchais "ailleurs" n'ayant jamais eu besoin de ça, un projet bien conçu au départ évitant d'avoir à se préoccuper de l'ordre )

    Pour le pb de Bibelosse, j'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Activate()
    TextBox1.setfocus
    End Sub
    et je me retrouve bien dans cet objet

    Il serait intéressant de connaître tout ton code placé dans "UserForm_Activate"

  16. #16
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Il arrive parfois que l'index de tabulation n'accepte pas de mettre une valeur déjà existante. Dans ces cas là, j'utilise un valeur temporaire comme 255 pour remettre de l'ordre dans tout ça. C'est un peu long, mais ca finit par marcher.

    Pour la validation avec la touche Entrée (je m'excuse si c'est déjà résolu pour cette partie, j'ai pas tout lu le 'thread'), en mettant la propriété Default de ton bouton à True, ça devrait marcher. Ne pas oublier de mettre la propriété Cancel du bouton Annuler à True.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Positionnement curseur dans formulaire
    Par marcel marie dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 14/12/2013, 15h04
  2. Positionnement curseur dans QLineEdit
    Par Popeye63 dans le forum Qt
    Réponses: 1
    Dernier message: 13/02/2013, 11h26
  3. [XL-2003] positionner le curseur dans la zone de saisie d'un userform
    Par hannibal_barka dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/03/2010, 11h56
  4. [AC-2003] forcer positionnement curseur dans masque de saisie
    Par alexkickstand dans le forum IHM
    Réponses: 3
    Dernier message: 02/10/2009, 15h31
  5. Réponses: 6
    Dernier message: 06/05/2004, 09h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo