ListBox

Bonjour,

J'ai essayé de copier une formule pour faire une ListBox (j'ai besoin d'avoir plusieurs paramètres dans une sorte de liste déroulante) que j'ai trouvé sur un ancien sujet mais j'ai un souci.

Quand j'ai travaillé sur d'autres fichiers j'ai eu les mêmes soucis (VBA me met une erreur sur les fonctions Me.) est-ce que quelqu'un saurait m'aider ?

Sur l'image du débogeur, sur mon écran le .ListBox est surligné.

Cordialement.

erreur affichee quand je clique sur n importe quelle cellule du classeur

Bonjour Mellul, bonjour le forum,

Dans le fichier en pièce jointe chez moi pas d'erreur. Toutefois j'ai remarqué que le code se trouvait dans l'onglet Choix alors que dans la capture d'écran c'est l'onglet Janvier qui est sélectionné. Comme Me fait référence à l'onglet où se trouve la ListBox1, c'est peut-être ça ton soucis...

Bonjour,

Je l'ai changé de fenêtre mais le même souci est présent --'.

Est-ce que vous pensez que ça peut être un paramétrage qui fait ça ? Si ça marche chez vous et que ça me fait ça sur toutes mes macros, ça veut dire que c'est mon excel qui a un souci non ?

Cordialement.

J'ai lu sur un autre forum qu'il pourrait judicieux de de définir le type de données avec :

Dim ListBox1 as ....

mais j'ignore si String est un bon type de données pour une liste.

Cordialement.

Bonjour Mellul, bonjour le forum,

J'ai bien galéré sur ce coup là. Je pensais y arriver en ne créant qu'une seule ListBox mais il m'a fallu en crée une par onglet. En pièce jointe le fichier qui semble être fonctionnel. Il y a une partie générale dans le composant ThisWorkbook :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim LD As Worksheet
Dim TV As Variant

Set LD = Worksheets("Liste déroulante")
TV = LD.Range("A2:A" & LD.Cells(Application.Rows.Count, "A").End(xlUp).Row).Value
activesheet.ListBox1.MultiSelect = fmMultiSelectMulti
Select Case Sh.Name
    Case "Liste déroulante", "TUTO"
    Case Else
        If Not Intersect(Sh.Range("C2:C" & Sh.Cells(Application.Rows.Count, "A").End(xlUp).Row), Target) Is Nothing And Target.Count = 1 Then
            activesheet.ListBox1.MultiSelect = fmMultiSelectMulti
            activesheet.ListBox1.List = TV
            a = Split(Target, "-")
            If UBound(a) >= 0 Then
                For i = 0 To activesheet.ListBox1.ListCount - 1
                    If Not IsError(Application.Match(activesheet.ListBox1.List(i), a, 0)) Then activesheet.ListBox1.Selected(i) = True
                Next i
            End If
            activesheet.ListBox1.Height = 80
            activesheet.ListBox1.Width = 100
            activesheet.ListBox1.Top = Target.Top
            activesheet.ListBox1.Left = Target.Left + Target.Width
            activesheet.ListBox1.Visible = True
        Else
            activesheet.ListBox1.Visible = False
        End If
End Select
End Sub

Et une autre partie répétée dans chaque onglet (tout comme la ListBox1) :

Private Sub ListBox1_Change()
For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then temp = IIf(temp = "", ListBox1.List(i), temp & "-" & ListBox1.List(i))
Next i
ActiveCell = temp
End Sub

Le fichier :

11mellul-ep-v01.xlsm (113.62 Ko)

Merci beaucoup :DD

Bonjour,

Tu veux mettre plusieurs formations le même jour c'est ça ?

Je propose cette solution un peu plus light.

J'ai aussi allégé un peu le bornage de la zone de déclenchement du UserForm : il faut limiter l'affichage au nombre de lignes utiles, mébon c'est juste pour la démo : S'il le faut j'ajusterai...

A+

Bonjour,

Merci beaucoup, c'est parfait ! Je vais le garder de côté parce que finalement je me suis rendue compte que ce n'était pas très pratique car chaque formation a son horaire propre et sa salle dédiée et avec ce système, ça n'apparaît pas assez clairement mais merci beaucoup !

Cordialement.

Rechercher des sujets similaires à "listbox"