Macro access
Fermé
maxwelnina
Messages postés
10
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
17 mars 2006
-
8 mars 2006 à 15:43
olodin Messages postés 2 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 8 juin 2007 - 8 juin 2007 à 10:31
olodin Messages postés 2 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 8 juin 2007 - 8 juin 2007 à 10:31
A voir également:
- Macro access
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro logiciel - Télécharger - Organisation
- Access appdata - Guide
17 réponses
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
8 mars 2006 à 18:26
8 mars 2006 à 18:26
Pourquoi utilises-tu une macro?
L'assistant d'Access permet de créer un bouton pour la fermeture. Dans le code créé automatiquement par access (propriétés, onglet événement du bouton) il suffit d'intercaler :
Dim Reponse As String
Reponse= MsgBox("Voulez-vous quitter?",vbYesNo)
If Reponse = vbYes Then
DoCmd.Close "NomDuFormulaire"
End If
Pour ta 2ème question, je prévoirais une case à cocher destinée à demander à l'utilisateur s'il veut enregistrer ou un bouton de commande affectant la valeur oui (-1) à un champ oui/non.
Dans le bouton fermer, j'ajouterais une condition vérifiant si cette case à cocher est bien cochée. (valeur -1). Si ce n'est pas le cas, le bouton fermer intégrerait la suppression de l'enregistrement.
If [Enregistré] = 0 Then
RunCommand acCmdDeleteRecord
End If
(où "Enregistré" est bien sûr le nom du champ Oui/Non)
Attention, cette procédure n'est efficace que si l'utilisateur ne modifie qu'un enregistrement à la fois (access enregistre automatiquement l'enregistrement lorsqu'on passe au suivant)
Pour éviter les fausses manoeuvres, il faut intégrer la case à cocher "Enregistré" à la table, sinon, chaque fois que l'utilisateur va fermer le formulaire même sans avoir rien modifié l'enregistrement en cours sera effacé si la case n'est pas cochée...
Je ne vois pas vraiment de solution plus simple... mais je ne garantis pas qu'elle n'existe pas.
L'assistant d'Access permet de créer un bouton pour la fermeture. Dans le code créé automatiquement par access (propriétés, onglet événement du bouton) il suffit d'intercaler :
Dim Reponse As String
Reponse= MsgBox("Voulez-vous quitter?",vbYesNo)
If Reponse = vbYes Then
DoCmd.Close "NomDuFormulaire"
End If
Pour ta 2ème question, je prévoirais une case à cocher destinée à demander à l'utilisateur s'il veut enregistrer ou un bouton de commande affectant la valeur oui (-1) à un champ oui/non.
Dans le bouton fermer, j'ajouterais une condition vérifiant si cette case à cocher est bien cochée. (valeur -1). Si ce n'est pas le cas, le bouton fermer intégrerait la suppression de l'enregistrement.
If [Enregistré] = 0 Then
RunCommand acCmdDeleteRecord
End If
(où "Enregistré" est bien sûr le nom du champ Oui/Non)
Attention, cette procédure n'est efficace que si l'utilisateur ne modifie qu'un enregistrement à la fois (access enregistre automatiquement l'enregistrement lorsqu'on passe au suivant)
Pour éviter les fausses manoeuvres, il faut intégrer la case à cocher "Enregistré" à la table, sinon, chaque fois que l'utilisateur va fermer le formulaire même sans avoir rien modifié l'enregistrement en cours sera effacé si la case n'est pas cochée...
Je ne vois pas vraiment de solution plus simple... mais je ne garantis pas qu'elle n'existe pas.
maxwelnina
Messages postés
10
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
17 mars 2006
9 mars 2006 à 11:17
9 mars 2006 à 11:17
merci zenon mon probleme 1 a pu etre resolu mais mon inquietude demeure au niveau du probleme 2
sans vouloir etre rabajoie il existe un troisieme probleme
et bien j'aimerais savoir comment faire ceci
j'ai une table T_produits et une table T_clients j'aimerais que lorsque j'attribue un produit a un client celui si soit automatiquement marque comme utiliser et si jamais je vient a ettribuer le meme produit a un autre client alors qu'une alerte indique le produit comme deja utilise
autre possibilite retirer les produits attribues de la table T_produits est ce possible si oui comment on s'y prends merci de votre aide
merci
sans vouloir etre rabajoie il existe un troisieme probleme
et bien j'aimerais savoir comment faire ceci
j'ai une table T_produits et une table T_clients j'aimerais que lorsque j'attribue un produit a un client celui si soit automatiquement marque comme utiliser et si jamais je vient a ettribuer le meme produit a un autre client alors qu'une alerte indique le produit comme deja utilise
autre possibilite retirer les produits attribues de la table T_produits est ce possible si oui comment on s'y prends merci de votre aide
merci
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
9 mars 2006 à 13:45
9 mars 2006 à 13:45
Tu fais de la location ou du prêt
Tu devrais ajouter une table "location" comportant:
N°Client (clé externe table clients)
N°Produit (clé externe table produits) ttes deux au format numérique et formant une clé primaire combinée)
Date location
Date retour
De cette manière, en créant une requête fondée sur les tables produits et location, tu sauras quels produits sont indisponibles et quand ils devraient rentrer (et éventuellement à qui tu les as loués...)
Tu devrais ajouter une table "location" comportant:
N°Client (clé externe table clients)
N°Produit (clé externe table produits) ttes deux au format numérique et formant une clé primaire combinée)
Date location
Date retour
De cette manière, en créant une requête fondée sur les tables produits et location, tu sauras quels produits sont indisponibles et quand ils devraient rentrer (et éventuellement à qui tu les as loués...)
maxwelnina
Messages postés
10
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
17 mars 2006
9 mars 2006 à 13:53
9 mars 2006 à 13:53
Une fois de plus je te remercie pour ta solicitude Zenon en realite je suis cablo operateur et je dispose d'un stock de produits que je doit installe a chaque nouveau client c'est pourquoi je souhaiterai ne pas attribue le meme matos a 2 clients differents si a partir de ces infos tu peux m'aider d'avantage ce serai cool merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
9 mars 2006 à 14:07
9 mars 2006 à 14:07
Bon, OK, difficile de récupérer le matériel...
Dans ce cas, c'est plutôt un problème de gestion de stock...
Tout dépend comment tu gères ce dernier.
Le matériel est-il encodé "individuellement" par N° de série par exemple?
Dans ce cas, tu dois probablement garder une trace de ce que tu as installé chez chaque client mais ça ne me semble pas logique de garder ces informations dans la table concernant le stock qui, sinon, va grossir indéfiniment. Je pense qu'il vaudrait mieux créer une table "installations" qui reprendrait le matériel installé, la date et le N° client.
Si tu n'encodes que le nombre de pièces en stock pour chaque type de produit, il faudra écrire un bout de code pour modifier les valeurs en stock lorsque le(s)produits auront été installés.
Dans ce cas, c'est plutôt un problème de gestion de stock...
Tout dépend comment tu gères ce dernier.
Le matériel est-il encodé "individuellement" par N° de série par exemple?
Dans ce cas, tu dois probablement garder une trace de ce que tu as installé chez chaque client mais ça ne me semble pas logique de garder ces informations dans la table concernant le stock qui, sinon, va grossir indéfiniment. Je pense qu'il vaudrait mieux créer une table "installations" qui reprendrait le matériel installé, la date et le N° client.
Si tu n'encodes que le nombre de pièces en stock pour chaque type de produit, il faudra écrire un bout de code pour modifier les valeurs en stock lorsque le(s)produits auront été installés.
maxwelnina
Messages postés
10
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
17 mars 2006
9 mars 2006 à 15:10
9 mars 2006 à 15:10
effectivement zenon dans ma table produits j'ai un champ numero de produits car chaque matos est unique (numero de serie)
et comme je l'expliquais j'ai fait 3 tables T_produits,T_clients et T_problemes vue qu'il arrive des problemes de temps en temps
je sais si ma logique est bonne de ne cree que 3 tables mais mon probleme demeure si pour le resoudre t'estime qu'il faut passer par d'
la creation d'autre tables et bien s'il te plait explique moi car comme je te l'avais signale je suis pas tres calle access donc des explications detailleses(etape par etape) me seront fort bien utiles je sais ca te prendra peu etre beaucoup de temps mais je sais que si tu le veux alors tu le pourra merci encore de prendre de ton temps pour me repondre
et comme je l'expliquais j'ai fait 3 tables T_produits,T_clients et T_problemes vue qu'il arrive des problemes de temps en temps
je sais si ma logique est bonne de ne cree que 3 tables mais mon probleme demeure si pour le resoudre t'estime qu'il faut passer par d'
la creation d'autre tables et bien s'il te plait explique moi car comme je te l'avais signale je suis pas tres calle access donc des explications detailleses(etape par etape) me seront fort bien utiles je sais ca te prendra peu etre beaucoup de temps mais je sais que si tu le veux alors tu le pourra merci encore de prendre de ton temps pour me repondre
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
9 mars 2006 à 16:15
9 mars 2006 à 16:15
Ca dépend comment tu veux travailler.
Tu devrais peut-être prévoir de trier tout de même le matériel par type sinon, tu risques de devoir réencoder inutilement un tas de renseignements pour chaque pièce.
Je pense que tu devrais aussi avoir une table destinée à savoir quel matériel tu as utilisé chez tel client.
En revanche, tu peux "purger" ta table "stock" lorque le matériel est utilisé.
En pratique, je verrais au moins une table "Matériel" reprenant les différents types de matériel (cables, fiches,décodeurs...) reliée par une relation 1-n à une table "produits" comportant le N°de série et probablement une description.
Il faudra aussi une table "commandes" reprenant la liste du matériel utilisé et une référence au N°client (clés externes N°Client et N°Produit)
Enfin, il faut une table clients.
Lors de l'utilisation du matériel, j'utiliserais un formulaire fondé sur les données client (table clients) avec un sous-formulaire fondé sur la table commandes.
Dans l'en-tête du formulaire, tu pourras intégrer des zones de liste reprenant la liste de tout le matériel en stock. il suffira de cliquer sur l'item choisi pour l'ajouter à la table commandes...
Quant à la gestion du stock, on peut prévoir de supprimer la ligne se référant à l'article en question dans la table produits dans la même opération.
Pour les commandes de matériel, tu pourras te baser sur un formulaire affichant par type de produit le nombre de pièces disponibles, si ta table "Matériel" est bien détaillée.
Qu'en penses-tu?
Tu devrais peut-être prévoir de trier tout de même le matériel par type sinon, tu risques de devoir réencoder inutilement un tas de renseignements pour chaque pièce.
Je pense que tu devrais aussi avoir une table destinée à savoir quel matériel tu as utilisé chez tel client.
En revanche, tu peux "purger" ta table "stock" lorque le matériel est utilisé.
En pratique, je verrais au moins une table "Matériel" reprenant les différents types de matériel (cables, fiches,décodeurs...) reliée par une relation 1-n à une table "produits" comportant le N°de série et probablement une description.
Il faudra aussi une table "commandes" reprenant la liste du matériel utilisé et une référence au N°client (clés externes N°Client et N°Produit)
Enfin, il faut une table clients.
Lors de l'utilisation du matériel, j'utiliserais un formulaire fondé sur les données client (table clients) avec un sous-formulaire fondé sur la table commandes.
Dans l'en-tête du formulaire, tu pourras intégrer des zones de liste reprenant la liste de tout le matériel en stock. il suffira de cliquer sur l'item choisi pour l'ajouter à la table commandes...
Quant à la gestion du stock, on peut prévoir de supprimer la ligne se référant à l'article en question dans la table produits dans la même opération.
Pour les commandes de matériel, tu pourras te baser sur un formulaire affichant par type de produit le nombre de pièces disponibles, si ta table "Matériel" est bien détaillée.
Qu'en penses-tu?
maxwelnina
Messages postés
10
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
17 mars 2006
11 mars 2006 à 10:30
11 mars 2006 à 10:30
je trouve chouette bien ke j'y comprends pas grand chose au niveau de (cle externes Nºclient et produit) decris moi la procedure s'il te plais
de meme que la procedure de suppression de ligne
de meme que la procedure de suppression de ligne
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
12 mars 2006 à 11:55
12 mars 2006 à 11:55
Bin, c'est la "clé" des bases de données "relationnelles"
Il y a "un ou deux inconvénients"...
D'abord il faut que tes clés primaires soient au format N°Auto ou numériques.
L'idéal est qu'elles soient orthographiées de la même manière et qu'elles ne comportent pas d'espaces ni d'accents (ça facilite grandement l'écriture du code, sinon, tu esras obligé de les entourer de crochets [] pour qu'access les "reconnaisse"...
Ensuite, tu vas dans la fenêtre "relations", tu ajoutes les tables et tu peux faire un "drag and drop" du champ clé primaire à sa référence dans la table connexe? Ensuite, tu peux choisir le type de relation (en général 1-n)...
Par exemple: tu as 1 client; il peut faire n commandes. La référence au N°client devrait être présente dans la table "commandes". De cette manière, tu peux effectuer une requête qui extrait toutes les commandes du client donné sans devoir encoder le mon, l'adresse ou le signe astrologique du client dans chaque enregistrement de ta table commandes...
Tu vois le principe? (désolé si "j'enfonce des portes ouvertes...)
Il y a "un ou deux inconvénients"...
D'abord il faut que tes clés primaires soient au format N°Auto ou numériques.
L'idéal est qu'elles soient orthographiées de la même manière et qu'elles ne comportent pas d'espaces ni d'accents (ça facilite grandement l'écriture du code, sinon, tu esras obligé de les entourer de crochets [] pour qu'access les "reconnaisse"...
Ensuite, tu vas dans la fenêtre "relations", tu ajoutes les tables et tu peux faire un "drag and drop" du champ clé primaire à sa référence dans la table connexe? Ensuite, tu peux choisir le type de relation (en général 1-n)...
Par exemple: tu as 1 client; il peut faire n commandes. La référence au N°client devrait être présente dans la table "commandes". De cette manière, tu peux effectuer une requête qui extrait toutes les commandes du client donné sans devoir encoder le mon, l'adresse ou le signe astrologique du client dans chaque enregistrement de ta table commandes...
Tu vois le principe? (désolé si "j'enfonce des portes ouvertes...)
maxwelnina
Messages postés
10
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
17 mars 2006
13 mars 2006 à 09:37
13 mars 2006 à 09:37
escuse moi Zenon j'essaie de t'envoyer une copie de ma base mais parais que t'as de petits probleme avec ton mailer car il m'envoie plein de message d'erreur si jamais t'as un autre je me ferai un plaisir de l'utilise a +
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
13 mars 2006 à 10:19
13 mars 2006 à 10:19
Je sais, ça "merdouille" pas mal en ce moment...
Essaie: guy.carpentier@tiscali.be, sans garantie, j'essaie d'arranger ça.
Essaie: guy.carpentier@tiscali.be, sans garantie, j'essaie d'arranger ça.
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
13 mars 2006 à 13:00
13 mars 2006 à 13:00
En principe, c'est "réparé".
J'ai encore une autre adresse au cas où: guy.carpentier@chhf.be
J'ai encore une autre adresse au cas où: guy.carpentier@chhf.be
maxwelnina
Messages postés
10
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
17 mars 2006
16 mars 2006 à 11:07
16 mars 2006 à 11:07
salut zenon s'il te plais j'attends toujours ta precieuse aide t'es surement super occuper mais si tu pouvais me faire signe ca ma rassurerais vraiment .a + bonne journee
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
16 mars 2006 à 13:01
16 mars 2006 à 13:01
Salut,
J'ai simplement des journées de 12 heures... et besoin de mes nuits pour dormir!
J'ai qque problèmes avec la structure de tes données:
Si tu vends du matériel type décodeur... porteur d'un numéro de série défini, il est sûrement utile de le noter pour pouvoir savoir chez qui il est installé.
En revanche, pour du cable, j'imagine que tu le reçois en bobines de x mètres et que tu ne factures que ce que tu as installé. Il te reste donc y mètres sur ta bobine. Ca peut ne pas suffire pour faire une nouvelle installation et tu devras donc entamer une autre bobine... Je pense que ce n'est pas raisonnable d'encoder ce genre de choses dans une Base, les données encodées risquent d'être très loins de la réalité...
Pourrais-tu me préciser la liste du matériel utilisé et comment tu penses qu'on peut regrouper ou trier les éléments?
J'ai simplement des journées de 12 heures... et besoin de mes nuits pour dormir!
J'ai qque problèmes avec la structure de tes données:
Si tu vends du matériel type décodeur... porteur d'un numéro de série défini, il est sûrement utile de le noter pour pouvoir savoir chez qui il est installé.
En revanche, pour du cable, j'imagine que tu le reçois en bobines de x mètres et que tu ne factures que ce que tu as installé. Il te reste donc y mètres sur ta bobine. Ca peut ne pas suffire pour faire une nouvelle installation et tu devras donc entamer une autre bobine... Je pense que ce n'est pas raisonnable d'encoder ce genre de choses dans une Base, les données encodées risquent d'être très loins de la réalité...
Pourrais-tu me préciser la liste du matériel utilisé et comment tu penses qu'on peut regrouper ou trier les éléments?
maxwelnina
Messages postés
10
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
17 mars 2006
17 mars 2006 à 11:26
17 mars 2006 à 11:26
en fait le materiel est classe comme suit
des antennes il y a 2 types (flatpannel ,yagi)
des concentrateurs 4 types(sda1dc, sda1ac, sda4h ,sda4v )
des swichs
des routers
bref voila en gros le matos a gerer car j'ai pas besoin de gerer du cable je le fait manuellement .
de plus dit moi zenon tu as vu la colonne [Deja utilise] que j'ai cree dans ma table produits dit moi est il possible de realiser une activation de cette case a partir de formulaire client ? car ainsi lorsque j'attribuerai le materiel a un client je cocherais aussitot la case correspondante a ce numero de serie dit moi est ce que c'est possible ? si oui comment ou alors file moi autre idee pour faire la chose
bonne journee et a ++
des antennes il y a 2 types (flatpannel ,yagi)
des concentrateurs 4 types(sda1dc, sda1ac, sda4h ,sda4v )
des swichs
des routers
bref voila en gros le matos a gerer car j'ai pas besoin de gerer du cable je le fait manuellement .
de plus dit moi zenon tu as vu la colonne [Deja utilise] que j'ai cree dans ma table produits dit moi est il possible de realiser une activation de cette case a partir de formulaire client ? car ainsi lorsque j'attribuerai le materiel a un client je cocherais aussitot la case correspondante a ce numero de serie dit moi est ce que c'est possible ? si oui comment ou alors file moi autre idee pour faire la chose
bonne journee et a ++
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
18 mars 2006 à 00:47
18 mars 2006 à 00:47
Salut,
Oui, il est possible, lorsqu'on sélectionne un produit de mettre à jour la date de la vente et donc de le supprimer de la liste des produits à vendre.
Le mieux, c'est une requête mise à jour. C'est facile en mode graphique:
Tu ouvres une requête en mode création, tu ajoutes la table que tu veux modifier puis les champs (dans l'exemple que je t'ai envoyé, DateSortie et N°Pièce) Puis dans la barre d'outils tu trouves un bouton qui te permet de choisir le type de requête. Tu choisis "mise à jour". La fenêtre se modifie.
Dans le champ DateSortie, tu écris à la ligne mise à jour: Date()
Dans le champ N°Pièce, à la ligne Critère, tu écris: = Forms!F_Commandes!N°Pièce. (toujours si tu prends l'exemple que je t'ai envoyé)
Cette requête peut être enregistrée telle quelle et exécutée dans le formulaire, par exemple lors de l'impression de la commande (tous les produits commandés sont mis à jour en une fois)
Il est aussi possible de l'exécuter en VB très simplement: tu affiches la requête en mode SQL puis tu fais un simple "copier-coller dans ta fenêtre VB à la suite de DoCmd.RunSQL en mettant la requête entre guillements.
J'ai fait tt ça ds mon exemple mais je n'arrive pas à te l'envoyer...
Oui, il est possible, lorsqu'on sélectionne un produit de mettre à jour la date de la vente et donc de le supprimer de la liste des produits à vendre.
Le mieux, c'est une requête mise à jour. C'est facile en mode graphique:
Tu ouvres une requête en mode création, tu ajoutes la table que tu veux modifier puis les champs (dans l'exemple que je t'ai envoyé, DateSortie et N°Pièce) Puis dans la barre d'outils tu trouves un bouton qui te permet de choisir le type de requête. Tu choisis "mise à jour". La fenêtre se modifie.
Dans le champ DateSortie, tu écris à la ligne mise à jour: Date()
Dans le champ N°Pièce, à la ligne Critère, tu écris: = Forms!F_Commandes!N°Pièce. (toujours si tu prends l'exemple que je t'ai envoyé)
Cette requête peut être enregistrée telle quelle et exécutée dans le formulaire, par exemple lors de l'impression de la commande (tous les produits commandés sont mis à jour en une fois)
Il est aussi possible de l'exécuter en VB très simplement: tu affiches la requête en mode SQL puis tu fais un simple "copier-coller dans ta fenêtre VB à la suite de DoCmd.RunSQL en mettant la requête entre guillements.
J'ai fait tt ça ds mon exemple mais je n'arrive pas à te l'envoyer...
olodin
Messages postés
2
Date d'inscription
vendredi 8 juin 2007
Statut
Membre
Dernière intervention
8 juin 2007
8 juin 2007 à 10:31
8 juin 2007 à 10:31
bonjour.
g un probleme avec la creation d'une macro permettant de supprimer tous les enregistrements d'une table. g retourné tous le logiciel, vous avez une astuce??
g un probleme avec la creation d'une macro permettant de supprimer tous les enregistrements d'une table. g retourné tous le logiciel, vous avez une astuce??