Gestion de Textbox(s)

Eric D

XLDnaute Occasionnel
Bonjour à toutes et à tous,

J'ai un soucis avec mes Textbox(50) pour la gestion de ceux-ci, je m'explique:

- ne pas permettre de passer au Textbox suivant si le Textbox.value = ""
- ne pas permettre de sélectionner un Textbox suppérieur (tabindex suppérieur) avec la souris, sauf si la valeure du Textbox sélectionné est diff de "".
- permettre par contre la sélection d'un Textbox inférieur

voilà, je crois avoir mis mes différentes conditions, mais je tourne en rond avec les différentes procédures évenementielles des Textbox:

Private Sub Textbox5_enter()
Private Sub Textbox5_keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Private Sub Textbox5_mousedown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Private Sub TextBox5_Exit(ByVal cancel As MSForms.ReturnBoolean)

Pouriez-vous me donner un coup de main pour 3,4 Textbox s'il vous plait.
Merci pour votre aide.
Eric D
 

Luki

XLDnaute Accro
Re : Gestion de Textbox(s)

Bonjour Eric

Personnellement, je n'utiliserais pas tabindex car il est plus difficile de retrouver un contrôle par son index, son nom ou son tag que par tab index.

En Pj, un exemple en utilisant une variable pour stocker l'index du dernier contrôle utilisé et lui redonner le focus au besoin.

Ce n'est pas encore abouti ( la touche tab renvoie au premier contrôle) et si tu as beaucoup de textboxs, il vaudrait mieux une procédure commune à tous, un peu plus compliquée.

Regarde si ce que je te propose va dans le bon sens.

A te lire
 

Pièces jointes

  • textbox.xls
    28 KB · Affichages: 78
  • textbox.xls
    28 KB · Affichages: 84
  • textbox.xls
    28 KB · Affichages: 82

Eric D

XLDnaute Occasionnel
Re : Gestion de Textbox(s)

Bonjour Luki,

Je n'utilise pas le tabindex, c'était pour être plus explicite. J'ai essayé ton code, c'est effectivement un bon début mais,
- Quand tu as une valeur ds tbox1, tu peux malheureusement sélectionner le tbox3 ou 4, et quand tu es ds le tbox2, tu peux sélectionner le tbox4
- Quand ds un tbox vide, on click sur 'enter', au lieu de rester sur le tbox, la valeur de tbox1 est grisée.
Merci pour ton interet et @+
Eric D
 

Eric D

XLDnaute Occasionnel
Re : Gestion de Textbox(s)

Re,

Petite question subsidiere, pour tester et corriger une valeur à la fin r1 devient R1, ds quelle proc evenemenntielle faut il mettre le traitement: 'Exit' il me semble mais bon...
merci pour cette info.
Eric D
 

Luki

XLDnaute Accro
Re : Gestion de Textbox(s)

Re Eric,

Pas évident de bien gérer les évènements des contôles. J'ai déjà eu des soucis par le passé...

Tu peux essayer le code ci-dessous.

Il a l'avantage de passer par une procédure commune. on pourrat faire plus court, mais ça implique de passer par des modules de classe.
Je pense qu'il vaut mieux tester comme ça et voir la suite.

Code:
Option Explicit

Private Sub TextBox1_Change()
LimiteSaisie
End Sub

Private Sub TextBox2_Change()
LimiteSaisie
End Sub

Private Sub TextBox3_Change()
LimiteSaisie
End Sub

Private Sub TextBox4_Change()
LimiteSaisie
End Sub

Sub LimiteSaisie()
Dim CtlN As String
Dim ActiveIdx As Integer
Dim Idx As Integer

    CtlN = ActiveControl.Name
    ActiveIdx = Val(Right(CtlN, Len(CtlN) - Len("TextBox")))
    Idx = ActiveIdx - 1
    If Idx = 0 Then Exit Sub
    If Controls("TextBox" & Idx).Value = "" Then
        Controls(CtlN).Value = ""
        Controls("TextBox" & Idx).SetFocus
   End If
  
   
End Sub
Pour ta dernière question, je n'ai pas compris ce que tu voulais...

Dis-moi.
 

RABIS

XLDnaute Nouveau
Re : Gestion de Textbox(s)

voici le code que j'ài utilisé
Code:
Sub CreerFeuilNommer()
Dim courage As String
Application.ScreenUpdating = False
courage = UserForm.TextBox1.Text
Sheets("SAC").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = courage
Application.ScreenUpdating = True
End Sub
Sub CommandButton1_QuandClic()
 UserForm.Show (0)
Dim data As New Collection
Dim i As Integer
data.Add "*"
For i = 1 To data.Count
Sheets("SAC").Range("c4") = data(i) 'place le nom du service
    Sheets("SAC").Copy After:=Sheets(Sheets.Count) 'copie la feuille
    
End Sub
 

Discussions similaires

Réponses
29
Affichages
1 K

Statistiques des forums

Discussions
312 757
Messages
2 091 775
Membres
105 072
dernier inscrit
Pechon