selection d'une cellule dont la valeur est inscrite dans une listbox

gilles72

XLDnaute Junior
Bonjour,
depuis une listbox dans laquelle je selectionne une des valeurs, cette valeur va dans la cellule activée (activecell).
Plutot que de récupérer cette valeur dans la cellule active,
Je souhaiterais selectionner la cellule de la liste servant à alimenter la listbox (liste de 2900 lignes environ), ou bien la ligne elle même.
Je ne sais pas si je suis très clair
Merci de votre aide
Gilles72
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : selection d'une cellule dont la valeur est inscrite dans une listbox

Bonjour Gilles, bonjour le forum,

C'est clair mais ça manque de détails. La ListBox se trouve où ? Onglet ou UserForm ?
Si elle se trouve sur l'onglet, elle a été générée avec quelle barre d'outils ? Boîte à outils Contrôle ou Formulaire ?
La liste qui alimente la ListBox se trouve dans quel onglet ?

Comme tu vois, un fichier exemple serait le bienvenu.
 
G

Guest

Guest
Re : selection d'une cellule dont la valeur est inscrite dans une listbox

Bonjour,

Robert:)

Vois si cela te convient:
VB:
Sub ListBox1_Click()
    Dim Var
    Dim NumLg
    On Error Resume Next
    Dim c As Range
    'Var = InputBox(Prompt:="Taper la valeur recherchée. ")
    Var = Me.ListBox1
    Set c = Sheets("BD").Cells.Find(What:=(Var), LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
    If Not c Is Nothing Then
        With Application
            .EnableEvents = False
            .Goto c
            .EnableEvents = True
        End With
    End If
 
    '///////////////////////////////// comprends pas l'utilité de ceci:
    With Application.Cells
        NumLg = .Row
    End With
    '/////////////////////////////////
    'ActiveCell.EntireRow.Select
    Cells.Offset(0, 1).Select
    Unload Me
End Sub

Comme tu as un gestionnaire évènement Selection_Change sur ta feuille. Si dans ton userForm tu active ou sélectionne une cellule de cette feuille, il sera relancé.->

Essaie de toujours spécifier sur quelle feuille s'applique les Cells et Range soit avec with...End With soit avec Sheets("NomFeuille").

A+
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : selection d'une cellule dont la valeur est inscrite dans une listbox

Bonjour Gilles, bonjour le forum,

Pour éviter le message d'erreur j'ai utilisé une variable publique booléenne test (dans le module Module1). Ensuite ce code dans le ListBox1_Click :
Code:
Sub ListBox1_Click()
test = True
Columns(1).Find(Me.ListBox1.Value, , xlFormulas, xlWhole).Select
test = False
Unload Me
End Sub
et cette ligne modifiée dans le code dans l'événement SelectionChange :
Code:
If test = False Then UserForm3.Show

[Édition]
Bonjour Hasco on s'est croisé
 

Pièces jointes

  • Gilles_v01.xls
    77.5 KB · Affichages: 111
  • Gilles_v01.xls
    77.5 KB · Affichages: 97
  • Gilles_v01.xls
    77.5 KB · Affichages: 113

gilles72

XLDnaute Junior
Re : selection d'une cellule dont la valeur est inscrite dans une listbox

Rebonjour ROBERT,
merci de ta pugnacité
Effectivement le code est simplifié
Une question de néophyte:
le fait de mettre une variable publique booléenne test (dans le module Module1).
ça joue en quoi, (si tu veux bien tolérer mon ignarité!!)?
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : selection d'une cellule dont la valeur est inscrite dans une listbox

Bonjour le fil, bonjour le forum,

Le fait de déclarer la variale publique lui donne une portée sur tous les composants VBA. Aussi bien dans un composant onglet (Feuil1(Feuil1) par exemple), que dans une Userform, ou dans une procédure d'un module.
Comme dans ton cas elle servait autant dans l'UserForm que dans l'onglet (événement SelectionChange) nous n'avions pas le choix.
Je te recommande la lecture de cet excellent travail de Didier (MyDearFriend) ici.

Hasco, lui, a préféré éviter le message d'erreur de réouverture de l'UserForm avec la commande EnableEvents en lui attribuant la valeur False puis True. Au niveau de l'écriture du code c'est plus correct mais je n'aime pas ce procédé car si il y un bug avant que la valeur True ne soit réaffactée, les procédures événementielles (Change, SelectionChange, etc.) ne fonctionnent plus. Je préfère passer par une variable booléenne pour éviter cela.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 472
Messages
2 088 709
Membres
103 929
dernier inscrit
Tangerine9