Problem de tab index

Luminou

XLDnaute Junior
Bonjour,
j'utilise excel 2003 sp3 et j'ai mis des combobox dans mon fichier excel mais je ne trouve pas la propritét tab index pour passer d'un combo a l'autre sans utiliser cette satanée souris.

Je me demandait donc comment arriver a faire quelque chose, est ce qu'il faut analyser la frappe pour savoir quand on tape sur la touche tab ou enter et faire un saut a l'autre combo?

Merci pour votre précieuse aide ^^

Lumi
 

Catrice

XLDnaute Barbatruc
Re : Problem de tab index

Bonjour,

soit tu vas dans les propriétés de tes TextBox et tu positionnes les TabIndex de 0 à n.

soit tu peux utiliser le code suivant :

Private Sub UserForm_Initialize()
TextBox4.TabIndex = 0
TextBox3.TabIndex = 1
TextBox1.TabIndex = 2
TextBox2.TabIndex = 3
End Sub

A priori l'ordre 0, 1, 2 ect .. a une influence ...

Testé avec des Combo, ça fonctionne aussi.
 

tototiti2008

XLDnaute Barbatruc
Re : Problem de tab index

Bonjour Luminou,

Il me semble que pour les contrôles placés dans la feuille de calcul, la propriété TabIndex n'existe pas (seulement dans un Userform)... donc oui, j'ai peur que tu doives interpréter les touches dans chaque contrôle... à moins que je me trompe :)

Edit : Bonjour Catrice
 

job75

XLDnaute Barbatruc
Re : Problem de tab index

Bonjour Luminou, salut Catrice et Tototiti

Si vous utilisiez des listes de validation au lieu de ComboBox, ce serait plus simple.

En effet vous remarquerez alors que la cellule étant sélectionnée, on peut afficher la liste de validation par les touches Alt+Bas (touche de déplacement vers le bas).

Sélection des cellules et envoie de touches peuvent se faire facilement en VBA.

A+
 

Catrice

XLDnaute Barbatruc
Re : Problem de tab index

Bonjour,

A coté de la plaque aujourd'hui. Je n'avais pas vu que c'etait dans la feuille de calcul.
tu peux faire comme ceci :

Private Sub ComboBox1_Change()
ComboBox2.Activate
End Sub

Private Sub ComboBox2_Change()
ComboBox3.Activate
End Sub

etc ...

Mais ça ne fonctionne qu'à la souris.
Tab n'est pas interceptée dans la Combo, ni OnKey :(

Edit :
Ca y est, trouvé :

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 Then ComboBox3.Activate
End Sub
Private Sub ComboBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 Then ComboBox1.Activate
End Sub
Private Sub ComboBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 Then ComboBox2.Activate
End Sub
 
Dernière édition:

Catrice

XLDnaute Barbatruc
Re : Problem de tab index

Re,
Un exemple complet ci-joint


Basé là-dessus :

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode & Shift
Case "90"
ComboBox3.Activate
Case "91"
ComboBox2.Activate
End Select
End Sub
 

Pièces jointes

  • Classeur1.xls
    38.5 KB · Affichages: 104
  • Classeur1.xls
    38.5 KB · Affichages: 105
  • Classeur1.xls
    38.5 KB · Affichages: 106

tototiti2008

XLDnaute Barbatruc
Re : Problem de tab index

Re,

Shift correspond à l'appui (ou non) sur la touche Shift (Majuscule) en même temps qu'une autre touche.
Si shift = 0, et qu'on appuye sur Tab, on va au contrôle suivant (shift pas appuyé)
si shift = 1, et qu'on appuye sur Tab on va au contrôle précédent (shift appuyé)

KeyCode & Shift

représente la concatenation du code de la touche appuyée et de shift
si c'est "90", alors on a appuyé sur Tab mais pas shift
si c'est "91" on a appuyé sur Tab et Shift

un peu brouillon mais je crois que tu devrais comprendre
 

Catrice

XLDnaute Barbatruc
Re : Problem de tab index

Re,

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode & Shift
Case "90"
ComboBox3.Activate
Case "91"
ComboBox2.Activate
End Select
End Sub

KeyCode renvoit le code de la touche saisie
Shift renvoit 0 ou 1 suivant si on appuie sur SHIFT (touche MAJ)

Je concatene les 2, comme je cherche à savoir si l'utilisateur appuie sur la touche TAB (code 9), je vais faire qq chose qd KeyCode sera = à 9.
Mais l'utilisateur peut appuyer soit sur TAB tout seul (aller en avant) soit sur MAJ+TAB (aller en arriere).
Donc j'aurai soit le cas 9 et 0 => 90
soit le cas 9 et 1 => 91

Si c'est 90 je passe à la Combo d'apres
Si c'est 91 je passe à la Combo d'avant ;)

Edit : Bonsoir Tototiti
 
Dernière édition:

Luminou

XLDnaute Junior
Re : Problem de tab index

Ok je comprend, et si je voulait passer d'une case a l'autre avec la touche "enter" je devrait donc mettre case "D0" et case "D1" celon l'aide vba, or cela ne fonctionne pas. Quand j'essaye case "vbkeyreturn" ou sans les gillemet sa ne marche pas.
 

Discussions similaires