Bonjour vita
Je n'avais pas vu ton post du 29/07 désolé.
Pour t'expliquer rapidement :
Comme ta listbox comprend plus de 10 colonnes, on est obligé de passer par des tableaux dynamiques pour pouvoir la remplir.
Lors de l'initialize du userform on crée un tableau des données que l'on appelle Tablo.
puis on boucle sur chaque ligne du tableau en comparant les données de la premiere colonne avec le choix fait dans la combobox :
For i = 1 To UBound(tablo)
If tablo(i, 1) = ChoixPersonne Then
Exit For
End If
Next i
Lorsque la données est trouvé on sort de la boucle(exit for), en gardant en mémoire que la ligne se trouve dans la variable I
Puis on remplit un nouveau tableau dynamique (tablopersonne) en renvoyant dans celui-ci toutes les informations que l'on à trouvées dans la ligne i du tableau de base (tablo).
ReDim tablopersonne(1 To 4, 1 To UBound(tablo, 2))
x = 2
For j = i To i + 2
For k = 1 To UBound(tablo, 2)
tablopersonne(1, k) = tablo(1, k)
tablopersonne(x, k) = tablo(j, k)
Next k
x = x + 1
Next j
ensuite il suffit de vider la listbox et de la remplir avec le nouveau tableau (tablopersonne) :
RechercheTable.Clear
RechercheTable.List = tablopersonne
Pour ton souci d'aujourd'hui, je ne suis pas arrivé à reproduire le bug, mais je pense que ton souci vient du fait des mois variant de 28 à 31 jours.
je te propose donc, de modifier la macro initlistbox comme suit et de refaire des tests :
Public Sub initlistbox()
Dim dercolonne As Byte
With ws
dercolonne = .Range('IV4').End(xlToLeft).Columns + 1
tablo = .Range(.Cells(4, 1), .Cells(34, dercolonne))
End With
With RechercheTable
.Clear
.ColumnCount = 32
.ColumnWidths = '45;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20'
.List = tablo
End With
End Sub
salut
Message édité par: Hervé, à: 01/08/2005 11:09