Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Objet OleObject et tabulation

31 réponses
Avatar
JP
Bonjour,

Dans une feuille, j'ai plusieurs textbox num=E9rot=E9s de 1 =E0 12.
Est-ce qu'il est possible, comme dans un userform, de se d=E9placer de text=
box en textbox =E0 l'aide de la touche de tabulation?
Je n'ai pas trouv=E9 l'=E9quivalent dans les propri=E9t=E9s du textbox.

Merci

JP

10 réponses

1 2 3 4
Avatar
DanielCo
Bonjour,

Un exemple avec deux textboxes :

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,
ByVal Shift As Integer)

If KeyCode = vbKeyTab Then
TextBox2.Activate
End If

End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,
ByVal Shift As Integer)

If KeyCode = vbKeyTab Then
TextBox1.Activate
End If

End Sub

Cordialement.

Daniel (pas Jacky)


Bonjour,

Dans une feuille, j'ai plusieurs textbox numérotés de 1 à 12.
Est-ce qu'il est possible, comme dans un userform, de se déplacer de textbox
en textbox à l'aide de la touche de tabulation? Je n'ai pas trouvé
l'équivalent dans les propriétés du textbox.

Merci

JP
Avatar
JP
Bonjour Janyel, heu, Daniel,

Merci pour l'exemple. Globalement, il est moins simple de travailler avec l es oleobjects qu'avec les userforms? C'est mon impression en tout cas.

Je vais voir si je continue car je n'en suis qu'à la première page de m on projet.

Merci encore DANIEL.

JP
Avatar
DanielCo
il est moins simple de travailler avec les oleobjects qu'avec les userforms



Ce sont les mêmes contrôles. C'est l'environnement qui change.

Daniel

Bonjour Janyel, heu, Daniel,

Merci pour l'exemple. Globalement, il est moins simple de travailler avec les
oleobjects qu'avec les userforms? C'est mon impression en tout cas.

Je vais voir si je continue car je n'en suis qu'à la première page de mon
projet.

Merci encore DANIEL.

JP
Avatar
JP
Daniel,

Voici le résultat pour boucler sur 12 textboxes. Pas cool, on ne peut vra iment pas raccourcir le code?

JP

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
TextBox2.Activate
End If
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
TextBox3.Activate
End If
End Sub
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
TextBox4.Activate
End If
End Sub

Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
TextBox5.Activate
End If
End Sub
Private Sub TextBox5_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
TextBox6.Activate
End If
End Sub
Private Sub TextBox6_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
TextBox7.Activate
End If
End Sub
Private Sub TextBox7_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
TextBox8.Activate
End If
End Sub

Private Sub TextBox8_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
TextBox9.Activate
End If
End Sub

Private Sub TextBox9_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
TextBox10.Activate
End If
End Sub

Private Sub TextBox10_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
TextBox11.Activate
End If
End Sub

Private Sub TextBox11_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
TextBox12.Activate
End If
End Sub
Private Sub TextBox12_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
Textbox1.Activate
End If
End Sub
Avatar
MichD
Bonjour,

Voici un fichier exemple. Tu le curseur dans un des textbox
et avec la touche TAB, tu peux circuler d'un textbox à l'autre.

http://cjoint.com/?CKrpRurqMfv


MichD
---------------------------------------------------------------
Avatar
JP
Bonjour Denis,

J'essaie de comprendre ton exemple.
Il me semble avoir recopié ton exemple et pourtant les textboxs ne sont p as sélectionnés dans l'ordre chronologique.
J'ai 12 textboxs et à l'appui de la touche tab les sélections se font c omme suit:
textbox1
textbox3
textbox8
textbox9
textbox10
textbox11
textbox12
et on retourne à la textbox1
Pour plus de clarté vois en PJ le fichier
http://cjoint.com/?3KrqTJke0ZX

Dans l'exemple joint, j'ai 13 textboxs et la 13ème est pour faire une rec herche.

JP
Avatar
MichD
Dans le ThisWorkbook de ton classeur, cette section
boucle sur TOUS les textbox de la feuille.

