OVH Cloud OVH Cloud

inputbox de tri pour ouvrir un formulaire

13 réponses
Avatar
Nina
Boujour je ne comprends pas pourquoi ca ne marche pas...
Ca me parrait pourtant logique...mais j'ai la logique du debutant
Pouvez vous m'aider

N.

Dim stDocName As String
Dim stLinkCriteria As String
Dim question As String

stDocName = "PROGRAMME"
'je veux que le critere saisi ds mon inputbox me trie et m'affiche le
formulaire "programme "de l'année (annee_Prog - champ texte)
question = InputBox(Chr(13) & Chr(13) & Chr(13) & "Années ??")

stLinkCriteria = "[Annee_Prog] = question"

DoCmd.OpenForm stDocName

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour.

il faut envoyer le critère avec l'ouverture de l'état.

Dim stDocName As String
Dim stLinkCriteria As String
Dim question As String
stDocName = "PROGRAMME"
question = InputBox(Chr(13) & Chr(13) & Chr(13) & "Années ??")

stLinkCriteria = "[Annee_Prog] = " & question
DoCmd.OpenForm stDocName, , , stLinkCriteria

en général, on fait composer la donnée sur le formulaire et on prend la
valeur dans le openform ou on crée un filtre directement dans le formulaire
lancé ou on applique le filtre dans le formulaire lancé à partir du
formulaire appelant.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nina" a écrit dans le message de
news:
Boujour je ne comprends pas pourquoi ca ne marche pas...
Ca me parrait pourtant logique...mais j'ai la logique du debutant
Pouvez vous m'aider

N.

Dim stDocName As String
Dim stLinkCriteria As String
Dim question As String

stDocName = "PROGRAMME"
'je veux que le critere saisi ds mon inputbox me trie et m'affiche le
formulaire "programme "de l'année (annee_Prog - champ texte)
question = InputBox(Chr(13) & Chr(13) & Chr(13) & "Années ??")

stLinkCriteria = "[Annee_Prog] = question"

DoCmd.OpenForm stDocName





Avatar
Nina
Merci je suis vraiment un bleu
ai je interet a adopter votre conseil...je dois mettre un filtre dans mon
formulaire programme qui appelle la valeur de ma question d'inputbox ? si
oui , pourquoi ?
Merci par avance
N.
"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

il faut envoyer le critère avec l'ouverture de l'état.

Dim stDocName As String
Dim stLinkCriteria As String
Dim question As String
stDocName = "PROGRAMME"
question = InputBox(Chr(13) & Chr(13) & Chr(13) & "Années ??")

stLinkCriteria = "[Annee_Prog] = " & question
DoCmd.OpenForm stDocName, , , stLinkCriteria

en général, on fait composer la donnée sur le formulaire et on prend la
valeur dans le openform ou on crée un filtre directement dans le
formulaire lancé ou on applique le filtre dans le formulaire lancé à
partir du formulaire appelant.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nina" a écrit dans le message de
news:
Boujour je ne comprends pas pourquoi ca ne marche pas...
Ca me parrait pourtant logique...mais j'ai la logique du debutant
Pouvez vous m'aider

N.

Dim stDocName As String
Dim stLinkCriteria As String
Dim question As String

stDocName = "PROGRAMME"
'je veux que le critere saisi ds mon inputbox me trie et m'affiche le
formulaire "programme "de l'année (annee_Prog - champ texte)
question = InputBox(Chr(13) & Chr(13) & Chr(13) & "Années ??")

stLinkCriteria = "[Annee_Prog] = question"

DoCmd.OpenForm stDocName









Avatar
Raymond [mvp]
on ne peut pas appeler la valeur d'un inputbox placé sur un autre
formulaire.
vu que tu es sur un formulaire, place un contrôle texte pour faire composer
l'année et utilise cette valeur dans le critère directement. ce qui fera que
le code complet que tu as actuellement sera remplacé par une seule ligne:
DoCmd.OpenForm "Programme", , , "[Annee_Prog] = " & Me.Moncontroletexte


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nina" a écrit dans le message de
news:
Merci je suis vraiment un bleu
ai je interet a adopter votre conseil...je dois mettre un filtre dans mon
formulaire programme qui appelle la valeur de ma question d'inputbox ? si
oui , pourquoi ?
Merci par avance
N.


Avatar
Nina
Merci Raymond pour ces conseils (qui fonctionnent tous !!) mais je veux sur
un click sur bouton ouvrir une boite de dialogue qui me demande l'année et
qui ouvre mon formulaire "Programme" donc je souhaite travailler avec un
inputbox...par contre avec la synthaxe
question = InputBox(Chr(13) & Chr(13) & Chr(13) & "Années ??")

stLinkCriteria = "[Annee_Prog] = " & question
DoCmd.OpenForm stDocName, , , stLinkCriteria
l'action openform a été annulé....

