Double clic dans listbox => affiche la ligne du tableau source

egman

XLDnaute Occasionnel
Bonjour à TOUT le Forum,

J'ai un petit souci pour afficher la ligne sélectionnée lors d'un double clic dans ma ListBox......

Code:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim Lig
Lig = Me.ListBox1.ColumnCount = nbcol
ActiveSheet.Rows(Lig).Select
Unload UserForm1
End Sub

Est ce que c'est une mauvaise déclaration d'objets......

Également y' a t' il une astuce pour aligner les Labels d'en tête aux colonnes de la ListBox ?

Merci pour votre aide
 

Pièces jointes

  • _Copie FICHIER IMMO.xlsm
    32.7 KB · Affichages: 89

CHALET53

XLDnaute Barbatruc
Re : Double clic dans listbox => affiche la ligne du tableau source

Bonjour,

Peut-être comme ceci :

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim Lig
Lig = Me.ListBox1.ListIndex + 2 ' = nbcol

ActiveSheet.Rows(Lig).Select
Unload UserForm1
End Sub


a+
 

egman

XLDnaute Occasionnel
Re : Double clic dans listbox => affiche la ligne du tableau source

Bonjour,

Peut-être comme ceci :

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim Lig
Lig = Me.ListBox1.ListIndex + 2 ' = nbcol

ActiveSheet.Rows(Lig).Select
Unload UserForm1
End Sub


a+

Bonjour CHALET53,
Merci pour ta réponse qui fonctionne "à moitié"......
Cela fonctionne si je double clic sur une ligne de la ListBox (sans passer par un choix de la TxtBox) mais si je fais une recherche via ma TxtBox et que je double clic sur une des lignes recherchées cela ne fonctionne plus.......çà me sélectionne n'importe quelle ligne du tableau.....
As tu une idée du pourquoi ?

D'avance MERCI
 

Si...

XLDnaute Barbatruc
Re : Double clic dans listbox => affiche la ligne du tableau source

salut

Il semblerait que seuls les codes pièces soient sans doublons alors faire une recherche sur sa colonne (D ici)
VB:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  Lig = [D:D].Find(ListBox1.List(ListBox1.ListIndex, 3)).Row
  Cells(Lig, 1).Select
  'ou Application.Goto Cells(Lig, 1), 1 pour l'avoir en première ligne
   Unload UserForm1
End Sub

Nota : je remplacerais le nom ListBox1 par un plus court (L1, Lst...) pour avoir une écriture et une lecture simplifiées.
 

Modeste

XLDnaute Barbatruc
Re : Double clic dans listbox => affiche la ligne du tableau source

Bonsoir le fil,

J'avais eu, au départ, la même idée que Si... (sauf qu'en y regardant de plus près, il m'a bien fallu constater que le code EE00446AA, ainsi qu'un autre, sont présents en double, en colonne D :()

Donc, Si... un identifiant unique existe dans le "fichier réel", profitons-en!
À défaut, on pourrait stocker le n° de ligne dans la ListBox (dans une colonne cachée, le cas échéant)

Quoi qu'il en soit, il va bien falloir qu'egman nous en dise un peu plus!
 

egman

XLDnaute Occasionnel
Re : Double clic dans listbox => affiche la ligne du tableau source

Bonsoir SI et Modeste,

Merci pour vos réponses.

Ce tableau comporte 2500 lignes sur 30 col. et se compose de pièces à 2 niveaux en décomposition mais avec doublons...
Une pièce (Code pièce) peut faire partie d'un même sous ensemble (Code S/E niv.2) qui lui même appartient à différents produits finis (Code PF niv.1) (d'où les doublons)

Ma "recherche" à l'origine sert à situer et isoler un certain nombre de pièces pour leur gestion.
Peut être que j'utilise pas le bon contrôle et qu'un système de listes en cascade serait plus judicieux.

Merci pour vos conseils et astuces.
 

Modeste

XLDnaute Barbatruc
Re : Double clic dans listbox => affiche la ligne du tableau source

Re,

Ce n'est qu'un avis, mais afficher 2500 lignes sur 30 colonnes dans un UserForm, au chargement de celui-ci ... ça me paraît un peu "démesuré". Mais bon, ce que j'en dis ...

Une solution à ta question, tout de même. Elle a le mérite d'être simple (même si sans doute pas un modèle d'orthodoxie).

En X2, écris
Code:
=LIGNES($1:2)
et recopie aussi bas que tu le veux.
Cette colonne (avec ton code tel qu'il est) figurera donc en dernière colonne aussi dans ta ListBox. Lors du double clic sur un item de la liste, il suffit de lire la valeur de la dernière colonne de la ListBox, avec
Code:
Lig = Me.ListBox1.List(ListBox1.ListIndex, 23)

... à tester ...

PS: il y a -au stade actuel- plus de colonnes que ce que permet la largeur de l'Usf. Quand tu utilises le scroll horizontal, tes labels ne "suivent" pas les colonnes. Tu avais remarqué?
 

egman

XLDnaute Occasionnel
Re : Double clic dans listbox => affiche la ligne du tableau source

Bonjour Modeste,

Merci pour ton astuce en X2

Oui j'avais remarqué que les Labels dans le Usf. ne suivaient pas.....mais bon j'ai pas vraiment de solution.

Pour ce qui est de charger 2500 lignes dans le Usf. je ne sais pas trop comment faire autrement.
Le Usf. est fait à la base pour justement m'aider à trouver plus facilement mes infos du tableau.
Je n'ai peut être pas pris la bonne solution pour rechercher mes infos...?
 

Modeste

XLDnaute Barbatruc
Re : Double clic dans listbox => affiche la ligne du tableau source

Bonjour,

Je n'ai peut être pas pris la bonne solution pour rechercher mes infos...?
Bah, on ne connaît pas ton contexte de travail, ni l'histoire du fichier, mais un tri et des filtres dans la feuille elle-même aboutiraient -à première vue- au même résultat :confused:
 

Discussions similaires

Réponses
12
Affichages
1 K