cs_dan24
Messages postés39Date d'inscriptionlundi 9 février 2004StatutMembreDernière intervention15 avril 2005
-
3 juil. 2004 à 02:00
cs_dan24
Messages postés39Date d'inscriptionlundi 9 février 2004StatutMembreDernière intervention15 avril 2005
-
4 juil. 2004 à 21:02
Bonjour à tous,
Je ne crois pas que le problème que je rencontre soit très compliqué à résoudre mais je ne sais pas comment déclarer mon tableau dynamique tbl
Voilà le code:
Dim tbl() As String
Dim i As Integer
With frmMedicament
For i = 0 To .lbMedicament.ListCount - 1
If .lbMedicament.Selected(i) Then
tbl(i) = .lbMedicament.List(i)
End If
Next
End With
Je m'explique. Je voudrais mettre les éléments sélectionnés de ma listbox lbMedicament (il peut y en avoir plusieurs) dans un tableau tbl.
Pour cela, il faut que le tableau déclaré n'est pas une taille prédéfinie car je ne sais pas combien d'éléments de la liste vont être sélectionnés par l'utilisateur. Or, le code suivant provoque une erreur "indice en dehors de la plage". Je sais que c'est la déclaration de mon tableau qui pose problème mais je ne sais pas comment faire.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 juil. 2004 à 02:37
Salut dan24
En effet, un tableau sans dimension prend 10 comme dimension.
Voici ton nouveau code :
Dim tbl() As String
Dim i As Integer
ReDim tbl(1) As String ' Défini une taille sinon les autres ReDim ne seront pas acceptés (risque)
With frmMedicament
For i = 0 To .lbMedicament.ListCount - 1
If .lbMedicament.Selected(i) Then
r = r + 1
ReDim Preserve tbl(r) As String
tbl(r) = .lbMedicament.List(i) ' note le tbl(r) et pas (i)
End If
Next
End With
pcpunch
Messages postés1243Date d'inscriptionmardi 7 mai 2002StatutMembreDernière intervention18 février 20195 3 juil. 2004 à 03:33
Jack je ne pense pas que le :ReDim tbl(1) As String soit nécessaire !!!
Car tu fait un redim preserve dans la boucle ensuite, mais il faut incrémenter R aprés le redim, de ce fait le tableau commencera a l'indice 0.
Dim tbl() As String
Dim i As Integer
Dim R As Integer
With frmMedicament
For i = 0 To .lbMedicament.ListCount - 1
If .lbMedicament.Selected(i) Then
ReDim Preserve tbl(R) As String
tbl(R) = .lbMedicament.List(i)
R = R + 1
End If
Next
End With