[VBA Excel] problème avec ListBox1.Selected [Résolu]

cs_JMO 1838 Messages postés jeudi 23 mai 2002Date d'inscription 1 avril 2018 Dernière intervention - 20 mai 2008 à 13:19 - Dernière réponse : cs_MPi 3863 Messages postés mardi 19 mars 2002Date d'inscription 13 mars 2018 Dernière intervention
- 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
Afficher la suite 

6 réponses

Répondre au sujet
cs_MPi 3863 Messages postés mardi 19 mars 2002Date d'inscription 13 mars 2018 Dernière intervention - 21 mai 2008 à 00:02
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MPi
jimy neutron 491 Messages postés mercredi 1 février 2006Date d'inscription 18 novembre 2016 Dernière intervention - 20 mai 2008 à 13:51
0
Utile
Salut,

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

Jimy
Commenter la réponse de jimy neutron
cs_JMO 1838 Messages postés jeudi 23 mai 2002Date d'inscription 1 avril 2018 Dernière intervention - 20 mai 2008 à 14:14
0
Utile
 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
Commenter la réponse de cs_JMO
jimy neutron 491 Messages postés mercredi 1 février 2006Date d'inscription 18 novembre 2016 Dernière intervention - 20 mai 2008 à 15:18
0
Utile
En effet, ces l'evenement que j'utilise en VB6, peut-etre est-ce different en VBA?

Sorry
Commenter la réponse de jimy neutron
cs_JMO 1838 Messages postés jeudi 23 mai 2002Date d'inscription 1 avril 2018 Dernière intervention - 21 mai 2008 à 01:35
0
Utile
 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
Commenter la réponse de cs_JMO
cs_MPi 3863 Messages postés mardi 19 mars 2002Date d'inscription 13 mars 2018 Dernière intervention - 21 mai 2008 à 01:55
0
Utile
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
Commenter la réponse de cs_MPi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.