Creation de list box sous VBA

cs_D3m3T05 Messages postés 19 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 26 novembre 2006 - 7 déc. 2005 à 14:13
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 - 7 déc. 2005 à 14:41
bonjour a tous, j'ai un petit probleme. je ne sait pas comment creer une listBox. si vous pourriez m'indiquer comment creer une listoxB comprenant une seule colone.

mon second probleme est un peut plus complexe, comment recuperer les noms des tables de donné, et les nom des colones de ses table afint de les mettre dans la liste de la listbox..

actuellement voicit mon code :

Option Compare Database
Option Explicit


Sub testCreationrequeteDynamique()
'---------------------------------------------------------------------------------------
'declaration des variables
'---------------------------------------------------------------------------------------
Dim nomBase, nomTable, ordreTris(20), condition(20), szEnd As String
Dim filtreOrdreTris, filtreCondition, szVide As String
Dim intOrdreTris, intCondition As Integer
Dim intSortieBoucle As Integer
szEnd = "fin"
szVide = ""
intOrdreTris = 0
intSortieBoucle = 0
'---------------------------------------------------------------------------------------
'premiere question
'---------------------------------------------------------------------------------------


'demande a l'utilisateur le nom de la base de donnée a ouvrir
nomBase = InputBox( _
"entrez le nom de la base de donnée a ouvrir", "nomBase", "currentDb", "5000", "5000")
'fin de l'etape de selection de base de donnée


'si l'utilisateur appuit sur annuller
If nomBase = "" Then
'on affiche un message
MsgBox "A bientot", , "Fin du programme"
'on quitte la sub
Exit Sub
End If



'---------------------------------------------------------------------------------------
'seconde question
'---------------------------------------------------------------------------------------


'demande a l'utilisateur le mon de la table a ouvrir
nomTable = InputBox("entrez le nom de la table a ouvrir :", "nomTable", _
"Relevé_Compteurs", "5000", "5000")
'fin de l'etape de selection de table de donnée


'si l'utilisateur appuit sur annuller
If nomTable = "" Then
'on affiche un message
MsgBox "A bientot", , "Fin du programme"
'on quitte la sub
Exit Sub
End If


'---------------------------------------------------------------------------------------
'troisieme question
'---------------------------------------------------------------------------------------


'boucle gerant l'ordre de tris
Do Until intSortieBoucle <> 0
'on pose la question
filtreOrdreTris = InputBox( _
"entrez l'ordre de tris, triez par ordre decroissant en entrant DESC a la fin de votre selection. mettez fin a la selection en tapant fin ", _
"orderTris", "Nomducompteur", "5000", "5000")


'si l'utilisateur appuit sur annuller
If filtreOrdreTris = "" Then
'on affiche un message
MsgBox "A bientot", , "fin du programme"
'on quitte la sub
Exit Sub
End If


'si l'utilisateur entre fin
If filtreOrdreTris = szEnd Then
'on affiche un message
MsgBox "entrez maintenant les condition de tris", , "fin de la selection des colones"
'on ecrit une chaine vide dans ordreTris(intOrdreTris)
ordreTris(intOrdreTris) = ""
'puis on quitte la boucle
intSortieBoucle = 1
'si l'utilisateur n'a pas entrée fin
Else
'on ajoute le mot au tableau
ordreTris(intOrdreTris) = filtreOrdreTris
'on deplace l'indice sur la position suivante
intOrdreTris = intOrdreTris + 1
End If



'si on est dans la 20eme boucle
If intOrdreTris >= 20 Then
'on affiche un message
MsgBox "Vous ne pouvez plus saisir d'autres colone." & Chr(13) & _
"Selectionez maintenant les condition de tris a appliquer a vos colones. ", vbOKOnly, _
"fin de la selection"
'puis on quitte la boucle
intSortieBoucle = 1
End If


Loop
'fin de la question sur l'ordre de tris



'---------------------------------------------------------------------------------------