et si je mets
stLinkCriteria = "[Annee_Prog] = question"
il me pose bien la question , puis m'ouvre une boite "question" puis ouvre
mon inputbox avec la valeur de question et non pas avec la variable saisie
dans mon inputbox...
cela me semble normal puisque question n'est plus considere comme une
varaible ???

Merci de m'eclairer encore une fois !!
N


"Raymond [mvp]" a écrit dans le message de
news:
on ne peut pas appeler la valeur d'un inputbox placé sur un autre
formulaire.
vu que tu es sur un formulaire, place un contrôle texte pour faire
composer l'année et utilise cette valeur dans le critère directement. ce
qui fera que le code complet que tu as actuellement sera remplacé par une
seule ligne:
DoCmd.OpenForm "Programme", , , "[Annee_Prog] = " & Me.Moncontroletexte


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nina" a écrit dans le message de
news:
Merci je suis vraiment un bleu
ai je interet a adopter votre conseil...je dois mettre un filtre dans mon
formulaire programme qui appelle la valeur de ma question d'inputbox ? si
oui , pourquoi ?
Merci par avance
N.






Avatar
Raymond [mvp]
il considère question comme un paramètre dans :
stLinkCriteria = "[Annee_Prog] = question"
et la requête demande la valeur.
donc tu n'as pas besoin du inputbox dans cette forme.

pour l'autre forme, essaie, pour pure information:
DoCmd.OpenForm stDocName, , , "[Annee_Prog] = " & question
si Annee_Prog est alpha, tu mets:
DoCmd.OpenForm stDocName, , , "[Annee_Prog] = '" & question & "'"

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nina" a écrit dans le message de
news:
Merci Raymond pour ces conseils (qui fonctionnent tous !!) mais je veux
sur un click sur bouton ouvrir une boite de dialogue qui me demande
l'année et qui ouvre mon formulaire "Programme" donc je souhaite
travailler avec un inputbox...par contre avec la synthaxe
question = InputBox(Chr(13) & Chr(13) & Chr(13) & "Années ??")

stLinkCriteria = "[Annee_Prog] = " & question
DoCmd.OpenForm stDocName, , , stLinkCriteria
l'action openform a été annulé....

et si je mets
stLinkCriteria = "[Annee_Prog] = question"
il me pose bien la question , puis m'ouvre une boite "question" puis ouvre
mon inputbox avec la valeur de question et non pas avec la variable saisie
dans mon inputbox...
cela me semble normal puisque question n'est plus considere comme une
varaible ???


Avatar
Nina
pour l'autre forme, essaie, pour pure information:
DoCmd.OpenForm stDocName, , , "[Annee_Prog] = " & question
si Annee_Prog est alpha, tu mets:
DoCmd.OpenForm stDocName, , , "[Annee_Prog] = '" & question & "'"


et ben voila, c'est ca que je voulais faire, cette solution me va a
merveille!
Un grand merci Raymond !!!!

N.

"Raymond [mvp]" a écrit dans le message de
news: uU6C%
il considère question comme un paramètre dans :
stLinkCriteria = "[Annee_Prog] = question"
et la requête demande la valeur.
donc tu n'as pas besoin du inputbox dans cette forme.

pour l'autre forme, essaie, pour pure information:
DoCmd.OpenForm stDocName, , , "[Annee_Prog] = " & question
si Annee_Prog est alpha, tu mets:
DoCmd.OpenForm stDocName, , , "[Annee_Prog] = '" & question & "'"

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nina" a écrit dans le message de
news:
Merci Raymond pour ces conseils (qui fonctionnent tous !!) mais je veux
sur un click sur bouton ouvrir une boite de dialogue qui me demande
l'année et qui ouvre mon formulaire "Programme" donc je souhaite
travailler avec un inputbox...par contre avec la synthaxe
question = InputBox(Chr(13) & Chr(13) & Chr(13) & "Années ??")

stLinkCriteria = "[Annee_Prog] = " & question
DoCmd.OpenForm stDocName, , , stLinkCriteria
l'action openform a été annulé....

et si je mets
stLinkCriteria = "[Annee_Prog] = question"
il me pose bien la question , puis m'ouvre une boite "question" puis
ouvre mon inputbox avec la valeur de question et non pas avec la variable
saisie dans mon inputbox...
cela me semble normal puisque question n'est plus considere comme une
varaible ???






Avatar
Nina
Ah oui, et tant que j'y suis c'est possible de faire la meme chose mais avec
une requete...du style

Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim maRequete = Select * from ma table
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("maRequete")

DoCmd.OpenForm stDocName, , , "[Annee_Prog] = " Rs

Je que je souhaite faire la c'est ouvrir cette fois un formulaire sur click
avec comme argument le resultat de ma requete...
c'est peut etre pas tres "conventionnel" comme methode ???
N.


"Raymond [mvp]" a écrit dans le message de
news: uU6C%
il considère question comme un paramètre dans :
stLinkCriteria = "[Annee_Prog] = question"
et la requête demande la valeur.
donc tu n'as pas besoin du inputbox dans cette forme.

