VBA plusieurs listbox sans doublons

francoisC

XLDnaute Junior
Bonjour et merci pour votre attention
J'ai un souci avec le code. erreur 380

mon classeur est constitué de 12 feuilles représentant les 12 mois de l'année
Avec un userform, et ses 12 listbox je souhaite voir la liste sans doublon des colonnes "I".

voici mon code :

Private Sub UserForm_Initialize()
Dim i As Integer
Dim j As Long
Dim mois(1 To 12) As String

For i = 1 To 12
mois(i) = Format(DateSerial(1, i, 1), "mmmm")
Me.Controls("Label" & i) = mois(i)

For j = 1 To Sheets(mois(i)).Range("I65536").End(xlUp).Row
Me.Controls("ListBox" & i) = Sheets(mois(i)).Range("I" & j)
If Me.Controls("ListBox" & i).ListIndex = -1 Then Me.Controls("ListBox" & i).AddItem Sheets(mois(i)).Range("I" & j)
Next j
Next i
End Sub




Où est l'erreur ? merci bien
 

CPk

XLDnaute Impliqué
Re : VBA plusieurs listbox sans doublons

Bonjour. Cette ligne n'est pas correctement orthographiée pour alimenter une listbox, il manque un index et une méthode

Code:
Me.Controls("ListBox" & i) = Sheets(mois(i)).Range("I" & j)
 
Dernière modification par un modérateur:

francoisC

XLDnaute Junior
Re : VBA plusieurs listbox sans doublons

Ok CPk merci pour ta réponse, mais je n'y connais rien ou presque au VBA
Que dois-je ajouter pour que cela fonctionne ?
Merci
 

Pièces jointes

  • Classeur.xlsm
    23.6 KB · Affichages: 61
  • Classeur.xlsm
    23.6 KB · Affichages: 47

CPk

XLDnaute Impliqué
Re : VBA plusieurs listbox sans doublons

Point 1
le code est dans
Code:
Private Sub UserForm_Click()
Alors qu'il devrait être dans
Code:
Private Sub UserForm_initialize()

Car c'est à l'ouverture que vous voulez voir afficher les informations.

Point 2
Vous avez une boucle qui va de 1 à 12 mais des labels qui vont de 1 à 13 en n'ayant pas le 7.
Donc quand i = 7 la macro cherche le label7 ---> Me.controls("Label" & i).

Donc pour commencer il faut rectifier les labels (avoir des label numéroté de 1 à 12) et ensuite on examinera le reste de la macro
 

francoisC

XLDnaute Junior
Re : VBA plusieurs listbox sans doublons

Ok Desolé Dans ma précipitation je n'ai pas été attentif.
Je pense avoir rectifié le tir pour cette étape... et je reste à l'écoute. merci
 

Pièces jointes

  • Classeur.xlsm
    24.6 KB · Affichages: 62
  • Classeur.xlsm
    24.6 KB · Affichages: 51

CPk

XLDnaute Impliqué
Re : VBA plusieurs listbox sans doublons

D'ailleurs, la voici corrigée mais elle ne sera fonctionnelle que lorsque vous aurez créez vos 12 label dans l'ordre


Code:
Private Sub UserForm_initialize()
    Dim dico As Object
    Set dico = CreateObject("scripting.dictionary")
    dico.comparemode = 1
    Dim i As Integer
    For i = 1 To 12
        mois = Format(DateSerial(Year(Date), i, 1), "mmmm")
        Me.Controls("Label" & i) = mois
        For j = 2 To Sheets(mois).Cells(Rows.Count, 9).End(3).Row
            If Not dico.exists(Sheets(mois).Cells(j, 9).Value) Then
                Me.Controls("listbox" & i).AddItem Sheets(mois).Cells(j, 9).Value
                dico.Item(Sheets(mois).Cells(j, 9).Value) = ""
            End If
        Next j
    Next i
End Sub
 
Dernière modification par un modérateur:

Discussions similaires

Réponses
11
Affichages
297

Statistiques des forums

Discussions
312 276
Messages
2 086 714
Membres
103 377
dernier inscrit
fredy45