Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau Candidat au Club
    Liste à choix multiple avec contenu variable (position de la listBox)
    Bonjour,
    Débutante en VBA/Macro, j'ai suivi un tutoriel pour créer une macro.
    Dans la colonne AH j'ai une liste déroulante simple et selon le choix, dans la colonne AI s'affiche une série d'options (qui dépendent du choix en AH) avec possibilité de choix multiples. Jusque la tout va bien.

    Mon problème: ma "Listbox" qui s'affiche avec les options lorsque je me situe sur la cellule active en colonne AI ne se positionne pas correctement, plus je descends dans le tableau, plus la Listbox s'affiche trop bas. Mon tableau faisant plus de 10.000 lignes, lorsque je suis tout en bas du tableau ma Listbox s'affiche quelques centaines de lignes plus bas ...

    Dans le code j'ai pourtant écris .Top = ActiveCell.Top qui me semblait gérer la position de la Listbox (voir extrait du code ci-dessous)

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    With Me.ListBox1
          .MultiSelect = fmMultiSelectMulti
          .ListStyle = fmListStyleOption
          .Height = 300
          .Width = 200
          .Top = ActiveCell.Top
          .Left = ActiveCell.Offset(0, 1).Left
          .Visible = True


    Comment gérer ce problème ?
    Merci beaucoup pour votre aide !!!
    Caroline

  2. #2
    Membre chevronné
    Bonsoir,

    Exxemple en PJ

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect([A2:A30], Target) Is Nothing Then
        Me.ListBox1.MultiSelect = fmMultiSelectMulti
        Me.ListBox1.List = Sheets("BD").Range("A2:A28").Value
        a = Split(Target, " ")
        If UBound(a) >= 0 Then
          For i = 0 To Me.ListBox1.ListCount - 1
            If Not IsError(Application.Match(Me.ListBox1.List(i), a, 0)) Then Me.ListBox1.Selected(i) = True
          Next i
        End If
        Me.ListBox1.Height = 150
        Me.ListBox1.Width = 100
        Me.ListBox1.Top = Target.Top
        Me.ListBox1.Left = Target.Left + Target.Width
        Me.ListBox1.Visible = True
      Else
          Me.ListBox1.Visible = False
      End If
    End Sub
     
    Private Sub ListBox1_Change()
     For i = 0 To Me.ListBox1.ListCount - 1
       If Me.ListBox1.Selected(i) = True Then temp = temp & Me.ListBox1.List(i) & " "
     Next i
     ActiveCell = Trim(temp)
    End Sub


    Boisgontier

  3. #3
    Nouveau Candidat au Club
    Merci pour votre réponse, je vais essayer !

    Encore merci

###raw>template_hook.ano_emploi###