'on remet intSortieBoucle a 0
intSortieBoucle = 0


'on met intOrdreTris a 0 comme ca on accede au premier enregistrement
intOrdreTris = 0


'---------------------------------------------------------------------------------------
'quatrieme question
'---------------------------------------------------------------------------------------


'boucle gerant les condition de tris
Do Until intSortieBoucle <> 0
' on pose la question
filtreCondition = InputBox("entrez la condition relative a " & ordreTris(intOrdreTris) & _
" les condition peuvente etre (par exemple pour date : >#30/09/2005# : trierat les enregistrement datant d'apres le 30/09/2005.)" & Chr(13) & _
"(voir page 165-171 de l'assistant visuel d'access)mettez fin a la saisie par fin." _
, "condition", " ", "5000", "5000")


'si l'utilisateur appuit sur annuller
If filtreCondition = "" Then
'on affiche un message
MsgBox "A bientot", , "fin du programme"
'on quitte la sub
Exit Sub
End If


'si l'utilisateur entre fin
If filtreCondition = szEnd Then
'on affiche un message
MsgBox "votre requéte va etre crée.", , "fin"
'on ecrit une chaine vide dans condition(inCondition)
condition(intCondition) = ""
'on quitte la boucle
intSortieBoucle = 1


End If


'si l'utilisateur appuit sur OK ou entrée
If filtreCondition = " " Then
'on ecrit une chaine vide dans condition(intCondition)
condition(intCondition) = ""


'si l'utilisateur n'a entrée ni fin ni annuler
Else
'on ajoute le mot au tableau
condition(intCondition) = filtreCondition
'on deplace l'indice sur la position suivante


End If


intCondition = intCondition + 1
intOrdreTris = intOrdreTris + 1


'si la valeur de ordreTris(intOrdreTris) est vide
'ou si on est dans la 20eme boucle
If ordreTris(intOrdreTris) = "" Or intCondition >= 20 Then
'on affiche un message
MsgBox "Vous ne pouvez plus saisir d'autres conditions.", vbOKOnly, _
"fin de la selection"
'puis on quitte la boucle
intSortieBoucle = 1
End If



Loop
'fin de la boucle gerant les condition de tris.



'passage des donnée a la fonction affichageRequeteDynamique
Call AffichageRequeteDynamique(nomBase, nomTable, ordreTris(), intOrdreTris, condition(), intCondition)



End Sub

tout d'abord je souhaite remplacer les input box par des listBox et si c'est possible que les liste soit remplit par le nom des tables dispo sur cette base de donnée ainsit que le nom des colones qui compose cette table.
merci d'avance pour vos conseils.

1 réponse

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
7 déc. 2005 à 14:41
Bonjour,

Si tu veux créer une ListBox directement sur ta feuille, tu cliques sur
Affichage ensuite Barres d'outils et Commandes.Tu cliques sur la
listBox et tu la dépose sur ta feuille.(tu peux aussi créer un
UserForm, placer une ListBox et un CommandButton et y placer le code
qui suit)



Pour avoir le nom des tables d'une base de données, perso, je fais
comme ceci.(ici les tables de la BD Bilbio.mdb) Dans Références, cocher
la référence à Access)



Private Sub Worksheet_Activate()

Dim AppAccess As Access.Application

Dim i, j As Integer

ListBox1.Clear

Set AppAccess = CreateObject("Access.Application")

With AppAccess

.OpenCurrentDatabase ("C:\Program Files\Microsoft Visual Studio\vb98\Biblio.mdb")

j = 6

For i = 0 To .CurrentDb.TableDefs.Count - 1

If Left(UCase(.CurrentDb.TableDefs(i).Name), 4) <> "MSYS" Then

ListBox1.AddItem .CurrentDb.TableDefs(i).Name

j = j + 1

End If

Next i

End With

AppAccess.Quit

Set AppAccess = Nothing



End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
0
Rejoignez-nous