XL 2010 Forcer le focus a rester dans un Textbox apres validation

aurelio.ewane

XLDnaute Occasionnel
Bonjour les Excelliste, J'explique mon problème

Jai un Listbox et un Textbox
En fait je voudrais modifier une colonne par exemple la colonne 2 de mon Listbox qui contient une liste de données sur plusieurs lignes et plusieurs colonnes
Mon soucis est le suivant: Je voudrais que lorsque je selectionne une ligne de mon Listbox , la donnée contenue dans la ligne selectionée à la colonne 2 s'affiche dans mon Textbox et que ce le Textbox recoive le focus en modifant par exemple cette valeur dans le Textbox et an validant par Entrée que la nouvelle valeur du Textboxmodifie l'ancienne valeur contenu dans le Listbox et que le Listindex du Listbox (Cest a dire la selection s'incremente d'un) et permattant ainsi a la ligne suivant du Listbox detre selectionné et le Textbox recevant la valeur contenue dans la colonne 2 de cette nouvelle Ligne et recevant aussi le focus pour une eventuelle modification...

Le problème cest que je ne veux que les valeur numeriques comprise entre 0 et 20 et aussi par exemple les caracteres telque "ABS", "M"
Lorsque une mauvais saisie est faite envoyez un message d'erreur (un msgbox) et le focus reste dans le Textbox

Merci a tous
 

aurelio.ewane

XLDnaute Occasionnel
V
Oui jenvoie un fichier
genre cest juste un listbox et un Textbox
Voila un Fichier



Private Sub ListBox1_Click()
Me.TextBox1.Value = Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
Me.TextBox1.SetFocus
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = Len(Me.TextBox1.Text)
Me.TextBox1.SetFocus
End Sub



Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
If IsNumeric(Me.TextBox1.Value) Then
Me.ListBox1.List(Me.ListBox1.ListIndex, 1) = Me.TextBox1.Value
Me.ListBox1.ListIndex = Me.ListBox1.ListIndex + 1
Me.TextBox1.SetFocus
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = Len(Me.TextBox1.Text)
Me.TextBox1.SetFocus

Else
MsgBox "Erreur de Saisie"
Me.TextBox1.SetFocus
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = Len(Me.TextBox1.Text)
Me.TextBox1.SetFocus

End If
End If

End Sub

Private Sub UserForm_Initialize()
Dim Sh1 As Worksheet
Set Sh1 = ThisWorkbook.Sheets("Base")
Me.ListBox1.Clear
Me.ListBox1.RowSource = ""

Me.ListBox1.List = Sh1.Range("A5:C15").Value
Me.ListBox1.ColumnCount = 3
Me.ListBox1.ColumnWidths = "50;100;100"
Me.TextBox1.Value = ""


Set Sh1 = Nothing
End Sub
 

Pièces jointes

  • Forcer un Textbox.xlsm
    19.1 KB · Affichages: 1

aurelio.ewane

XLDnaute Occasionnel
Vec
Re,
Vous voulez pas mal de chose, avez comment un code ou pas?
Re,
Vous voulez pas mal de chose, avez comment un code ou pas?
Avec un code voila mon code prière de jetter un coup d'oeil


Private Sub ListBox1_Click()
Me.TextBox1.Value = Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
Me.TextBox1.SetFocus
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = Len(Me.TextBox1.Text)
Me.TextBox1.SetFocus
End Sub



Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
If IsNumeric(Me.TextBox1.Value) Then
Me.ListBox1.List(Me.ListBox1.ListIndex, 1) = Me.TextBox1.Value
Me.ListBox1.ListIndex = Me.ListBox1.ListIndex + 1
Me.TextBox1.SetFocus
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = Len(Me.TextBox1.Text)
Me.TextBox1.SetFocus

Else
MsgBox "Erreur de Saisie"
Me.TextBox1.SetFocus
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = Len(Me.TextBox1.Text)
Me.TextBox1.SetFocus

End If
End If

End Sub

Private Sub UserForm_Initialize()
Dim Sh1 As Worksheet
Set Sh1 = ThisWorkbook.Sheets("Base")
Me.ListBox1.Clear
Me.ListBox1.RowSource = ""

Me.ListBox1.List = Sh1.Range("A5:C15").Value
Me.ListBox1.ColumnCount = 3
Me.ListBox1.ColumnWidths = "50;100;100"
Me.TextBox1.Value = ""


Set Sh1 = Nothing
End Sub
 

Pièces jointes

  • Forcer un Textbox.xlsm
    19.1 KB · Affichages: 3

Dranreb

XLDnaute Barbatruc
Je me suis trompé, j'ai confondu avec UserForm_QueryClose pour TextBox1_Exit c'est ByVal Cancel As MSForms.ReturnBoolean
Ils auraient quand même pu adopter le même système pour les deux, même si à bien y réfléchir ça aboutit exactement au même code machine.
 

Discussions similaires

Réponses
8
Affichages
453

Statistiques des forums

Discussions
313 928
Messages
2 103 632
Membres
108 739
dernier inscrit
titoooo428