Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/12/2010, 15h14   #1
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Par défaut Alimenter une zone de texte à partir d'autres éléments de mon formulaire

Bonjour à tous,

J'ai une petite question, je souhaiterai alimenter une zone de texte à partir d'autres éléments de mon formulaire. Je m'explique, je rentre dans mon formulaire plusieurs données à partir de listes déroulantes notamment et je souhaiterai créer un N° automatique à partir des éléments que j'ai déjà rempli. le mieux c'est de donné un petit exemple, j'ai par exemple :

- CVB35 dans une première liste de sélectionnée puis
- Métal
- 3
- Inversé
- et 11 dans une dernière zone de texte

Je souhaiterai que ma zone de texte remplisse automatiquement :

- C035M3I-11

suivant un code bien précis, quelqu'un pourrai-t-il m'aider ?

Merci d'avance

Seb
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 18h30   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 456
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 456
Points : 7 530
Points : 7 530
Est-ce que les éléments :

- CVB35
- Métal
- 3
- Inversé
- 11

sont conservés dans la table qui alimente ton formulaire ?

Si oui, le plus simple est de le faire au niveau d'une requête qui allimentera ton formulaire :

TonChampCode:[NomChampContenantCVB35] & left([NomChampContenantMetal],1]) & [NomChampContenant3] & left([NomChampContenantInverse],1]) & [NomChampContenant11]

Le & met bout à bout des chaines de caractères. C'est une concaténation.

Sont-ils succeptibles de changer ?

Si non il serait peut-être interrssant de calculer le code une fois à la création pour ne pas avoir à le faire chaque fois que tu auras besoin de l'afficher.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 11h16   #3
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
En fait, les éléments :

- CVB35
- Métal
- 3
- Inversé
- 11

Sont des éléments qui proviennent de listes déroulantes pour (CVB35, Métal et Inversé) et saisie pour 3, le 11 est en fait un NumAuto. Les C035, M et I sont les clés primaires correspondants aux champs sélectionnés dans les listes déroulantes et qui proviennent de plusieurs tables :
-tbTypeCrible pour CVB35 et avec donc comme clé primaire C035
-tbTypeGrille pour Métal et avec M comme clé primaire
-tbDivers pour Inversé et avec I comme clé primaire

Et C035M3I-11 changera pour chaque saisie de grille. Ce numéro me servira à marquer mes grilles pour le suivi de celles-ci.

A+
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 07h52   #4
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Bonjour,

J'ai essayé d'utiliser ta ligne de code mais je n'arrive pas à la faire fonctionner. Pourrais-tu me dire ou je dois insérer cette ligne. J'ai essayé dans la partie Source Contrôle et Valeur par défaut mais rien ne s'est passé et quand je retourne sur les propriétés de cette zone texte, le code que j'avais rentré n'y est plus. Auriez-vous une idée ?