pour l'autre forme, essaie, pour pure information:
DoCmd.OpenForm stDocName, , , "[Annee_Prog] = " & question
si Annee_Prog est alpha, tu mets:
DoCmd.OpenForm stDocName, , , "[Annee_Prog] = '" & question & "'"

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nina" a écrit dans le message de
news:
Merci Raymond pour ces conseils (qui fonctionnent tous !!) mais je veux
sur un click sur bouton ouvrir une boite de dialogue qui me demande
l'année et qui ouvre mon formulaire "Programme" donc je souhaite
travailler avec un inputbox...par contre avec la synthaxe
question = InputBox(Chr(13) & Chr(13) & Chr(13) & "Années ??")

stLinkCriteria = "[Annee_Prog] = " & question
DoCmd.OpenForm stDocName, , , stLinkCriteria
l'action openform a été annulé....

et si je mets
stLinkCriteria = "[Annee_Prog] = question"
il me pose bien la question , puis m'ouvre une boite "question" puis
ouvre mon inputbox avec la valeur de question et non pas avec la variable
saisie dans mon inputbox...
cela me semble normal puisque question n'est plus considere comme une
varaible ???






Avatar
Raymond [mvp]
ce n'est pas très conventionnel car la requête peut ramener plusieurs
valeurs et laquelle prendre ?
il vaut mieux utiliser une fonction DLookup qui ne ramène qu'une seule
valeur d'un champ d'une table et tu peux indiquer une clause where.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nina" a écrit dans le message de
news: ej%
Ah oui, et tant que j'y suis c'est possible de faire la meme chose mais
avec une requete...du style

Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim maRequete = Select * from ma table
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("maRequete")

DoCmd.OpenForm stDocName, , , "[Annee_Prog] = " Rs

Je que je souhaite faire la c'est ouvrir cette fois un formulaire sur
click avec comme argument le resultat de ma requete...
c'est peut etre pas tres "conventionnel" comme methode ???
N.


Avatar
Nina
Ok merci mais si je veux passer comme reponse avec plusieurs valeurs + une
boucle, je ne peux pas ?
Un recordset ne peut avoir qu'une seule valeur mm si une boucle le fait
tourner en "concatener" dans une variable les resultats avec par exemple
Dim conca as string
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim maRequete = Select * from ma table
Set Db = CurrentDb

Set Rs = Db.OpenRecordset("maRequete")
Conca = rs
Boucle sur rs
Conca = conca + rs

(escuser pour la synthaxe mais je n'en suis (helas) qu'au niveau ou j'essaie
de comprendre la logique, j'essaie de reproduire le type array (en php par
exemple) qui avec une boucle a une logique de poiteur tout au long d'une
requete...)

Ma question, je l'avoue, sort un peu de mon objet initial alors n'hesiter
pas à me recadrer si je vous ennuie :-))

N.



"Raymond [mvp]" a écrit dans le message de
news:
ce n'est pas très conventionnel car la requête peut ramener plusieurs
valeurs et laquelle prendre ?
il vaut mieux utiliser une fonction DLookup qui ne ramène qu'une seule
valeur d'un champ d'une table et tu peux indiquer une clause where.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nina" a écrit dans le message de
news: ej%
Ah oui, et tant que j'y suis c'est possible de faire la meme chose mais
avec une requete...du style

Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim maRequete = Select * from ma table
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("maRequete")

DoCmd.OpenForm stDocName, , , "[Annee_Prog] = " Rs

Je que je souhaite faire la c'est ouvrir cette fois un formulaire sur
click avec comme argument le resultat de ma requete...
c'est peut etre pas tres "conventionnel" comme methode ???
N.






Avatar
Raymond [mvp]
Pourquoi ne pas passer directement par un filtre, appliqué au formulaire,
sans passer par un recorset externe pour trouver une liste de valeurs.
donne un exemple de sélection qu'il faudrait faire sur ce formulaire ( même
pour l'année on peut passer par un filtre).

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nina" a écrit dans le message de
news:
Ok merci mais si je veux passer comme reponse avec plusieurs valeurs + une
boucle, je ne peux pas ?
Un recordset ne peut avoir qu'une seule valeur mm si une boucle le fait
tourner en "concatener" dans une variable les resultats avec par exemple
Dim conca as string
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim maRequete = Select * from ma table
Set Db = CurrentDb

Set Rs = Db.OpenRecordset("maRequete")
Conca = rs
Boucle sur rs
Conca = conca + rs

(escuser pour la synthaxe mais je n'en suis (helas) qu'au niveau ou
j'essaie de comprendre la logique, j'essaie de reproduire le type array
(en php par exemple) qui avec une boucle a une logique de poiteur tout au
long d'une requete...)

Ma question, je l'avoue, sort un peu de mon objet initial alors n'hesiter
pas à me recadrer si je vous ennuie :-))

N.


1 2