Sélection dans Listbox

  • Initiateur de la discussion Initiateur de la discussion Crilam
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Crilam

XLDnaute Nouveau
Bonjour à tous, après avoir parcouru les divers fils j'ai créé un fichier d'enregistrement de données. Je remercie tous les passionnés de mettre à dispo leurs compétences.

Dans la listbox, je souhaiterai pouvoir revenir sur le dernier enregistrement modifié. Le retour se fait actuellement sur le premier enregistrement. Est-ce possible ?

Merci de votre aide
 

Pièces jointes

Re : Sélection dans Listbox

Bonsoir Crilam

Du bidouillage 🙄

J'ai rajouté une variable publique qui renverra le mot recherché :
VB:
Public mot As String
Puis j'ai modifié :
VB:
Private Sub CommandButton4_Click()
Dim L2 As Integer
L2 = WsBase.Range("A50").End(xlUp).Row + 1
With WsBase
  .Range("A" & L2).Value = TextBox1.Value
  mot = TextBox1.Value
End With
Unload Me
UserForm1.Show
End Sub
J'utilise la méthode Find pour retrouver le dernier mot ajouté à ta liste :
VB:
Private Sub SortNom()
Dim Cel As Range
Dim LL As Integer
Dim Plage As Range
LL = ThisWorkbook.Sheets("Database").Range("A65536").End(xlUp).Row
Set Plage = ThisWorkbook.Sheets("Database").Range("A2:b" & LL)
Plage.Sort ThisWorkbook.Sheets("Database").Columns("A"), _
Order1:=xlAscending, Header:=xlGuess
'''''rajout
Set Cel = Feuil3.Range("A2:A" & Feuil3.Cells(Rows.Count, 1).End(xlUp).Row).Find(What:=mot, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
        , SearchFormat:=False)
If Not Cel Is Nothing Then
  Cel.Select
End If
'''''
End Sub
C'est pas très joli, joli 😛
Klin89
 
Re : Sélection dans Listbox

Merci klin89 pour ta solution par "bidouillage". La beauté m'importe peu.

J'ai testé mais a priori cela ne fonctionne pas ce qui n'est pas étonnant au regard de mon niveau VBA, j'ai du zapper quelque chose. Le retour après modif se fait toujours sur listindex = 0 et si je le supprimer la listbox n'est pas sélectionnée.

Ne gâche pas ton WE pour moi mais si tu n'as vraiment rien d'autre à faire, je suis preneur.

Bonne journée
 
Re : Sélection dans Listbox

Re Crilam

Précision : je n'ai pas chercher à revoir toutes les procédures.
J'ai fait du bricolage.

2 variables publiques :
VB:
Public mot As String
Public lig As Long
Remplace les procédures initiales par celles-ci :
VB:
Private Sub UserForm_initialize()
Dim L As Integer
Dim Plage As String
Dim CTRL As Control
ThisWorkbook.Activate
SortNom
Set ActuelWkbk = ThisWorkbook
With ActuelWkbk
  Set WsBase = .Worksheets("Database")
End With
For Each CTRL In Controls
  If CTRL.Tag = "IniTextBox" Then
    With CTRL
      .Value = ""
      .Enabled = False
    End With
  End If
Next
For Each CTRL In Controls
  If CTRL.Tag = "IniFalse" Then
    CTRL.Visible = False
  End If
Next
L = WsBase.Range("A65536").End(xlUp).Row
Plage = WsBase.Range("A2:B" & L).Address
ListBox1.RowSource = "Database!" & Plage
Caption = "Gestion"
'ListBox1.ListIndex = 0
If lig = 0 Then lig = 2
ListBox1.ListIndex = lig - 2
End Sub
VB:
Private Sub CommandButton4_Click()
Dim L2 As Integer
L2 = WsBase.Range("A50").End(xlUp).Row + 1
With WsBase
  .Range("A" & L2).Value = TextBox1.Value
  mot = TextBox1.Value
End With
Unload Me
UserForm1.Show
End Sub
VB:
Private Sub SortNom()
Dim Cel As Range
Dim LL As Integer
Dim Plage As Range
LL = ThisWorkbook.Sheets("Database").Range("A65536").End(xlUp).Row
Set Plage = ThisWorkbook.Sheets("Database").Range("A2:b" & LL)
Plage.Sort ThisWorkbook.Sheets("Database").Columns("A"), _
Order1:=xlAscending, Header:=xlGuess
'''''rajout
Set Cel = Feuil3.Range("A2:A" & Feuil3.Cells(Rows.Count, 1).End(xlUp).Row).Find(What:=mot, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
        , SearchFormat:=False)
If Not Cel Is Nothing Then
  Cel.Select
  lig = Cel.Row
End If
'''''
End Sub
Si cela fonctionne, il faudra remercier le Saint Esprit 🙄

Edit : J'ai eu du mal à comprendre l'interaction entre les différents controles listés ci-dessous.
De plus, les CommandButtons sont superposés dans ton formulaire : ce qui entretient la confusion et a pu en rebutter plus d'un pour t'apporter une solution.
1 ListBox, 1 Textbox et 6 CommandButtons

Je n'ai pas modifié CommandButton5_Click mais il est similaire à CommandButton4_Click

Klin89
 

Pièces jointes

Dernière édition:
Re : Sélection dans Listbox

Re klin89,

Un énooooorme merci. fonctionnement nickel. Je ne sais pas s'il faut prier le Saint Esprit mais je glisserai un mot au nouveau pape.

Pour les CommandButtons superposés, je pensais à l'ergonomie pour les futurs utilisateurs de l'association mais ce n'est, a priori, pas une bonne idée.

Merci encore et bon WE 🙂🙂🙂🙂🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
511
Réponses
16
Affichages
1 K
Retour