Seb
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 09h58   #5
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
J'ai un autre problème qui vient de se poser à moi.
J'ai créé un formulaire pour les interventions de changement de grilles. J'ai un premier formulaire dans lequel j'ai une liste de mes précédentes interventions (j'affiche dans cette liste seulement les interventions avec les datedefin à 31/12/9999 pour ne pas afficher les interventions déjà clôturées depuis un bon bout de temps) et une date d'intervention. Je précise que j'ai dans ma table tbIntervention un champe idPrecenteInterv qui me donne la référence de ma précédent intervention, ca me permet ainsi de retracer facilement le cheminement de ma grille.
J'ai ensuite un bouton de commande sur lequel j'appuie une fois la précédente intervention sélectionnée (avec notamment mon numéro de grille). Je souhaiterai que lorsque j'appuie sur ce bouton, la datedefin de l'intervention sélectionnée passe sur la date rentrée dans le formulaire et que je passe sur une nouveau formulaire appelé MouvementGrille. Dans ce formulaire, je souhaiterai que la datededébut soit la date précédement rentrée (date de l'intervention) et que le N° de la précédente Intervention soit automatiquement rentrée dans le champ : idPrecedenteInterv.
Ensuite pour chaque interventions, je note :

-l'affectation du crible sur lequel je viens de changer ma grille,
-l'etage du crible,
-le personnel ayant effectué l'intervention,
-le lieux de l'intervention,
-et une zone de commentaire.

Je suppose que je dois utiliser dans la procédure événementielle du bouton de commande de mon premier formulaire un DoCmd.FindRecord avec le champ idPrecedenteInterv pour retrouver ma précédente intervention et DoCmd.GotoRecord pour pouvoir modifier ma datedefin en changeant le 31/12/9999 par la date rentrée. Il me faut ensuite ouvrir le deuxième formulaire sur une nouvelle entrée avec la datededébut et le idPrecedenteInterv déjà rentrés.

Voilà c'est assez compliqué pour moi si quelqu'un peut me donner un coup de pouce, ca serai sympa !

A+

Seb
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 18h01   #6
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Concernant mon premier problème, je viens de réussir à faire fonctionner la ligne de code de marot_r en l'inscrivant simplement dans la zone de texte en mode création mais quand j'actionne le bouton d'enregistrement du formulaire (un bouton command avec le code suivant :
Code :
1
2
3
4
Private Sub cmdAjouter_Click()
    DoCmd.GoToRecord , , acNewRec
    'on enregistre les données et on vide les champs du formulaire pour une nouvelle saisie
End Sub
), j'obtiens le message d'erreur suivant :
Erreur d'exécution '2105' :
Impossible d'atteindre l'enregistrement spécifié
Serait-ce un problème venant du fait j'ai mis ma ligne de code dans le champs Source Contrôle ?

A+

Sébastien
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 18h24   #7
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 456
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 456
Points : 7 530
Points : 7 530
Je ne pense pas.

La solution que je t'avais mise était pour mettre dans la requête qui alimente le formulaire de saisie mais cela marche aussi avec un champ calculé comme tu l'as fait. Note que normalement le champ calculé n'est pas enregistré dans la table et donc c'est un calcul temporaire qui ne s'affichera que sur ce formulaire.

Pour ton pb de déplacement, que se passe-t-il si tu appuis sur le bouton *> en bas à gauche de ton formulaire dans le groupe des boutons de déplacement (|<-, <, >, ->|) ?

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 07h53   #8
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Bonjour,
marot_r, je ne comprends pas bien comment tu fais pour insérer la ligne de code dans la requête qui alimente le formulaire de saisie ? Car je souhaiterai enregistrer le champ calculé dans la table.

Pour ce qui est du problème de positionnement du formulaire à un enregistrement donné, j'ai réussi à me débrouiller en écrivant le code suivant dans la procédure événementielle de mon bouton de commande :

Code :
1
2
3
4
5
6
7
8
Private Sub Commande5_Click()
    Dim idInter As Integer
    Dim DateInter As Date
    DateInter = Texte2
    idInter = Liste0.Column(0)
    DoCmd.OpenForm "MouvementGrille", acNormal, , "idMouvementGrille=" & idInter
 
End Sub
Par contre je n'ai pas encore réussi à insérer directement la date dans le formulaire.

P.S. : Certains diront que je m'embête avec cette histoire de tomber directement sur un enregistrement mais je vais devoir gérer un table avec plusieurs milliers d'enregistrements à terme donc c'est juste une précaution ;-)
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 13h56   #9
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 456
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 456
Points : 7 530
Points : 7 530
Salut pour le champ calculé dans une requête. Tu vas dans l'éditeur de requête, tu ajoutes la table ou les tables dont tu as besoin et tu copie simplement :

Code :
TonChampCode:[NomChampContenantCVB35] & left([NomChampContenantMetal],1]) & [NomChampContenant3] & left([NomChampContenantInverse],1]) & [NomChampContenant11]
dans une des colonnes, sur la ligne des noms de champs. En adaptant évidement les nom de champ à ton besoin.

Pour ton code a enregistrer dans la table je procéderai au niveau du formulaire de saisie dans les événement Après MAJ des divers champs concernés ou avec un bouton "Calculer code".

Je mettrai la procedure suivante dans le module de code associé au formulaire :

