Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/12/2011, 15h51   #1
Membre régulier
 
Avatar de allergique
 
Homme
Inscription : août 2006
Messages : 146
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : août 2006
Messages : 146
Points : 77
Points : 77
Par défaut Problème cuseur et tabindex

Bonjour,

Au chargement de mon userform2 je souhaite avoir le cuseur dans le textbox1.

La propriété de textbox1.tabindex est à 0, mais le curseur n'apparait pas dans le textbox.

Je charge mon userform2 à partir de userform1. Est-ce que le problème peut venir du fait que le curseur reste actif sur userform1?

Je vous donne un extrait de code qui lance l'userform:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'Affiche le premier caractère dans l'userform2 pour initialisation
'suivant l'ordre définit dans la liste aléatoire
    nb2 = 1 '1er caractère en cours
    With UserForm2
    .CommandButton1.Caption = "Vérifier"
    .Label1 = Range("B" & 149 + liste(1))
    .Label4 = nb2 & "/" & nb 'affiche chiffre en cours sur total
    .Label3.Visible = False 'Masque label "résultat"
    .TextBox1.SetFocus
    End With
 
'Test pour voir si le textbox est le contrôle actif
MsgBox UserForm2.ActiveControl.Name
 
'Affiche la fenêtre suivante
    UserForm1.Hide
    UserForm2.Show
Par "UserForm2.ActiveControl.Name" j'ai confirmation que textbox1 est actif, pourtant le cuseur n'apparait pas dedans.

Est-ce que quelqu'un aurait une idée pour résoudre ce problème svp?

Merci par avance
allergique est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 16h48   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Essaie :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'Affiche le premier caractère dans l'userform2 pour initialisation
'suivant l'ordre définit dans la liste aléatoire
    nb2 = 1 '1er caractère en cours
 
'Test pour voir si le textbox est le contrôle actif
'MsgBox UserForm2.ActiveControl.Name
 
'Affiche la fenêtre suivante
    Unload Me
    With UserForm2
    .TextBox1.TabIndex = 0
    .TextBox1.SetFocus
    End With
    UserForm2.Show
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 17h06   #3
Membre régulier
 
Avatar de allergique
 
Homme
Inscription : août 2006
Messages : 146
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : août 2006
Messages : 146
Points : 77
Points : 77
Bonjour Daniel,

Je viens de faire un test avec ton code, mais il n'y a pas de changement sur le focus.
Pour faire un test si je lance directement l'userform2 pourtant le focus est bien en textbox1

Le problème aussi avec la fonction unload est qu'il perd en mémoire les infos de l'userform1.
allergique est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 17h33   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
J'avais pas mal chamboulé ton code; cette macro fonctionne (dans le module de userform1) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub UserForm_Click()
'Affiche le premier caractère dans l'userform2 pour initialisation
'suivant l'ordre définit dans la liste aléatoire
    nb2 = 1 '1er caractère en cours
    With UserForm2
'    .CommandButton1.Caption = "Vérifier"
'    .Label1 = Range("B" & 149 + liste(1))
'    .Label4 = nb2 & "/" & nb 'affiche chiffre en cours sur total
'    .Label3.Visible = False 'Masque label "résultat"
    End With
 
'Test pour voir si le textbox est le contrôle actif
'MsgBox UserForm2.ActiveControl.Name
 
'Affiche la fenêtre suivante
    UserForm1.Hide
    UserForm2.TextBox1.SetFocus
    UserForm2.Show
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 18h14   #5
Membre régulier
 
Avatar de allergique
 
Homme
Inscription : août 2006
Messages : 146
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : août 2006
Messages : 146
Points : 77
Points : 77
J'ai testé ton code dans un nouveau fichier, effectivement il fonctionne mais en le copiant dans mon fichier ça ne marchait pas.

En cherchant plus en détail, j'ai vu que l'userform était en monde non modal, et c'est de là que vient le problème.

J'ai remis l'userform en mode modal, et maintenant tout fonctionne

Merci pour l'aide que tu m'apportée
allergique est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h36.


 
 
 
 
Partenaires

Hébergement Web