Microsoft 365 N'afficher que la dernière ligne d'un tableau dans listbox

meyscal

XLDnaute Occasionnel
Bonjour à tous,

je cherche désespérément une solution pour n'afficher que la dernière ligne de mon tableau dans ma ListBox.
Celle-ci se trouve dans 1 UserForm avec TextBox et Combobox.
Ces derniers contrôles reprennent les éléments de la ListBox afin de pouvoir la modifier.

Ce formulaire permet justement aux utilisateurs après vérification de leur dernière saisie de la modifier si erreur. Je reprends donc la dernière ligne remplie du tableau vu que les saisies s'incrémentent à la fin.
Voilà je vous explique exactement car vous l'aurez compris, je ne veux pas que les personnes modifient une autre ligne !

Ci-dessous le code ; l'avant dernière ligne (que j'ai passé en texte) me permet de trier en ordre inverse donc avec la dernière ligne tout en haut et en réduisant significativement la hauteur de la ListBox, j'arrive à n'afficher que ça mais c'est pas pour autant très sécurisé ... un petit malin, arrivera toujours à descendre quand-même !

Accessoirement, j'aimerais également que cette ligne soit de suite sélectionnée à l'Initialize du UF pour pas à avoir à cliquer dessus pour afficher les champs dans les TB et CB mais si pas possible je mettrai 1 label au-dessus pour l'indiquer, donc c'est pas trop grave.

Petite précision, je fais cela en bénévolat pour une association histoire de leur faciliter le travail donc si vous m'aider vous faites également votre BA et c'est toujours bon à prendre les points de Karma ;)

Un rand grand merci par avance !

VB:
Private Sub UserForm_Initialize()
Sheets("Indemnités_km").Activate
With ListBox1
.List = Range("A4:J" & Range("A303").Row).Value
.ColumnCount = 6
End With
ListBox1.ColumnWidths = "70;250;250;110;50;50"
Dim i As Integer
For i = ListBox1.ListCount - 1 To 0 Step -1
    If ListBox1.List(i) = "" Then ListBox1.RemoveItem (i)
Next i
'ListBox1.TopIndex = ListBox1.ListCount - 2
End Sub
 

meyscal

XLDnaute Occasionnel
Bonsoir job75

oui bonne remarque ! En fait c'est un oubli. Je n'ai pas modifié cette partie car au départ mes colonnes avec formules étaient dispersées partout dans le tableau et j'avais donc la totalité des colonnes.
Mais ça s'est vite avéré compliqué d'adapter à chaque fois le code donc j'ai déplacé mes colonnes avec formules et réadapté plusieurs codes. Celui-ci a été oublié
Voilà tu sais tout ;)
 

job75

XLDnaute Barbatruc
Bon je ne prends donc que les 6 premières colonnes de la feuille source :
VB:
Private Sub UserForm_Initialize()
Dim c As Range
Set c = Sheets("Indemnités_km").Range("A4:F303").Find("*", , xlValues, , , xlPrevious)
With ListBox1
    .ColumnCount = 6
    .ColumnWidths = "70;250;250;110;50;50"
    If c Is Nothing Then Exit Sub
    .List = c.EntireRow.Resize(, 6).Value
    .Selected(0) = True
End With
End Sub
Comme demandé une seule ligne est affichée dans la ListBox.
 

meyscal

XLDnaute Occasionnel
Re,

pardon j'ai fait un peu vite ...
Maintenant c'est l'index qui ne va plus 😒
Je retrouve dans le TB et CB que les valeurs de la 1ère ligne

Une idée de comment modifier SVP ? Je vais essayer en modifiant l'évènement... voire ajouter dans l'initialize du UF. Mais j'en doute car même en cliquant sur la ligne ça ne s'actualise pas
Mais au cas où je ne trouve pas ...

Voici le code :

VB:
Private Sub ListBox1_Click()
For X = 1 To 5
Me.Controls("TextBox" & X).Value = Cells(Me.ListBox1.ListIndex + 4, X)
Next X
End Sub
 

meyscal

XLDnaute Occasionnel
Re,

pardon j'ai fait un peu vite ...
Maintenant c'est l'index qui ne va plus 😒
Je retrouve dans le TB et CB que les valeurs de la 1ère ligne

Une idée de comment modifier SVP ? Je vais essayer en modifiant l'évènement... voire ajouter dans l'initialize du UF. Mais j'en doute car même en cliquant sur la ligne ça ne s'actualise pas
Mais au cas où je ne trouve pas ...

Voici le code :

VB:
Private Sub ListBox1_Click()
For X = 1 To 5
Me.Controls("TextBox" & X).Value = Cells(Me.ListBox1.ListIndex + 4, X)
Next X
End Sub
Non j'ai essayé et c'est bien ce que je pensais ça ne fonctionne plus ...
Egalement en passant Selected(0) = False et sélection de la ligne.
Problème lié à l'index ?
 

Discussions similaires

Réponses
4
Affichages
165
Réponses
17
Affichages
760
Réponses
8
Affichages
355

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof