Vb
nad -
g dois faire une sorte de boucle dans mon code vb sur access
celle-ci doit servir à remplir les champs une fois être allé sur le bouton
cela doit affecter une date aux champs (ça serai rempli ds la table)qui sont à affichés sur le formulaire
g n c pas trop cmt faire
g essayé d faire avec une requête main non dc si vs avez des idées
elles st les bienvenues
- Vb
- Langage vb - Télécharger - Langages
- Vb runtime - Télécharger - Divers Utilitaires
- Vb editor - Télécharger - Langages
- Vb audio cable - Télécharger - Audio & Musique
- Vb inputbox - <a href="https://forums.commentcamarche.net/forum/astuces-et-solutions-378">Astuces et Solutions</a>
38 réponses
- 1
- 2
Il s’agit de mettre en place une boucle en VBA sous Access pour remplir des champs sur un formulaire et attribuer une date, qui doit être enregistrée dans la table au clic sur le bouton. La solution clé consiste à créer un module global nommé Globals et une variable publique gDateSel de type Date, afin de partager la date entre les formulaires. Ensuite, dans le premier formulaire, avant d’ouvrir le second, il faut assigner gDateSel = Me!NonDuChampDeSaisie.Value et remplacer Me!maDateSelection.Value par gDateSel dans les appels ultérieurs utilisés. En cas de doute, il faut vérifier les noms exacts des contrôles et s’assurer que la date est bien initialisée dans le module Globals avant tout appel à la seconde fenêtre.
Evites le langage SMS s'il te plait, on a pas de limite de caracteres ici (enfin si mais il faut deja avoir la forme pour l'atteindre :-) )
Bon tu las fait comment ta boucle? Tu utilises un recordset ou tu passes a travers de tous les controles a l'aide la collection?
Tu peux nous mettre le code? Ca donnera toujours une bonne base...
. .
\_/
les champs que g ds mon formulaire st ceux que g choisie ds la source du formulaire en question
dc ds le code g les récupère en faisant Me![ ]
sinon et bien le probleme c que si g met une requête ça n sera pas compatible
puis g n c pas ce que g dois affecter à mon compteur
c ts les dossiers affichés mais cmt le dire
voila mon pb
Il est également demandé aux utilisateurs de s'appliquer lors de la rédaction de leur message en évitant au possible les abréviations et d'en vérifier dans la mesure du possible l'orthographe.
.O Sauvez-moi, mangez Mary :-D
(_)__... Castor
je disais que j'ai un formulaire qui contient un planning et qui donc permet à l'utilisateur de choisir une date, cette date s'inscrit dans l'edit box du formulaire puis j'ai aussi un bouton qui permet d'ouvrir un autre formulaire
cet autre formulaire affiche les dossiers qui ont été commandés à cette date
voila
mon objectif c'est que je veux que pour chaque dossiers demandés à cette date je leur affecte une date qui celle de l'envoie des dossiers donc tous les dossiers qui seront affichés sur le formulaire auront le meme date . cette date n'apparait pas sur la formulaire
J'espère que c'est comprehensible !
Maintenant, ça devient un plaisir de te lire, et ça nous donne envie de t'aider, du moment que tu fais l'effort d'être bien clair, et de faire en sorte que l'on ne perde pas des plombes à décoder ton texte !!
Bon, je continue à lire et je te réponds...
Wild and Free
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPerso, je comprends pas trop ton problème, apparement tu arrives à modifier la date pour le premier et pas les autres?
Si c ça, ton problème vient-il de ta boucle ou de la récupération des noms de champs?? Quel est l'objet que tu appelles EditBox?
Donne nous le code actuel de ta boucle, ça nous aidera à comprendre.
A+
le premier formulaire puvre le deuxieme selon une date choisie dans le premier
dans mon deuxieme formulaire j'affiche tous les dossiers demandés à cette date
puis j'ai un bouton envoie qui doit me permettre d'affecter la date d'envoi à tous les dossiers qui sont affichés
Sinon je pense que le plus simple est sans doute une requete SQL suivie d'un refresh, autre solution, faire une boucle sur tous les controles de ta form (ca marche en VB, je ne sais pas si ca marche en VBA...puisque tu sembles etre en VBA...)
. .
\_/
for n=1 to n-1
Me![num]=now()
next n
voila mais ça m'affecter la date seulement pour le premier
sinon pour refresh comment fait on?
La il est toujours sur le premier quoique tu fasses...
. .
\_/
. .
\_/
j'ai effectué un test et c'est juste au debut donc dans le for que ça bloque.
DoCmd.FindRecord num_LC, , True, , True
If IsNull(Me![dateréalisation]) Then
Me![dateréalisation] = Now()
Else
'MsgBox "vous avez déjà envoyer cette commande"
End If
DoCmd.FindNext
mais je n'ai pas fait de boucle car je ne sais pas comment je pourai l'écrire avec cette méthode
en fait il faudrai que la methode findrecord englobe ma condition et se termine par find next
merci !
(regarde la syntaxe dans l'aide...)
DoCmd.FindRecord num_LC, , True, , True
While Me![MaCle]<>nothing
If IsNull(Me![dateréalisation]) Then
Me![dateréalisation] = Now()
Else
'MsgBox "vous avez déjà envoyer cette commande"
End If
DoCmd.FindNext
Wend
Un truc comme ca...
. .
\_/
mais il y a un probleme au debut avec
DoCmd.FindRecord num_LC, , True, , True
il y a une erreur qui dit que le nom du formulaire n'est pas correcte
mais je n'ai rien changé j'ai juste ajouté la boucle avec while
c'est très bizard
donc je me dis que peut être il faut rajouter quelque chose dans la premiere ligne
Bon, si j'ai bien tout pompris !!
1) Dans un formulaire, un choix est fait dans un contrôle Calendar, qui lui même, engendre un sous-formulaire avec comme champ père la date choisie ??
2) La dessus, il faut remplir tous les champs masqués (date), des dossiers sélectionnés via le champ père, par la date choisie dans le contrôle Calendar ??
Me suis-trompais-je ??
---------------------------------------------------------------------------
Des petits détails, vite fait, tout de suite :
1) Seuls un MoveLast/MoveFirst vont alimenter le RecordCount, donc, ce sont des opérations à effectuer avant même d'entâmer la boucle....
2) Globalement, je ne pense pas qu'il y ai besoin d'un sous-formulaire pour ça, il suffit de créer une requête dynamique, puis de faire la boucle sur ce RecordSet...
3) Inutile de se faire chier avec les "[" et les "(", Access est un peu "hors norme" question intégration VB/VBA, et un bon conseil, c'est (on ne le peux pas toujours) de rester dans les clous de VB, et donc, une commande que je pourrais traduire, c'est :
Me.dateréalisation= Now()
4) Pas de caractères qui font appel à la page de 128 à 255 de la table ASCII dans les noms d'objets....
Me.DateRealisation = Now() (voilà une belle écriture)
5) La norme/règle/Convention d'écriture de code : Chaque lettre significative d'un mot doit être en majuscule.... Tu verras, cela t'éviteras bien des déboires avec les éditeurs (VB/VBA)...
-------------------------------------------------------------------------
Bon, dis-moi déjà si j'ai bien ciblé ton problème, après.... On passe en mode assistance active !! ;-))
Wild and Free
puis à l'ouverture il contient les dossiers selectionnés par la date (du premier formulaire)
donc je veux leur affecter une date qui est celle de l'envoie mais je veux l'affecter à tous d'où mon probleme
j'espère que t'as compris
et j'ai dans le bouton du premier formulaire un lien avec la date pour que quand on ouvre le deuxieme on est les dossiers consernant la date
Tu as, dans le bouton du premier formulaire, un lien avec la date ?
Tu as fait comment ? Tu as utilisé la propriété .Tag du bouton ??
Là, je suis de plus en plus à l'ouest.... Plus ça va, moins je comprends... Tu tires tes données par la source du formulaire ?
Où j'ai le cerval qui gèle, où c'est la vieillerie, mais je ne te suis pas ???? Je pige 0....
Qui comprends ? Teebo ? A l'aide !! (il est tard, je me donne des excuses...)
Wild and Free
- 1
- 2
en fait g un formulaire où g selectionne, par l'intermédiare d'un calendrier, une date puis ce formulaire m'ouvre un autre formulaire qui contient ttes les informations se rapportant aux dossiers ( ma base est une gestion de dossier) selon bien sûr le critère de date que g choisie avt
g v que affecter à ces dossiers une date qui me permet de valider leur envoie g v dc que ts les dossiers qui sont affichés dans mon formulaire aient ts la meme date ( g affecter la fonction now pr la date du jr) voila
g n'arrive pas à faire ma boucle, qd j'essaie ça m'enregistre seulement la date pour le premier dossier
g vs remercie