Erreur lors d'une selection dans ListBox

Poto

XLDnaute Occasionnel
Bonjour à tous,

Dans une de mes projet, j'utilise un userform contenant une listebox pour remplir automatiquement une cellule par rapport a la valeur choisi dans la listbox.

Voici le code contenu dans le userform
(code venant d'une aide sur ce forum, encore merci pour ca ;) )

Code:
Option Base 1

Private Sub UserForm_Initialize()
    Dim i&, fin&, aa As Variant, bb As Variant, cc As Variant, a&
    With Sheets("STAFF")
        fin = .Range("A2007").End(xlUp).Row
        aa = .Range("A7:J" & fin)
        bb = Sheets("PLANNING").Range("B" & 13 + (mem * x) & ":B" & 62 + (mem * x))
        y = 1
        ReDim cc(1, y)
        For i = 1 To UBound(aa, 1)
            If aa(i, 1) = "" Then GoTo 1
            For a = 1 To UBound(bb, 1)
                If aa(i, 1) = bb(a, 1) Or aa(i, 10) <> "" Then
                    aa(i, 1) = ""
1               End If
            Next a
        Next i
        For i = 1 To UBound(aa)
        If aa(i, 1) <> "" Then ReDim Preserve cc(1, y): cc(1, y) = aa(i, 1): y = y + 1
        Next i
        ListBox1.List = Application.Transpose(cc)
    End With
End Sub



Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

        ActiveCell = ListBox1.List(ListBox1.ListIndex, 0)
        ListBox1.Clear
        Unload Me
        
End Sub


Elle fonctionne bien sauf que j'ai 2 petit probleme avec :

1°) si il y a une une (ou plusieurs) ligne vide dans la Listbox et que, par erreur, je la selectionne (par un double click), une erreur apparait alors :

"Erreur d'execution '381': Impossible de lire la propriété List. Index de table non valide."

j'ai essayer plusieurs manieres pour conditionner la procedure declencher par un double click, sans succés :(

2°) si la "source" ( Sheets("STAFF").Range("A7:A2007") contenant des noms de personnes), dans laquelle se renseigne la listbox, est filtrer afin de ne faire apparaitre que les lignes dont la cellule en A contient un nom, alors la listbox ce comporte tres bizzarement : seulement 1 nom apparait alors, et aucun des autres et la selection par double click ne fonctionne pas.

je sais que ca a l'air confu comme explication, pour clarifier un peu, ce projet est un planning avec une feuile "STAFF" qui est un tableau me servant de base de donnees du personnel, comportant 32 colonnes remplis de divers renseignements sur les employés et comportant 2000 lignes ( pas toutes remplis ).
La feuille "STAFF" renseigne un userform (celui en question plus haut ) qui se lance depuis la feuille "PLANNING" et qui me permet de remplir rapidement le ... planning :)

voilà, j'espère que quelqu'un aura une idée :)

merci d'avance

Poto
 

jp14

XLDnaute Barbatruc
Re : Erreur lors d'une selection dans ListBox

Bonsoir

Concernant l'erreur 381 il suffit de la traiter en utilisant le code suivant

Code:
On Error GoTo essai_Error

  'corps de la macro


On Error GoTo 0 
   Exit Sub ' pour sortir de la procédure
' gérer l'erreur
essai_Error:

    If Err.Number = 381 Then
    ' message indiquant l'erreur
    End If
End Sub

ou éviter cette erreur en supprimant le cas.
Par exemple faire un balayage de la listbox et supprimer les lignes vides avec RemoveItem.

JP
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Erreur lors d'une selection dans ListBox

Bonsoir le fil, bonsoir le forum,

Poto, difficle de t'aider sans le fichier. Oui je sais, soit il est trop lourd, soit il est confidentiel... Le code c'est bien mais il faut le tester pour comprendre ce qui cloche et proposer une éventuelle solution...
En principe je ne fais pas l'effort pour ceux qui ne le font pas eux-même mais là, je te propose une solution commentée qui peut-être pourra t'aider...
 

Pièces jointes

  • Poto_v01.xls
    103 KB · Affichages: 166

Poto

XLDnaute Occasionnel
Re : Erreur lors d'une selection dans ListBox

salut le forum, salut jp14, salut Robert

merci infiniment pour votre aide
j'avais pas les yeux en face des trou hier, desolé :)

j'aurai pu mettre un exemple de fichier, ca aurait surement aider
quoi qu il en soit, j'ai reussi a walkarounder le probleme avec un simple

On Error Resume Next

c'est pas beau, mais ca marche :)
je vais essayer immediatement la technique de jp14 pour shinter que l'erreur en question tout en faisant un nettoyage par un RemoveItem

Robert, merci enormement pour ce code commenter, ca va m aider a y voir plus clair, car malgres une 10aine de tutos lu, j arrive toujours pas a me depatouiller avec les loops :p

encore une fois, merci a vous 2 ;)

++

Poto
 

Discussions similaires

Réponses
17
Affichages
760
Réponses
4
Affichages
165