cs_D3m3T05
Messages postés19Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention26 novembre 2006
-
7 déc. 2005 à 14:13
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 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
'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
'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
'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
'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.
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 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")