Probleme de remplissage d'un combo box par une procédure

methodmay31 Messages postés 45 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 6 mai 2006 - 21 mars 2006 à 09:27
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 21 mars 2006 à 13:00
Bonjour a tous

J'ai un problème avec un combo box sur un formulaire plus exactement pour son remplissage
Voila le code de ma procédure

Sub Postes(ByRef TabPostes())


Dim db As ADODB.Connection
Dim ReqPostes As ADODB.Recordset


Set db = New ADODB.Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source='" & CheminBase & "';"
Set ReqPostes = New ADODB.Recordset
ReqPostes.Open "select distinct NomMetier from EtatCivil", db, adOpenStatic, adLockOptimistic


I = 1
While Not ReqPostes.EOF
TabPostes(I) = ReqPostes![NomMetier]
ReqPostes.MoveNext
I = I + 1
Wend
NbPostes = I - 1

End Sub

Le code du remplissage

Private Sub CmbPoste_DropDown()


CmbPoste.Clear
Call Postes(TabPostes())
For I = 1 To NbPostes
CmbPoste.AddItem (TabPostes(I))
Next I



End Sub

Public Const Max = 100
Public TabPostes(1 To Max)

il m'affiche une erreur "utilisation non autorisé du null pr le tab postes en gras et pourtant dans le pas a pas la requete de ma procédure fonctionne ....
savez vous pourquoi ???

Merci
A voir également:

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 mars 2006 à 09:51
Ah là là, la manie de ne pas déclarer les types de ses variables provoquent forcément des erreurs un jour ou l'autre : dans ton cas, ton tableau TabPostes et de type variant, du coup, il accepte les valeur vbNull, mais pas ton combo ! Donc ca donne plutôt :

Public Const Max = 100
Public TabPostes(1 To Max) As String

While Not ReqPostes.EOF
If not isnull(ReqPostes.Fields("NomMetier").value) then
TabPostes(I) = ReqPostes![NomMetier]
else
TabPostes(I) = ""
end if
ReqPostes.MoveNext
I = I + 1
Wend

<spa></spa>
0
methodmay31 Messages postés 45 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 6 mai 2006
21 mars 2006 à 10:14
en remplacant mon code par le tien j'ai une erreur de compilation
incompatibilité de type : tableau ou type attendu par l'utilisateur ??
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 mars 2006 à 13:00
Normal, fais plutôt ceci :

Private Const Max = 100
Private TabPostes(1 To Max) As String

Private Function Postes() As Integer Dim db As ADODB.Connection
Dim ReqPostes As ADODB.Recordset

Dim I As Integer

Set db = New ADODB.Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source='" & CheminBase & "';"
Set ReqPostes = New ADODB.Recordset
ReqPostes.Open "select distinct NomMetier from EtatCivil", db, adOpenStatic, adLockOptimistic

While Not ReqPostes.EOF
If not isnull(ReqPostes.Fields("NomMetier").value) then
TabPostes(I) = ReqPostes![NomMetier]
else
TabPostes(I) = ""
end if
ReqPostes.MoveNext
I = I + 1
Wend
Postes = I - 1

End Sub

Private Sub CmbPoste_DropDown()
Dim nbPostes as integer
CmbPoste.Clear
nbPostes = Postes()
For I = 1 To nbPostes
CmbPoste.AddItem (TabPostes(I))
Next I

End Sub

_

<spa></spa>
0
Rejoignez-nous