Problème sur listbox - Récupération valeurs cellules

rkan

XLDnaute Nouveau
Bonjour,

je tente de mettre en place un alerte au démarrage de ma feuille excel sous la forme d'un USERFORM.

ce USERFORM contient des listbox qui reprennent des infos de ma feuille de SYNTHESE,

Je me suis largement inspiré du Tuto sur le site :

HTML:
http://www.google.fr/url?sa=t&rct=j&q=listbox%20vba&source=web&cd=1&ved=0CCUQFjAA&url=http%3A%2F%2Fsilkyroad.developpez.com%2FVBA%2FControlesUserForm%2F&ei=GZSGT6PxGOO10QXyreiqBw&usg=AFQjCNFF0QykxNpEJxJ3T_0-fftQ7Dp6FA

Mon problème concerne le code ci dessous, La listbox2 qui est censée me renvoyer les données de la colonne E en fonction du test sur la colonne N reste vide:

Code:
Private Sub UserForm_Initialize()
    Sheets("SYNTHESE").Select
    Dim Cell As Range
    Dim Unique As New Collection
    Dim Valeur As Range
    Dim i As Integer
    Dim j As Integer
    
    
'Date de rappel service client
    ListBox1.AddItem Range("SYNTHESE!K2")
    
'Date d'intervention
    ListBox6.AddItem Range("SYNTHESE!L1")
    
    
        
    'Récupère la derniere ligne non vide dans la colonne N
    i = Range("N65536").End(xlUp).Row
    j = Range("E65536").End(xlUp).Row
    
    On Error Resume Next
    'boucle sur les cellules de la colonne N
    For Each Cell In Range("N5:N" & i)
        j = i
        If CDate(Cell) = CDate(Range("SYNTHESE!L1")) Then
            Unique.Add Cell(j, 5), CStr(Cell(j, 5))
        End If
    Next Cell
    On Error GoTo 0
    
    'Boucle sur le contenu de la collection pour alimenter la ListBox
    For Each Valeur In Unique
            Me.ListBox2.AddItem Valeur
        
    Next Valeur
    
'Nombre d'affaire(s) concernée(s)
    ListBox7.AddItem ListBox2.ListCount
End Sub

Pour mieux comprendre j'ai mis ma feuille de synthèse en pièce jointe, merci d'avance pour l'aide.
 

Pièces jointes

  • feuille test01.xls
    69 KB · Affichages: 61

rkan

XLDnaute Nouveau
Re : Problème sur listbox - Récupération valeurs cellules

Bonjour,

j'ai hésité au départ pour ne pas trop surcharger le post et préféré joindre le fichier excel,

pour mieux comprendre le fonctionnement voilà les infos sur les listbox et sur mon tableau:

* Dans la dernière colonne de mon tableau AC je fais un calcul de date en appliquant la formule (date d'intervention)-AUJOURDHUI() (date d'intervention est en colonne N)

* sur la colonne AC j'applique une formule matricielle pour trouver le plus petit entier positif, le résultat est affiché en K1 :
Code:
{MIN(SI(AC5:AC107>0;AC5:AC107))}

*listbox6 : renvoie la valeur de la cellule L1 (prochaine date d'intervention) où L1 = AUJOURDUI()+K1

*listbox1 : renvoie la valeur de la cellule K2 (date de rappel du service client) où K2 = L1+1

*listbox 2: renvoie le numéro des affaires dont la date d'intervention en la plus proche

*listbox7 : renvoie le nombre de réponse collectée dans la listbox2
 

rkan

XLDnaute Nouveau
Re : Problème sur listbox - Récupération valeurs cellules

:) Voilà je crois avoir trouvé une solution, peut être pas la plus simple vu que je suis un bon débutant mais ça à l'air de fonctionner.

Code:
Private Sub UserForm_Initialize()
     Dim Unique As New Collection
     Dim Unique2 As New Collection
     Dim Valeur As Range
     Dim p As Long
     
     Sheets("SYNTHESE").Select
     
'Date de rappel du service client
    ListBox1.AddItem Range("SYNTHESE!K2")
    
'Date d'intervention
    ListBox6.AddItem Range("SYNTHESE!L1")
    
    
    On Error Resume Next
    
    'boucle sur les cellules de la colonne N
    For p = Range("N65536").End(xlUp).Row To 1 Step -1
        If CDate(Cells(p, 14)) = CDate(Range("SYNTHESE!L1")) Then
     'collecte données dans la colonne N
            Unique.Add Cells(p, 5), CStr(Cells(p, 5))
     'collecte données dans la colonne D
            Unique2.Add Cells(p, 4), CStr(Cells(p, 4))
        End If
    Next p
    
    On Error GoTo 0
    
    'Boucle sur le contenu de la collection pour alimenter la ListBox
    For Each Valeur In Unique
        'cette condition permet de ne pas retourner l'entête de la colonne
        If IsNumeric(Left(UCase(Valeur), 2)) = True Then
            Me.ListBox2.AddItem Valeur
        End If
        
    Next Valeur
    
    For Each Valeur In Unique2
        'cette condition permet de ne pas retourner l'entête de la colonne
        If Not Valeur.Value = "Projets" Then
            Me.ListBox8.AddItem Valeur
        End If
    Next Valeur
    
'Nombre d'affaire(s) concernée(s)
    ListBox7.AddItem ListBox2.ListCount
End Sub

Voilà n'hésitez pas à me corriger ou donner des conseils pour simplifier le truc
 

job75

XLDnaute Barbatruc
Re : Problème sur listbox - Récupération valeurs cellules

Re,

Quelques conseils :

- remplacer ListBox1 ListBox6 ListBox7 (et ListBox5) par des TextBox, vous ne semblez pas connaître ce contrôle

- au lieu d'une collection, il vaut mieux utiliser l'objet Dictionary pour obtenir une liste sans doublon, il y a de nombreux exemples sur le forum et le site de Jacques Boisgontier

- et puis quelque chose pour ouvrir l'UserForm ce serait bien...

A+
 

Discussions similaires

Réponses
0
Affichages
188

Statistiques des forums

Discussions
312 685
Messages
2 090 939
Membres
104 703
dernier inscrit
romla937