Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA plusieurs listbox sans doublons

  • Initiateur de la discussion Initiateur de la discussion francoisC
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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:
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
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
465
Réponses
10
Affichages
580
Réponses
5
Affichages
779
Réponses
8
Affichages
314
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…