Enregistrement,reprendre enregistrement précé
Fermé
RougeXIII
Messages postés
240
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 mars 2020
-
26 mars 2012 à 14:45
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 30 mars 2012 à 16:14
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 30 mars 2012 à 16:14
A voir également:
- Enregistrement,reprendre enregistrement précé
- Telecharger studio d'enregistrement rap - Télécharger - Édition & Montage
- Comment couper un enregistrement audio - Guide
- Enregistrement musique mp3 - Télécharger - Streaming audio
- Enregistrement ecran pc - Guide
- Youtube enregistrement vidéo - Guide
13 réponses
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
27 mars 2012 à 22:33
27 mars 2012 à 22:33
Bonsoir,
c'est possible mais il faudrait le coder. J'ai peut-être une solution plus simple.
Vous connaissez par avance le nombre et la liste des éléments matériels, je ferai ceci :
1) Créer une table qui contient votre liste de matériel
2) Dans le formulaire j'ajouterai une zone de liste déroulante qui afficherai le contenu de ma table. Ainsi à chaque fois que vous devrez choisir le matériel, il suffira de le choisir dans la liste en un simple clic.
Si jamais vous ne savez pas comment faire, je vous l'expliquerai.
c'est possible mais il faudrait le coder. J'ai peut-être une solution plus simple.
Vous connaissez par avance le nombre et la liste des éléments matériels, je ferai ceci :
1) Créer une table qui contient votre liste de matériel
2) Dans le formulaire j'ajouterai une zone de liste déroulante qui afficherai le contenu de ma table. Ainsi à chaque fois que vous devrez choisir le matériel, il suffira de le choisir dans la liste en un simple clic.
Si jamais vous ne savez pas comment faire, je vous l'expliquerai.
RougeXIII
Messages postés
240
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 mars 2020
2
28 mars 2012 à 10:06
28 mars 2012 à 10:06
Bonjour,
merci de la réponse, mais j'ai surment du mal m'exprimer.
Ce que je souhaite c'est faire l'inventaire d'un matériel. C'est à dire que mon formulaire est vierge ( et ma base de donné vide ) et je dois remplis tous les champs.
Et dans l'esprit de faciliter la saisie de ces matériels je souhaiterais que certaines zone de texte, reprenne les informations inscrit précédement . Car le lieu ( Bâtiment, Etage, pièce et service) son les même pour tous les matériels que je rencontre quand je vais dans le bureau de la DRH(par exemple) parce qu'elle à 2unité central,2 ecran, 1 imprimante. ( par exemple ) donc j'ai 5 matériel cela signifie que j'ai 5fois a remplire mon formulaire.
merci de la réponse, mais j'ai surment du mal m'exprimer.
Ce que je souhaite c'est faire l'inventaire d'un matériel. C'est à dire que mon formulaire est vierge ( et ma base de donné vide ) et je dois remplis tous les champs.
Et dans l'esprit de faciliter la saisie de ces matériels je souhaiterais que certaines zone de texte, reprenne les informations inscrit précédement . Car le lieu ( Bâtiment, Etage, pièce et service) son les même pour tous les matériels que je rencontre quand je vais dans le bureau de la DRH(par exemple) parce qu'elle à 2unité central,2 ecran, 1 imprimante. ( par exemple ) donc j'ai 5 matériel cela signifie que j'ai 5fois a remplire mon formulaire.
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
28 mars 2012 à 22:20
28 mars 2012 à 22:20
Ce n'est pas plus clair ... :-) Si votre base de données est vide comment reprendre l' "historique" de ce que vous auriez saisit ???
Vous dites qu'il y a plusieurs machines mais chacune peut ouvrir la même base de données ??? Donc travaillez-vous en client-serveur ?
Supposons que c'est le cas...
C'est donc possible mais vous n'échapperez pas à devoir coder un peu.
Avez-vous définit une clé primaire dans votre table ?
Je suppose que c'est le cas et j'appellerai celui-ci "PKService". Sur ce, exécutez les étapes suivantes :
1) Mettez le formulaire où vous désirez ajouter les dernières valeurs dernièrement ajoutées en mode création
3) Choisissez les propriétés de votre formulaire et cliquez sur l'onglet "Evènement"
4) Cliquez sur le bouton qui affiche trois petits points à côté de l'évènement "Avant insertion" (Before insert)
(5) Une fenêtre s'affiche et vous choisirez "Générateur de code" > En Office 2007)
6) Vous vous retrouvez dans l'outil de développement VBA où est affiché les lignes suivantes :
7) Dans cette fenêtre vous choisirez, si ce n'est déjà fait, "Outils" > "References"
8) Vous cochez "Microsoft DAO 3.51 Object Library" et vous cliquez sur "Ok"
9) Nous allons maintenant aller rechercher le dernier record de votre table avec les lignes suivantes avant la ligne "End Sub"
Dès lors, à chaque fois que vous ajouterez un nouvel enregistrement, les valeurs ajoutées au dernier seront affichées dans votre formulaire.
Voilà ;-)
ps : Je teste toujours ce que je poste, cela fonctionne donc.
Vous dites qu'il y a plusieurs machines mais chacune peut ouvrir la même base de données ??? Donc travaillez-vous en client-serveur ?
Supposons que c'est le cas...
C'est donc possible mais vous n'échapperez pas à devoir coder un peu.
Avez-vous définit une clé primaire dans votre table ?
Je suppose que c'est le cas et j'appellerai celui-ci "PKService". Sur ce, exécutez les étapes suivantes :
1) Mettez le formulaire où vous désirez ajouter les dernières valeurs dernièrement ajoutées en mode création
3) Choisissez les propriétés de votre formulaire et cliquez sur l'onglet "Evènement"
4) Cliquez sur le bouton qui affiche trois petits points à côté de l'évènement "Avant insertion" (Before insert)
(5) Une fenêtre s'affiche et vous choisirez "Générateur de code" > En Office 2007)
6) Vous vous retrouvez dans l'outil de développement VBA où est affiché les lignes suivantes :
Option Compare Database Private Sub Form_BeforeInsert(Cancel As Integer) End Sub
7) Dans cette fenêtre vous choisirez, si ce n'est déjà fait, "Outils" > "References"
8) Vous cochez "Microsoft DAO 3.51 Object Library" et vous cliquez sur "Ok"
9) Nous allons maintenant aller rechercher le dernier record de votre table avec les lignes suivantes avant la ligne "End Sub"
On Error GoTo Err_ Dim DB As DAO.Database Set DB = CurrentDb Dim strSQL As String ' ' Ne connaissant pas le nom de votre table, je l'appellerai "MaTable" ' strSQL = "SELECT PkService, Batiment, Etage, Piece, Service FROM MaTable " strSQL = strSQL & "WHERE PkService " strSQL = strSQL & "IN (" strSQL = strSQL & "SELECT Max(PkService) FROM MaTable)" Dim rst As DAO.Recordset Set rst = DB.OpenRecordset(strSQL, dbopendynset) If rst.RecordCount > 0 Then ' ' Ne connaissant pas le nom que vous ' avez donné à vos controles, ' j'ai appellé ceux-ci "txtBatiment", "txtService" ' Me.txtBatiment = rst!Batiment Me.txtEtage = rst!Etage ' Etc, etc, ... End If rst.Close Set rst = Nothing
Dès lors, à chaque fois que vous ajouterez un nouvel enregistrement, les valeurs ajoutées au dernier seront affichées dans votre formulaire.
Voilà ;-)
ps : Je teste toujours ce que je poste, cela fonctionne donc.
RougeXIII
Messages postés
240
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 mars 2020
2
Modifié par RougeXIII le 29/03/2012 à 12:18
Modifié par RougeXIII le 29/03/2012 à 12:18
super vous avez compris ce que je souhaitais !
j'ai donc essayé le VBA que vous m'avez fournis en remplaçant avec mes donner
Private Sub Form_BeforeInsert(Cancel As Integer)
On Error GoTo Err_
Dim DB As DAO.Database
Set DB = CurrentDb
Dim strSQL As String
'
' Le nom de ma table est "Lieux"
'
strSQL = "SELECT ID_Localisation, Batiment, Etage, Pièce, Service FROM Lieux "
strSQL = strSQL & "WHERE ID_Localisation "
strSQL = strSQL & "IN ("
strSQL = strSQL & "SELECT Max(ID_Localisation) FROM Lieux)"
Dim rst As DAO.Recordset
Set rst = DB.OpenRecordset(strSQL, dbopendynset)
If rst.RecordCount > 0 Then
'
' Le nom des mes contrôles sont :"txt_batiment","txt_etage","txt_piece","txt_service"
'
Me.txt_batiment = rst!Batiment
Me.txt_etage = rst!Etage
Me.txt_piece = rst!piece
Me.txt_service = rst!Service
End If
rst.Close
Set rst = Nothing
End Sub
Et j'ai le méssage d'erreur : Etiquette non définie
Voici quelque info supplémentaire : - mon formulaire regroupe mes 3 tables (Lieux, Materiel, information Fournisseur)
j'ai donc essayé le VBA que vous m'avez fournis en remplaçant avec mes donner
Private Sub Form_BeforeInsert(Cancel As Integer)
On Error GoTo Err_
Dim DB As DAO.Database
Set DB = CurrentDb
Dim strSQL As String
'
' Le nom de ma table est "Lieux"
'
strSQL = "SELECT ID_Localisation, Batiment, Etage, Pièce, Service FROM Lieux "
strSQL = strSQL & "WHERE ID_Localisation "
strSQL = strSQL & "IN ("
strSQL = strSQL & "SELECT Max(ID_Localisation) FROM Lieux)"
Dim rst As DAO.Recordset
Set rst = DB.OpenRecordset(strSQL, dbopendynset)
If rst.RecordCount > 0 Then
'
' Le nom des mes contrôles sont :"txt_batiment","txt_etage","txt_piece","txt_service"
'
Me.txt_batiment = rst!Batiment
Me.txt_etage = rst!Etage
Me.txt_piece = rst!piece
Me.txt_service = rst!Service
End If
rst.Close
Set rst = Nothing
End Sub
Et j'ai le méssage d'erreur : Etiquette non définie
Voici quelque info supplémentaire : - mon formulaire regroupe mes 3 tables (Lieux, Materiel, information Fournisseur)
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
29 mars 2012 à 21:44
29 mars 2012 à 21:44
Si vous avez tapé exactement ce que vous affichez l'erreur se trouve ici :
Me.txt_piece = rst!piece
car dans votre SQL le champ s'appele "Pièce" avec un accent !
C'est pourquoi je vous conseille ceci :
1) Ne jamais mettre d'espace dans les noms des tables ou des champs d'une base.
2) Ne jamais mettre d'accent non plus
Si votre champ s'appelle "Pièce", essayez ceci :
ou, si je me base sur le contenu de votre requête :
Le 2, représente l'index dans l'ordre dans lequel vous sélectionnez vos champs.
Index 0 : ID_Localisation
Index 1 : Batiment
Index 2 : Etage
Index 3 : Pièce
Index 4 : Service
;-)
Me.txt_piece = rst!piece
car dans votre SQL le champ s'appele "Pièce" avec un accent !
C'est pourquoi je vous conseille ceci :
1) Ne jamais mettre d'espace dans les noms des tables ou des champs d'une base.
2) Ne jamais mettre d'accent non plus
Si votre champ s'appelle "Pièce", essayez ceci :
Me.txt_piece = rst("Pièce")
ou, si je me base sur le contenu de votre requête :
Me.txt_piece = rst(3)
Le 2, représente l'index dans l'ordre dans lequel vous sélectionnez vos champs.
Index 0 : ID_Localisation
Index 1 : Batiment
Index 2 : Etage
Index 3 : Pièce
Index 4 : Service
;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
RougeXIII
Messages postés
240
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 mars 2020
2
Modifié par RougeXIII le 30/03/2012 à 11:48
Modifié par RougeXIII le 30/03/2012 à 11:48
J'ai retourné les lignes de tous les sens mais rien à faire :( j'ai toujours le même message d'erreur
et la ligne "On Error GoTo Err_" en surbrillance.
je vous met ci dessous la base de donnée. Pour que celavous semble plus clair.
http://dl.free.fr/getfile.pl?file=/ucLOXcBK
(ps : je vais essayer d'etre connecté ce soir pour voir sa ensemble )
et la ligne "On Error GoTo Err_" en surbrillance.
je vous met ci dessous la base de donnée. Pour que celavous semble plus clair.
http://dl.free.fr/getfile.pl?file=/ucLOXcBK
(ps : je vais essayer d'etre connecté ce soir pour voir sa ensemble )
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
30 mars 2012 à 12:44
30 mars 2012 à 12:44
Ok j'ai trouvé,
enlevez le On Error Goto Err_
et avant le End Sub, ajoutez ceci :
enlevez le On Error Goto Err_
et avant le End Sub, ajoutez ceci :
Exit Sub Err_: Msgbox Err.Description Err.clear
RougeXIII
Messages postés
240
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 mars 2020
2
30 mars 2012 à 13:07
30 mars 2012 à 13:07
Merci de votre réponse mais j'ai toujours un message d'erreur...
"Erreur d'execution '3001' :
Argument non valide"
et il me met en surbrillance cette ligne : "Set rst = DB.OpenRecordset(strSQL, dbopendynset) "
"Erreur d'execution '3001' :
Argument non valide"
et il me met en surbrillance cette ligne : "Set rst = DB.OpenRecordset(strSQL, dbopendynset) "
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
30 mars 2012 à 15:00
30 mars 2012 à 15:00
Avez-vous faire référence à la libraire "Microsoft DAO.3.51 Objects" ?
Parce que sinon ça ne peut pas fonctionner ... Ne vous inquiétez pas cette une librairie standard à Office, cela existe depuis la version 2 !
Parce que sinon ça ne peut pas fonctionner ... Ne vous inquiétez pas cette une librairie standard à Office, cela existe depuis la version 2 !
RougeXIII
Messages postés
240
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 mars 2020
2
30 mars 2012 à 15:09
30 mars 2012 à 15:09
Mince elle ne s'etait pas activé précédement!
je viens de mettre "Microsoft DAO.3.6 Objects" et sa ne fonctionne toujours pas
=(
je viens de mettre "Microsoft DAO.3.6 Objects" et sa ne fonctionne toujours pas
=(
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
30 mars 2012 à 15:41
30 mars 2012 à 15:41
Postez le code complet du bouton, pour que je puisse vérifier ligne par ligne ce que vous avez mit svp.
Pour info, je ne répondrai peut-être plus avant 21h30, 22h.
Pour info, je ne répondrai peut-être plus avant 21h30, 22h.
RougeXIII
Messages postés
240
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 mars 2020
2
30 mars 2012 à 15:47
30 mars 2012 à 15:47
Ce n'est pas pour une bouton c'est pour un Formulaire.
Je rapelle que plus haut dans la conversation j'ai mis un link de ma base de donné si vous souhaitez essayer.
ci-dessous ce que j'ai marqué pour mon Formulaire :
' cette commande VBA à pour but: à chaque fois que vous ajouterez un nouvel enregistrement, les valeurs ajoutées au dernier seront affichées.
Private Sub Form_BeforeInsert(Cancel As Integer)
Dim DB As DAO.Database
Set DB = CurrentDb
Dim strSQL As String
'
' Selection des Tables & champs qui sont en source de mes zones de texte
'
strSQL = "SELECT ID_Localisation, Batiment, Etage, Pièce, Service FROM Lieux "
strSQL = strSQL & "WHERE ID_Localisation "
strSQL = strSQL & "IN ("
strSQL = strSQL & "SELECT Max(ID_Localisation) FROM Lieux)"
Dim rst As DAO.Recordset
Set rst = DB.OpenRecordset(strSQL, dbopendynset)
If rst.RecordCount > 0 Then
'
' Me."Nom des champs" = rst!"Source de la zone"
Me.txt_batiment = rst!Batiment
Me.txt_etage = rst!Etage
Me.txt_piece = rst!Pièce
Me.txt_service = rst!Service
End If
rst.Close
Set rst = Nothing
Exit Sub
Err_:
MsgBox Err.Description
Err.Clear
End Sub
Je rapelle que plus haut dans la conversation j'ai mis un link de ma base de donné si vous souhaitez essayer.
ci-dessous ce que j'ai marqué pour mon Formulaire :
' cette commande VBA à pour but: à chaque fois que vous ajouterez un nouvel enregistrement, les valeurs ajoutées au dernier seront affichées.
Private Sub Form_BeforeInsert(Cancel As Integer)
Dim DB As DAO.Database
Set DB = CurrentDb
Dim strSQL As String
'
' Selection des Tables & champs qui sont en source de mes zones de texte
'
strSQL = "SELECT ID_Localisation, Batiment, Etage, Pièce, Service FROM Lieux "
strSQL = strSQL & "WHERE ID_Localisation "
strSQL = strSQL & "IN ("
strSQL = strSQL & "SELECT Max(ID_Localisation) FROM Lieux)"
Dim rst As DAO.Recordset
Set rst = DB.OpenRecordset(strSQL, dbopendynset)
If rst.RecordCount > 0 Then
'
' Me."Nom des champs" = rst!"Source de la zone"
Me.txt_batiment = rst!Batiment
Me.txt_etage = rst!Etage
Me.txt_piece = rst!Pièce
Me.txt_service = rst!Service
End If
rst.Close
Set rst = Nothing
Exit Sub
Err_:
MsgBox Err.Description
Err.Clear
End Sub
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
30 mars 2012 à 16:10
30 mars 2012 à 16:10
A la ligne : Set rst = DB.OpenRecordset(strSQL, dbopendynset)
C'est dbOpenDynaset
C'est dbOpenDynaset
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
30 mars 2012 à 16:14
30 mars 2012 à 16:14
Et pour être nickel, remettez en dessous de :
Private Sub Form_BeforeInsert(Cancel As Integer)
On Error Goto Err_
A la ligne suivante de Err.Clear, ajoutez Resume Exit_
Et la ligne précédente de Exit Sub Exit_:
Il faut toujours mettre une gestion d'erreur c'est plus propre.
Private Sub Form_BeforeInsert(Cancel As Integer)
On Error Goto Err_
A la ligne suivante de Err.Clear, ajoutez Resume Exit_
Et la ligne précédente de Exit Sub Exit_:
Il faut toujours mettre une gestion d'erreur c'est plus propre.