[VBA Excel] problème avec ListBox1.Selected

Résolu
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 20 mai 2008 à 13:19
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 21 mai 2008 à 01:55
 Bonjour à tous,

'[Code UserForm1]
Private Sub UserForm_Initialize()
Application.ScreenUpdating = False
Sheets("feuil1").Select
ListBox1.RowSource = "A2:C" & (Range("C2").End(xlDown).Row) + 1
Application.ScreenUpdating = True
End Sub

Private Sub ListBox1_Click()
Dim strUproc As String
Dim i As Integer

Label4.Caption = ""
ComboBox1.Value = ""
strUproc = ListBox1.Column(2)

If IsEmpty(ListBox1.Column(0)) Then
   For i = ListBox1.ListIndex - 1 To 0 Step -1
       If Not IsEmpty(ListBox1.List(i, 0)) Then
          TextBox3.Text = "BSS n° " & ListBox1.List(i, 0) & vbLf
          TextBox3.Text = TextBox3.Text & "Session" & vbTab & ListBox1.List(i, 1) & vbLf
          Exit For
       End If
   Next i
Else
   TextBox3.Text = "BSS n° " & ListBox1.Column(0) & vbLf
   TextBox3.Text = TextBox3.Text & "Session" & vbTab & ListBox1.Column(1) & vbLf
End If

TextBox3.Text = TextBox3.Text & "Uproc" & vbTab & strUproc & vbCrLf

If Not Range("C" & ListBox1.ListIndex + 2).Comment Is Nothing Then
   TextBox3.Text = TextBox3.Text & vbCrLf & _
                   Range("C" & ListBox1.ListIndex + 2).Comment.Text
Else
   TextBox3.Text = TextBox3.Text & vbCrLf & _
                   "Conditions de reprise non rédigées"
End If
End Sub

Private Sub ComboBox1_DropButtonClick()
Dim recherche As Range

Label4.Caption = ""

Set recherche = Columns.Find(what:=Trim(ComboBox1.Text))

If recherche Is Nothing Then
   Label4.Caption = ComboBox1.Text & " non trouvé"
   Else
   ListBox1.Selected(recherche.Row - 2) = True
End If

Set recherche = Nothing
End Sub

Je me sers du ComboBox pour rechercher un mot (ou chiffre) contenu dans une des 3 colonnes de la ListBox.
Si le mot existe, le Selected se positionne sur la bonne ligne de la ListBox, puis me signale l'erreur suivante:

Erreur d'exécution '380':
Impossible de définir la propriété Selected.
Valeur de propriété non valide.

 ListBox:
titre1    titre2        titre3
9999    xyxyxy    aaaaa00
                           aaaaa01
                           aaaaa99
8888    yxyxyx    fffff00
                          fffff01
                          fffff02
                          fffff99
2222    etc

Je me sers du ComboBox pour rechercher un mot (ou chiffre) contenu dans une des 3 colonnes de la ListBox.
Si le mot existe, le Selected se positionne sur la bonne ligne de la ListBox, puis me signale l'erreur suivante:

Erreur d'exécution '380':
Impossible de définir la propriété Selected.
Valeur de propriété non valide.

Si je mets "ListBox1.Selected(recherche.Row) = True" et je recherche "8888", je n'ai pas d'erreur, mais
- la ligne courante de la ListBox est "fffff02" au lieu de "8888   yxyxyx    fffff00";

Puis, si click sur le UserForm, la ligne "fffff02" est dé-selectionnée
et la ligne courante de la ListBox devient la 3ème (aaaaa01).

Quelles sont mes erreurs de scripting ????

jean-marc

6 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 mai 2008 à 00:02
Essaie en inversant cette condition, juste pour voir.
J'ai remarqué que If Not...Is Nothing fonctionnait bien contrairement à If... Is Nothing dans certains cas...

If Not recherche Is Nothing Then
   ListBox1.Selected(recherche.Row - 2) = True
Else
   Label4.Caption = ComboBox1.Text & " non trouvé"
End If

Et j'opterais quand même pour le Combobox_Click comme le disait Jimy Neutron.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
20 mai 2008 à 13:51
Salut,

Pourquoi places-tu ton code dans 'Private Sub ComboBox1_DropButtonClick()' et pas dans le Private Sub ComboBox1_Click()

Jimy
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
20 mai 2008 à 14:14
 Bonjour Jimy Neutron,

Avec

Private Sub ComboBox1_Click()
Dim recherche As Range
MsgBox " click combo"

je saisi "fffff01" dans la combo, click et nada ... pas de msgbox

jean-marc
0
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
20 mai 2008 à 15:18
En effet, ces l'evenement que j'utilise en VB6, peut-etre est-ce different en VBA?

Sorry
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
21 mai 2008 à 01:35
 Bonsoir MPi,

J'ai corrigé ce problème.
         [ListBox1.ListIndex = recherche.Row - 1]     =     [ListBox1.Selected(recherche.Row - 1) = True]

   If ComboBox1.Value <> "" Then
      Set recherche = Columns.Find(what:=Trim(ComboBox1.Value))
  
      If recherche Is Nothing Then
         Label4.Caption = ComboBox1.Value & " non trouvé"
         Else
         'ListBox1.ListIndex = recherche.Row - 1
         ListBox1.Selected(recherche.Row - 1) = True

         If Not IsInList(UCase(ComboBox1.Value), ComboBox1) Then
            ComboBox1.AddItem UCase(ComboBox1.Value)
         End If
      End If
   End If

ListBox1.SetFocus

Par contre, la selection issue du combobox positionne la ligne courante sur la dernière ligne de la ListBox1.
Je n'arrive pas à trouver les propriétes pour positionner le résultat de la recherche en haut de la ListBox1.

Une idée ???

jean-marc
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 mai 2008 à 01:55
Petite parenthèse... Avec un Combobox, j'utilise toujours .Text plutôt que .Value

Autrement, Selected devrait suffire si la valeur de recherche.Row est bien la bonne...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Rejoignez-nous