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
JP
Denis,

Quand tu dis:
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.

Il y a une incompatibilité entre la méthode et l'ordre de mes textboxs.
Je suis obligé de mettre les 6 textboxs primordiales de 1 à 6 avec les données suivantes: (j'ai pourtant fait des modifications mais rien ne cha nge)
textbox1 fournisseur
textbox2 contact
textbox3 téléphone
textbox4 fax
textbox5 code postal
textbox6 ville
car je les inscris dans cette ordre dans ma base de données.
Il faudrait donc que le curseur se déplace dans cet ordre pour commencer et ensuite
textbox7 rue1
textbox8 rue2
textbox9 email
textbox10 site
La feuille modifiée:http://cjoint.com/?3KrwYrX0SCm

Donne moi ton avis.


Merci

JP
Avatar
MichD
http://cjoint.com/?CKsda0pU4xJ

Tu peux insérer autant de Textbox que ton application
en requiert.



MichD
---------------------------------------------------------------
Avatar
JP
Bonjour Denis,
Voilà, voilà qui répond à ce que je souhaitais obtenir.
Si j'ai d'autres feuilles je peux dans le thisworkbook faire de même? Je n'aurais pas besoin de créer un nouveau module de classe?

Une dernière question pour cette feuille. Le textbox pour faire la recher che, je voudrais que lorsque je clique dedans et qu'il y a un texte d'une r echerche précédente, qu'il soit effacer.
J'ai cherché comment faire sans y parvenir. Aurais-tu encore un petit cod e miraculeux?

Bonne journée et merci pour tout.

JP
Avatar
MichD
Question I

| Si j'ai d'autres feuilles je peux dans le thisworkbook faire de même?

À titre d'exemple, dans le Thisworkbook, tu pourrais avoir ceci :
(Dans ton classeur la dernière version du code donnée est un peu différente,
mais le principe est le même)

'------------------------------------------------
Private Sub Workbook_Open()
Dim Obj As OLEObject
Dim Tb As Tbox, Arr(), Elt As Variant

'Liste des noms des onglets des feuilles concernées
'Permet de spécifier seulement lesdites feuilles
Arr = Array("MichD", "MichD_1")

'Tu peux faire aussi une boucle sur toutes les feuilles
'du classeur si requis...
'For each Sh in Worksheets

' Boucle sur tous les objets des feuilles spécifiées dans Arr()
For Each Elt In Arr
For Each Obj In Worksheets(Elt).OLEObjects
' Vérifier s'il s'agit d'un Textbox
If TypeOf Obj.Object Is MSForms.TextBox Then
Set Tb = New Tbox
Set Tb.GrTBox = Obj.Object
Col.Add Tb
End If
Next Obj
Next

End Sub
'------------------------------------------------


Question II

Dans le code module de la feuille où est le TexBox, tu écris une
procédure ressemblant à ceci :
'------------------------
Private Sub TextBox1_GotFocus()
Me.TextBox1 = ""
End Sub
'------------------------

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


Bonjour Denis,
Voilà, voilà qui répond à ce que je souhaitais obtenir.
Si j'ai d'autres feuilles je peux dans le thisworkbook faire de même? Je
n'aurais pas besoin de créer un nouveau module de classe?

Une dernière question pour cette feuille. Le textbox pour faire la
recherche, je voudrais que lorsque je clique dedans et qu'il y a un texte
d'une recherche précédente, qu'il soit effacer.
J'ai cherché comment faire sans y parvenir. Aurais-tu encore un petit code
miraculeux?

Bonne journée et merci pour tout.

JP
Avatar
MichD
Fichier Exemple : http://cjoint.com/?CKsooCD1Y8L


MichD
---------------------------------------------------------------
Avatar
JP
MERCI, pour tout.

JP
Avatar
MichD
Et si tu modifies la procédure du module de classe comme ceci,
la touche "TAB" va au textbox suivant et la combinaison des
touches "MAJ + TAB" va au textbox précédent.

Et ceci s'applique au nombre de feuilles que tu désires!

Fichier exemple : http://cjoint.com/?CKspiipVZf4

'-----------------------------------------------------
Private Sub GrTBox_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift
As Integer)
Dim Ind As Integer

'Le nom des textbox de la feuille est Textbox1, Textbox2...etc...
'Ind récupère la valeur de l'index du textbox des noms des textbox 1,2,3...
'Attention si le nom de tes Textbox ne débute pas par "TextBox"...
'il faudra modifier la ligne qui suit.
Ind = CInt(Replace(GrTBox.Name, "TextBox", ""))

'si la touche "majuscule" est enfoncée"
If Shift = 1 Then
' Si la touche TAB est enfoncée
If KeyCode = 9 Then
' Si la Ind du textbox n'est pas le dernier
If Ind = 1 Then
Col(Col.Count).GrTBox.Activate
Else
Col(Ind - 1).GrTBox.Activate
End If
End If

ElseIf Shift = 0 Then
' Si la touche TAB est enfoncée
If KeyCode = 9 Then
' Si la Ind du textbox n'est pas le dernier
If Ind <> Col.Count Then
Col(Ind + 1).GrTBox.Activate
Else
Col(1).GrTBox.Activate
End If
End If
End If
End Sub
'-----------------------------------------------------

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


MERCI, pour tout.

JP
Avatar
JP
trop fort.
Juste une précision, dans les feuilles que j'ajoute, il faut que je conti nue la chronologie des textboxs?
Exemple:
première feuille des textboxs indice de 1 à 13
deuxième feuille des textboxs indice de 1 à 8 ou bien de 14 à 22?

Merci

JP

PS: tu m'as répondu l'autre jour sur une recherche. Je vais faire un nouv eau fil pour ne pas tout mélanger.

Merci encore pour ton aide précieuse.
Avatar
MichD
Si le nombre des textbox de la collection est différent
d'une feuille à l'autre, tu dois adapter le code voir ce fichier.

Voici mon fichier exemple : http://cjoint.com/?CKtolEEruCG

Si tu as dans une feuille des textbox que tu veux exclure de la "Collection"
donne-leur une appellation différente de Textbox par exemple toto1, toto2


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

Après plus d'une heure de travail, j'ai tenté vainement d'adapter ton e xemple à mon projet. Les tabulations ne fonctionnent pas et je ne vois pa s où est mon erreur.

Si tu veux bien regarder voici deux feuilles.

http://cjoint.com/?0KtqsFbaH0v

JP
1 2 3 4