Probleme pour passer un tableau a une fonction

Résolu
cs_D3m3T05 Messages postés 19 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 26 novembre 2006 - 6 déc. 2005 à 08:32
cs_D3m3T05 Messages postés 19 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 26 novembre 2006 - 6 déc. 2005 à 14:50
salut a tous. j'ai un petit probleme de passage de tableau a une fonction. voicit le code:
deuxieme question, pour sortir des boucle qui permette de remplir les tableaux via les InputBox il faut rentrer le mot "fin" le probleme c'est que le dernier argument de mon tableau devient alors le mot "fin" comment, apres etre sortit de la boucle "effacer" la derniére entrée du tableaux (donc le mot fin). merci pour vos conseils.

Option Compare Database
Option Explicit


----------------------------------------------------------------------------------------------
Sub testCreationrequeteDynamique()


'declaration des variables
Dim nomBase, ordreTris(20), condition(20), szEnd As String <<< voicit les tableaux
Dim intOrdreTris, intCondition As Integer
Dim intSortieBoucle As Integer

szEnd = "fin"
intOrdreTris = 0
intSortieBoucle = 0


'1ere 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


'2eme question
'boucle gerant l'ordre de tris
Do Until intSortieBoucle <> 0


ordreTris(intOrdreTris) = 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")


If ordreTris(intOrdreTris) = szEnd Or intOrdreTris > 20 Then
intSortieBoucle = 1
End If


intOrdreTris = intOrdreTris + 1


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


'on remet intSortieBoucle a 0
intSortieBoucle = 0


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


'boucle gerant les condition de tris
Do Until intSortieBoucle <> 0


condition(intCondition) = 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.)(voir page 165-171 de l'assistant visuel d'access)mettez fin a la saisie par fin." _
, "condition", "", "5000", "5000")


If condition(intCondition) = szEnd Then
intSortieBoucle = 1
End If


intCondition = intCondition + 1
intOrdreTris = intOrdreTris + 1


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



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


<<et la je recoit le message "erreur de complation type d'argument By ref incompatible." et la variable nom base est mise en surbrillance>>



End Sub


----------------------------------------------------------------------------------------------
'voicit la fonction a laquelle les donnée sont passée:

Sub AffichageRequeteDynamique(nomBase As String, _
ordreTris1() As String, intOrdreTris1 As Integer, _
condition1() As String, intCondition1 As Integer)


'ici le reste du code va utiliser les variables



End Sub

2 réponses

cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
6 déc. 2005 à 11:15
salut,

pour le passage de tableau il faut passer par "référence" si tu as quelques bases de C c'est équivalent aux pointeurs
pour celà il suffit de mettre le mot clé byref dans la déclaration des pamètres de la procédure (sub) AffichageRequeteDynamique

ton second problème est juste une "petite erreur d'algo". récupère le retour de ton inputbox dans une variable de type string.
ensuite tu test si cette variable est différent de fin, et dans ce cas là tu l'ajoute a ton tableau sinon tu as fini et tu quittes la boucle.
en résumé, plus simple que de chercher à l'enlever, il suffit de pas le mettre :)

Vincent
3
cs_D3m3T05 Messages postés 19 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 26 novembre 2006
6 déc. 2005 à 14:50
un grand merci a vincent pour sa réponse claire et précise qui m'a ete tres utile. en plus j'ai tout compris (pour une fois).
0
Rejoignez-nous