Code :
1
2
3
4
5
6
7
Private sub AssignerCode()
   me.NomChampCode=Nz([NomChampContenantCVB35],"_____") & _
                               left(Nz(me.[NomChampContenantMetal],"_"),1) & _
                               Nz(me.[NomChampContenant3],0) & _
                               left(Nz(me.[NomChampContenantInverse],"_"),1) & _
                               Nz(me.[NomChampContenant11],0)
end sub
Dans le code du bouton ou celui des Après MAJ des divers champs tu mets

Petites explications :
  • Me. se réfère au formulaire courant.
  • NZ() substitue une valeur valide si le champ est null. Attention cette fonction est capricieuse avec les nombres réels. Elle peut parfois faire 'sauter' les décimales :-(.
    NomChampCode est le nom de ton champ dans la table.

Attention avec les autonum :
  • Tu ne peux avoir qu'un seul autonum par table et il est autonome. Donc ta numérotation ne tiendra pas compte des autres paramètres de ton code.
  • Il peut y avoir des trous dans la numérotation si par exemple tu annules la création d'un enregistrement. Le numéro attribué à cet enregistrement disparu est perdu.

Pour assigner une date à un champ il suffit de mettre comme valeur par défaut, soit dans la table soit dans le formulaire =Date().

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 08h54   #10
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Merci pour ton code pour l'enregistrement, ça marche !

En fait je n'arrivai pas à faire marcher ta ligne de code pour la requête mais j'ai changé mon champ de Liste à Liste déroulante et ça a marché.

Heureusement que vous êtes là pour donner un coup de pouce aux débutants comme moi !

Seb
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 10h42   #11
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Bonjour,

Pour mon problème de date j'ai essayé ca mais ca n'a pas l'air de marcher et je ne comprends pas bien pourquoi ?

Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub Commande5_Click()
    Dim idInter As Integer
    Dim lng As Long
    Dim DateInter As Date
    If IsNull(Texte2) = True Then
        MsgBox "Vous n'avez pas entré de date d'intervention", vbOKOnly, "Attention, date manquante !"
    End If
    DateInter = Texte2
    idInter = Liste0.Column(0)
    DoCmd.OpenForm "MouvementGrille", acNormal, , "idMouvementGrille=" & idInter And "DateFinEtat=" & DateInter
End Sub
Si j'enlève la partie 'And "DateFinEtat=" & DateInter' de mon code, j'ouvre bien mon formulaire "MouvementGrille" sur le numéro d'enregistrement demandé.
Je pourrai effectivement me passer de DoCmd.OpenForm car je veux simplement modifier la date DateFinEtat dans la table tbMouvementGrille mais je n'ai pas encore trouvé la méthode qui me fasse ca.

A+

Seb
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 18h21   #12
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 456
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 456
Points : 7 530
Points : 7 530
Désol mais je ne comprend pas bien ton besoin avec la date ?

Tu veux mettre une date dans un champ mais quelle date et à quel moment ?

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 19h25   #13
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Bonsoir,
en faite, mon projet fonctionne de la manière suivante :
Lorsque je fais une intervention sur une grille, je créé une nouvelle intervention sur ma table tbMouvementGrille avec un état (stock, monté, occasion, HS), le numéro de la grille, la date de début de l'état, une date de fin (par défaut je la met à 31/12/9999) et une référence à l'intervention précédente. Ainsi lorsque je ferai une nouvelle intervention sur cette grille, je voudrai changé la date de fin du 31/12/9999 à la date de l'intervention et inscrire la référence de l'intervention précédente dans la nouvelle intervention dans le champ prévu pour. Voilà pourquoi je voudrai changer l'enregistrement de la date dans la table tbMouvementGrille.
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 19h36   #14
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 456
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 456
Points : 7 530
Points : 7 530
Voilà ce que je comprend :

Citation:
Je voudrai changé la date de fin de l'intervention précédente du 31/12/9999 à la date de l'intervention nouvelle et inscrire la référence de l'intervention précédente dans la nouvelle intervention dans le champ prévu pour.
Est-ce bien cela ?

À vrai dire je ne voit pas l'intérêt de se souvenir de l'intervention précédente dans l'intervention nouvelle. Il suffit de trier tes interventions par date de début et tu les auras dans l'ordre. La gestion des cette liaison me semble compliquer le problème sans réel avantage.

Pour la récupération de l'intervention précédente et le changement de date, je te reviens un peu plus tard car ce n'est pas très simple.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 20h06   #15
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Oui c'est bien cela, le but étant de savoir ou était la grille à un instant donné, par exemple et 14/12/2010, si elle était en stock ou montée et sur quel crible.
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 22h16   #16
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 456
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 456
Points : 7 530
Points : 7 530
Je vais supposer que tu as un numéroauto dans ta table tbMouvementGrille. Ça va simpflier le la recherche de la ligne précédente.

Codes à mettre dans le formulaire de saisie

Code :
1
2
3
4
5
6
7
8
 
private function TrouverMouvementPrecedent(prmClefGrille as long, prmNumMouvement as long) as variant
   'Retourne Null si il n'y a pas de mouvement précécent.
 
   dim result as variant
   result=dmax("NumMouvement", "tbMouvementGrille", "[NumMouvement]<" & prmNumMouvement & " and [ClefMachine]=" & prmClefMachine):'Trouve le numéro max de l'enr concernant la grille qui n'est pas l'enr actuel.
   TrouverMouvementPrecedent=result
end function
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
private sub MAJ_MouvementPrecedent(prmClefGrille as long, prmNumMouvement as long, prmDateMouvement as date)
   dim numMouvementPrecedent as variant
   numMouvementPrecedent=TrouverMouvementPrecedent(prmClefGrille, prmNumMouvement)
 
   if not(isnull(numMouvementPrecedent)) then
      'Il y a un mouvement précédent
     dim db as dao.database:set db=currentdb
     dim r as dao.recordset:set r=db.openrecordset("tbMouvementGrille", dbOpenDynaset)
 
     if not r.nomatch then
         r.edit
         r![DateFinMouvement]=prmDateMouvement
         r.update
       else
         error(5):'Cas normalement impossible car on vient de le trouver
     end if
 
     r.close:set r=nothing:'Ferme le recordset et libère la mémoire utilisée.
     db.close:set db=nothing:'Ferme la database et libère la mémoire utilisée.
   end if
 
end sub
Pour l'appeler, dans l'événement Après MAJ de la date de début ou dans un bouton 'MAJ Précédent'.

Code :
1
2
 
Call MAJ_MouvementPrecedent(me.[ClefGrille], me.[NumMouvement], me.[dateDebutMouvement])
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 07h21   #17
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Merci marot_r,

je comprends un peu mieux la manière de faire. Pour ce qui est de la première partie de ton code, la fonction TrouverMouvementPrecedent, je n'en ai pas besoin car j'ai déjà un champ qui fait référence à la précédente intervention. Par contre j'ai une dernière question, dans mon "Ajouter" qui va modifier mon enregistrement de ma précédente intervention et afficher mon formulaire pour en créer une nouvelle, je souhaiterai savoir quelle méthode vba on utilise pour mettre le champ "idInterventionPrecedente" directement avec le numéro de l'intervention précédente sans que l'utilisateur puisse le modifier.

Merci

A+
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 11h07   #18
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Bonjour marot_r

je t'embête encore une fois mais je n'arrive pas à faire fonctionner ton code, j'ai mis le code suivant dans la procédure événementielle de mon bouton :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Commande5_Click()
    Dim idInter As Long
    Dim lng As Long
    Dim DateInter As Date
 
    'Message d'erreur s'il n'y a pas de date
    If IsNull(Texte2) = True Then
        MsgBox "Vous n'avez pas entré de date d'intervention", vbOKOnly, "Attention, date manquante !"
    End If
 
    'On enregistre la date de l'intervention et le numéro de l'intervention
    DateInter = Me.[Texte2]
    idInter = Liste0.Column(0)
 
    Call MAJ_MouvementPrecedent(idInter, DateInter)
    DoCmd.OpenForm "MouvementGrille", acNormal, , "GotoNew"
 
End Sub
Et il me met une erreur sur :
Code :
1
2
3
 
    DateInter = Me.[Texte2]
    idInter = Liste0.Column(0)
en me disant "erreur d'exécution '2447' : Utilisation non valide du point, point d'exclamation ou de parenthèse."

Je vois pas très bien pourquoi, j'ai essayé avec un "!" à la place du "." après le Me mais rien à faire.

Seb

Edit : Je viens d'arriver à faire marcher le code j'avais une erreur de format sur mon formulaire. J'avais la date automatiquement générée par Maintenant() mais qui donne la date et l'heure et en le remplaçant par Date(), ca m'a résolu mon problème.

Voilà le code que j'ai :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Private Sub Commande5_Click()
    Dim idInter As Long
    Dim lng As Long
    Dim DateInter As Date
 
    'Message d'erreur s'il n'y a pas de date
    If IsNull(Me!Texte2) = True Then
        MsgBox "Vous n'avez pas entré de date d'intervention", vbOKOnly, "Attention, date manquante !"
    End If
 
    'On enregistre la date de l'intervention et le numéro de l'intervention
    DateInter = Me!Texte2
    idInter = Liste0.Column(0)
 
    Call MAJ_MouvementPrecedent(idInter, DateInter)
    DoCmd.OpenForm "MouvementGrille", acNormal, , "GotoNew"
 
End Sub
 
Private Sub MAJ_MouvementPrecedent(prmNumMouvement As Long, prmDateMouvement As Date)
   Dim numMouvementPrecedent As Variant
   numMouvementPrecedent = prmNumMouvement
 
   If Not (IsNull(numMouvementPrecedent)) Then
      'Il y a un mouvement précédent
     Dim db As dao.Database: Set db = CurrentDb
     Dim r As dao.Recordset: Set r = db.OpenRecordset("tbMouvementGrille", dbOpenDynaset)
 
     If Not r.NoMatch Then
         r.Edit
         r![DateFinEtat] = prmDateMouvement
         r.Update
       Else
         Error (5): 'Cas normalement impossible car on vient de le trouver
     End If
 
     r.Close: Set r = Nothing: 'Ferme le recordset et libère la mémoire utilisée.
     db.Close: Set db = Nothing: 'Ferme la database et libère la mémoire utilisée.
   End If
 
End Sub
Maintenant il faut que j'arrive à récupérer le numéro de grille de mon formulaire "Intervention" et à le mettre automatiquement dans le formulaire "MouvementGrille" afin d'éviter de faire des erreurs de saisie lorsque l'on créera la nouvelle intervention (démontage de la grille car HS ou changement de production).
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 14h15   #19
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 456
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 456
Points : 7 530
Points : 7 530
Pour le problème avec le . et ! c'est sans doute les [] que j'avais mis qui pose le problème.

La différence entre "." et "!" c'est que le "." se réfère à un champ du formulaire et le "!" se réfère à un champ de la source de données du formulaire. Il se peut qu'un champ soit disponible dans la source de données mais ne soit pas utilisé par le formulaire. Il pourra être utilisé avec le "!" mais ne sera disponible avec le ".".

Plus généralement le "." permet d'accéder à des propriétés et des méthodes d'un objet. Les champs de saisie sont vus comme des propriétés du formulaire et généralement il porte le même nom que le champ de données qui leur est associé ce qui fait que me.NomTonChamp est équivalent à me!NomTonChamp.

Pour passer un paramêtre à un autre formulaire la méthode la plus simple est d'utiliser le dernier paramêtre de DoCmd.OpenFrom.

Dans le formulaire appelé, ajouter le code suivant sur OnOpen (Sur Ouverture)

Code :
1
2
3
4
5
if not isnull(me.OpenArgs) then
    me.NomTonChamp=me.OpenArgs
  else
    'Ne rien faire ou faire autre chose d'utile
end if
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 14h19   #20
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 456
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 456
Points : 7 530
Points : 7 530
À propos des noms de champs de saisie. Il est recommandé de mettre un nom qui est significatif. Par exemple dans ton cas Texte2 pourrait avantagesement être remplacé par DateInterventionSaisie ce qui est plus explicite.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h49.


 
 
 
 
Partenaires

Hébergement Web