A ) Tu dois placer, disposer les textbox selon la suite logique
avec laquelle tu veux te déplacer d'un textbox à l'autre.

B ) Pour ce faire, en mode création, sélectionne à tour de rôle
tes textbox et regarde dans la section à l'extrême gauche de
la barre des formules, le nom des textbox, tu vas t'apercevoir
que l'index des textbox (dans leur nom Textbox1, 1 est l'index)
ne se suive pas de 1 à X.

C ) Tu peux si tu le veux à partir de la même procédure, inclure seulement
certains textbox pour le déplacement... mais tu n'as pas précisé cela
dans ta demande.


MichD
---------------------------------------------------------------
Avatar
JP
pour le B j'ai choisi de faire dans l'ordre les 5 colonnes de ma base de do nnées. Càd
1 fournisseur
2 contact
3 téléphone
4 fax
5 ville
6 code postal

et pour les autres peu importe. Sauf que le 9 (code client) sera calculé et le 13 sert à la recherche. Le 9 et le 13 devraient être exclus des s élections de textbox à l'appui de la touche tab.

Je m'attendais à une simplification du genre:
faire une boucle sur les textboxs en excluant certaines avec des if. Mais j e m'aperçois que ça n'est pas aussi simple.

JP
Avatar
MichD
C'est plus simple que tu penses :

Tu énumères seulement les index des textbox que tu désires
dans cette ligne de code : Case 1, 2, 3, 4 ....
Les index doivent se suivre, car dans le module Tbox, on utilise
cet index pour retrouver l'item de la collection. Si tu as seulement
5 textbox dans la collection, mais que le dernier index du textbox est
13, cela cause un problème quand arrive le temps d'exécuter cette
ligne de code : Col(Ind + 1).GrTBox.Activate
Comme l'objet Collection (Col) a seulement 5 objets, elle ne retrouvera
jamais l'objet au-delà de 5 comme index.

Comme j'ai fait cet exemple, je ne vais pas refaire le code autrement
(car il y moyen de procéder autrement), mais cela ne me tente pas
de réécrire le code. À toi d'adapter la disposition des textbox de la
feuille avec des index consécutifs...

Attention sur ta feuille, les Textbox doivent être disposés par
ordre croissant des index de leur nom.

'---------------------------------------
Private Sub Workbook_Open()
'compte le nombre d'enregistrement
With Sheets("Fournisseurs")
NbFiche = .Application.CountA(Range("D25:D216"))
.Label2 = NbFiche
End With
'------------------------
Dim Obj As OLEObject
Dim Tb As Tbox
Dim Ind As Integer
' Boucle sur tous les objets de la Feuil1
For Each Obj In Feuil1.OLEObjects
' Vérifier s'il s'agit d'un Textbox
If TypeOf Obj.Object Is MSForms.TextBox Then
' If Obj.Name = "Textbox1" Then Stop
Ind = CInt(Replace(UCase(Obj.Name), "TEXTBOX", ""))
Select Case Ind
'Tu ajoutes tous les index que tu veux des textbox
Case 1, 2, 3, 4, 5
Set Tb = New Tbox
Set Tb.GrTBox = Obj.Object
Col.Add Tb
End Select
End If
Next Obj
End Sub
'---------------------------------------



MichD
---------------------------------------------------------------
"JP" a écrit dans le message de groupe de discussion :


pour le B j'ai choisi de faire dans l'ordre les 5 colonnes de ma base de
données. Càd
1 fournisseur
2 contact
3 téléphone
4 fax
5 ville
6 code postal

et pour les autres peu importe. Sauf que le 9 (code client) sera calculé et
le 13 sert à la recherche. Le 9 et le 13 devraient être exclus des
sélections de textbox à l'appui de la touche tab.

Je m'attendais à une simplification du genre:
faire une boucle sur les textboxs en excluant certaines avec des if. Mais je
m'aperçois que ça n'est pas aussi simple.

JP
Avatar
JP
Merci Denis,

Je vais regarder cela à tête reposée. Je te tiens au courant par la s uite.

JP
1 2 3 4