Créer un fichier depuis une base access

Résolu/Fermé
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 - 14 oct. 2010 à 19:30
 lecrol - 20 oct. 2010 à 18:00
Bonjour,

J'ai une base stocks. (Access2003/XP)
J'effectue un filtre sur cette base, à partir de valeurs saisies sur un formulaire.

Je voudrais en code VBA créer un fichier Excel (format CSV si possible, sinon XLS), à partir de cette table filtrée.

Mais je ne sais pas:
*** comment écrire la création du fichier excel (un docmd quelconque, peut-être ?). Je sais afficher la table filtrée en mode feuille de données, mais pas plus
!
*** comment indiquer les champs que je veux retenir dans ce fichier, 4 ou 4 pas plus. En effet, je ne veux pas sur ce fichier tous les champs de la table (plus de 30), ce qui est le cas déjà dans mon affichage "feuille de données"

Merci du tuyau que vous pourrez me passer
Amicalement,
Roland




A voir également:

23 réponses

Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
14 oct. 2010 à 22:26
1
Utilisateur anonyme
14 oct. 2010 à 22:07
Bonsoir,
Je crois que vous pourriez dans une macro s'agissant d'une requête de sélection, utliser transfererFeuilCalcul.
Ensuite peut-être transformer cette macro en module pour avoir la syntaxe demandée.
0
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 24
15 oct. 2010 à 06:38
Merci, le Pingou
j'avais bien consulté ce silte, déjà. Et j'y avais trouvé une réponse, mais beaucoup plus complexe que celle-ci. Un grand merci pour ce tuyau
C'est génial cette entr'aide grâce à ce site et... grâce à toi
Amicalement, merci encore !
Roland
0
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 24
15 oct. 2010 à 06:46
J'ai oublié de dire merci aussi à cocotehier. La soluce de Le Pingou convient mieux à mon besoin. Merci quand même à tous les deux. C'est sympa d'avoir répondu.

Il me faudra ensuite résoudre une autre problème. A partir d'un fichier excel sur lequel sont saisies des données de vente: code, prix, quantité vendue, il me faudra réaliser une mise à jour de ma base Stocks. Et ça non plus, je ne l'ai jamais fait encore. Si l'un de vous deux pouvait me proposer un exemple de code VBA, j'en serais hyper content. Je n'ai fait ce type de mise à jour qu'à partir du clavier et directement sur mon formulaire Stocks. Là, il me faudra la faire depuis un fichier excel. Et je n'ai pas encore été à la découverte des commandes nécessaires pour ça.

Amicalement
Roland
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
15 oct. 2010 à 21:01
Bonjour,
Concernant la suite énoncée, sans des informations précises c'est impossible de vous faire une proposition.
Salutations.
Le Pingou
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 24
16 oct. 2010 à 07:36
Merci de votre patience, Le Pingou,

Quelles précisions supplémentaires puis-je apporter à ma demande?
Il s'agira pour moi de mettre à jour un formulaire non pas "en saisie directe au clavier" (ça, je saurais faire ! lol) mais à partir d'un fichier excel qui, lui, sera créé sur un autre portable et que je récupère en fin de journée. C'est l'application de ma fille: une base de données sur l'ordi de la maison et des ventes dans la journée saisies sur un Pc portable

La base, et son formulaire: code article, libellé, prix, quantité en stock et plein d'autres champs
Le fichier excel: code article, prix, quantité vendue

C'est ce lien excel access (2003) que je ne saurai sûrement pas faire.

Merci encore de votre gentillesse,
Bien cordialement
Roland
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 16/10/2010 à 11:10
Bonjour,
Ma proposition en supposant que la saisie sur le portable est avec Access et que le transfert entre le portable et le PC se réalise par clef USB.
Créer un classeur pour le transfert /Sur Données externes puis choisir A partir du fichier Access / suivre les instructions.
Vous avez un fichier sur Excel qui correspond à votre table ou Requête sur Access et une connexion établie par Excel. Pour mettre à jour le fichier Excel il suffit de l'ouvrir, aller sur connexion et actualiser.
Vous copier le fichier sur la clef pour le transfert sur le PC et ensuite vous pouvez facilement mettre à jour .

Salutations.
Le Pingou
0
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 24
16 oct. 2010 à 11:55
Encore merci du ccntact. C'est sympa.

Mon souci n'est pas de faire passer le fichier d'un ordi sur l'autre. Sur le portable, les données pourront être saisies par un petit programme Access, ce qui est sans doute le plus simple. On resterait ainsi totalement sous Access (une petite table et son formulaire : code, libellé, quantité vendue)

Mon problème est de savoir comment mettre à jour la "grosse" table Stocks complète (plus de 5000 records), via son formulaire, depuis la "petite" table des données saisies dans la journée. Ces données "du jour" ou même "de la semaine" seront en effet à contrôler et à pointer avant de mettre à jour la base complète.

Ce que je ne sais pas faire, en vérité, c'est mettre à jour une table à partir d'une autre table ou d'un autre fichier.
Merci encore,
Roland
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 16/10/2010 à 13:59
Bonjour,
Je constate que c'est le contraire, Excel sur le portable et Access sur le PC. Vous pouvez faire comme l'exemple : Les données Excel sont liées à une table Attachée : http://www.cijoint.fr/cjlink.php?file=cj201010/cij2l4CZ7T.zip
Toutes les modifications apportées aux données dans Excel sont automatiquement répercutées dans la table attachée.
Il vous suffit de créer une requête mise à jour et c'est tout.
Je ne peux pas en faire plus sans connaitre la structure de votre base de données.

Salutations.
Le Pingou
0
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 24
16 oct. 2010 à 14:26
Merciiiiii (je me répète ..)
Je ne savais pas que la mise à jour de la Base (principale) par le fichier (secondaire) pouvait se faire automatiquement par une requète.
J'imaginais du code VBA pour la faire.
*********
Il faut dire que je suis obligé de faire cette mise à jour de la Base en différé, après contrôle manuel du fichier des ventes en fin de journée. Sinon, ça serait mille fois plus simple de saisir directement mes ventes sur un formulaire de la Base elle-même. C'est bien comme ça que ma fille faisait déjà, jusqu'à présent.
***********
Mon fichier "ventes du jour" pourrait être, à mon avis (?), aussi bien en Exel qu'en Access.
C'est pour cette raison que je disais que, peut-être, tout en Access serait préférable. Non ? Le fichier Xls de votre exemple serait alors une base mdb.
Mon problème est d'écrire le code VBA pour mettre à jour le champ "Stock" de la
Base-1 à partir du même champ de la Base-2. Pardonnez-moi si cette demande vous paraît simpliste mais, comme vous le constatez, je suis débutant.

***********
Ma requête me permettra-t elle de faire correctement cette mise à jour du stock sur la Base (anciennne quantité - vente) ?
En attendant votre prochaine lumière, je vais creuser la question Requête

Amicalement,
Roland
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 16/10/2010 à 14:47
Bonjour,
Merci, le seul problème est de connaitre la structure de votre base, ensuite se sera simple de régler la mise à jour.
Qu'elles sont les tables à disposition (avec les champs de chacune) ?
Ou une copie de la base sans les données sur www.cijoint.fr et poster le lien.
Note: les données sont dans les tables, les formulaire servent uniquement à afficher les données/les manipuler ...Salutations.
Le Pingou
0
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 24
16 oct. 2010 à 14:58
Sur ma base principale:
Nouvcode article: format texte (6 caractères alpha num)
Description: Champ mémo
Quantité entrée: type numérique (c'est la quantité achetée)
Nbrventes: numérique (c'est le nombre de fois où le produit a été vendu)
Reste: quantité restant en stock (entrée - total des vendus)
Prix de vente: numérique
******
Sur ma base annexe ( les ventes du jour)
Nouvcode article
Quantité vendue
Prix de vente
****
Comme tu peux le constater, la seule difficulté pour moi c'est cette obligation de faire la mise à jour en différé, le soir ou en fin de semaine.

Encore un grand m... mais ça, je te l'ai déjà dit !
Roland
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
16 oct. 2010 à 15:54
Bonjour,
Merci.
Je vais construire une base, c'est un peu plus long que de pouvoir utiliser la structure de votre base, selon vos données et vous donnerai une réponse d'ici à lundi.
Je part sur la base d'un rapport de vente journalière sur Excel.
0
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 24
16 oct. 2010 à 19:13
(re)bonjour,

Si j'abuse de ton tutorat, tu me le dis sans te gêner. D'accord ?
Mais je me prends au jeu... et je me lance dans des opérations... nouvelles pour moi.
Pour utiliser un futur programme d'impression de codes barres, j'aurais besoin d'un fichier csv; Je pourrais le faire "à la main", par les fonctions du menu (Fichier - export - etc. )
Mais, comme c'est pour ma fille, je voudrais qu'elle ait un formulaire Access qui lui permette de choisir, par petits paquets, ses codes dans la base "Stocks", avant de les imprimer en codes barres. Il faut dire, d'ailleurs, qu'on n'a pas encore fini de trouver le bon logiciel "codes barres" !

En attendant, je voudrais écrire en VBA un "docmd output to" pour créer ce fichier "Csv" (type excel), depuis ma base "Stocks".

Mais deux choses que je ne sais pas faire:
1°) comment spécifier, dans ou avant l'ordre "docmd output", le filtre de ma base "stocks"

2°) comment écrire avec ce docmd-là, le choix des seuls champs que je veux transporter sur mon fichier.

Je ne trouve pas la bonne syntaxe pour cet ordre "docmd output to",
*** ni pour placer le filtre "chaine" (je l'ai placé dans une variable string appelée "chaine")
*** ni pour désigner les 2 ou 3 champs que je veux seulement copier depuis ma base "Stocks" filtrée.

Est-ce que je suis assez clair ? Excuse-moi si ça n'est pas le cas.
Merci d'avance
Roland
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
16 oct. 2010 à 20:43
Bonjour,
En attendant la suite, c'est clair oui et non, par contre sans votre fichier je ne peux rien faire de plus.
Salutations.
Le Pingou
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
16 oct. 2010 à 23:44
Bonjour,
Voici le code pour créer la requête mise à jour (addition des valeurs correspondantes [NbrVente+quantité vendue]) :
UPDATE MaTable INNER JOIN VenteDuJour ON MaTable.NouvCodeArticle = VenteDuJour.[code article] SET MaTable.NbrVente = [MaTable]![NbrVente]+[VenteDuJour]![quantité vendue];
En plus de votre table il doit y avoir la table [VenteDuJour] comme vous le trouvez sur mon exemple :
https://forums.commentcamarche.net/forum/affich-19484587-creer-un-fichier-depuis-une-base-access#9
Il vous suffit d'exécuter la requête.
0
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 24
17 oct. 2010 à 16:54
Merci de la réponse super rapide ! Je vais essayer ça dés ce soir.
Mais ça me paraît déjà très clair. C'est ce paramètre "inner join" que je ne connaissais pas.

Il ne me restera plus ( pour le moment ... ahahahaha !) que cette question du "docmd output to" avec ce que je ne sais pas écrire:
*** comment spécifier le filtre sur la base à copier
*** et comment désigner les champs qui sont à copier sur l'output;

J'ai écrit:
DoCmd.OutputTo acOutputTable, "Stocks", acFormCSV, "Etiquettes.csv",

Mais je ne sais pas où et comment placer les "indications" de filtre sur "Stocks" et de champs à recopier depuis "Stocks"
Muchas gracias
Roland
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
17 oct. 2010 à 17:09
Bonjour,
Je vous rappel ceci :https://forums.commentcamarche.net/forum/affich-19484587-creer-un-fichier-depuis-une-base-access#15
De plus pour l'impression des codes barres il n'y a pas besoin de fichier avec extension [cvs], un fichier excel normal suffit.
Je pense qu'il serait plus important de commencer par le choix du logiciel pour code barre et ensuite créer se qu'il sera nécessaire.
Salutations.
Le Pingou
0
Utilisateur anonyme
19 oct. 2010 à 22:20
Bonsoir,
J'ai un code pour créer une fonction sous access qui génére un texte lequel lu avec la bonne police tranforme en code barre qui passe trés bien sur tous les lecteurs, pour la police j'en dispose aussi. Intéressé ?
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
18 oct. 2010 à 16:29
Bonjour,
Un petit exemple : http://www.cijoint.fr/cjlink.php?file=cj201010/cijv2IoU6R.zip
0
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 24
19 oct. 2010 à 12:22
Bonjour,
Tu es vraiment plus que sympa, l'ami. Chacune des soluces que tu me proposes gentiment m'apporte et m'apprend quelque chose. Mais je ne parviens toujours pas à coller pile à ce que je veux faire.
Pourtant, ça me parait simple mais je ne trouve pas la clé !

Je sais écrire un "docmd.output to" depuis ma base "stocks" pour créer mon fichier excel d'étiquettes. Je récupère bien ainsi l'image complète de toute ma base de départ, ce qui est normal.

Mais:
Comment écrire un docmd.outuput to à partir de cette base base filtrée et seulement pour 3 champs de cette base.

Mon second problème sera celui des mises à jour, en différé, de cette même base à partir d'une autre mini base des ventes de la journée.
Mais résolvons le premier avant le second, si tu veux bien

Si tu en es d'accord, on pourrait poursuivre ces échanges par mails perso pour ne pas encombrer le forum de mes "incompréhensions" !
Merci à toi de ta gentillesse
Roland (lecrol@yahoo.fr)
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
19 oct. 2010 à 16:18
Bonjour,
Mais:
Comment écrire un docmd.outuput to à partir de cette base base filtrée et seulement pour 3 champs de cette base.

Eh bien, vous oubliez le [docmd.outuput to ] et prenez l'exemple de droite avec le choix c'est exactement se qu'il vous faut.

C'est quoi une base filtrée ?

Pour le reste je ni comprend rien à votre manière de faire, on dirait que vous avez 1,2. 3 bases différentes.

Je le répète une dernière fois, sans la structure de votre(vos) base(s) je ne peux rien faire de plus.
0
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 24
19 oct. 2010 à 17:46
http://www.cijoint.fr/cjlink.php?file=cj201010/cijey5x9W0.zip

Bonjour,
Ceci est mon appli réduite et zippée

***** La SEULE BASE qui est concernée par ma question est la base STOCKS de cette appli

***** Le formulaire "choix-étiquettes" (au menu: Etiquettes codes barres) crée un filtre multicritères sur cette base. Et c'est ça ce que que j'appelais "base filtrée"

Et c'est depuis ce formulaire que le bouton "écrire le fichier" devrait me créer un fichier Excel mais ne contenant que 3 champs:
[nouvcode article], [description], [reste]

Pas d'autre base concernée que la base de départ, la base STOCKS !
Merci encore
Roland
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
19 oct. 2010 à 23:18
Bonjour,
Merci pour la mise à disposition de la base de données.
Maintenant je comprend pourquoi j'avais l'impression qu'il y avait plusieurs bases ....ce sont simplement les termes que vous avez utilisés qui ne sont pas corrects.

Petite mise au point :
***** La SEULE BASE qui est concernée par ma question est la base STOCKS de cette appli
Correct :
La seule TABLE qui est concernée par ma question est la TABLE [STOCKS] de cette application (ou base de données)

***** Le formulaire "choix-étiquettes" (au menu: Etiquettes codes barres) crée un filtre multicritères sur cette la base de cette table [STOCKS). Et c'est ça ce que que j'appelais "base filtrée" =Table [STOCKS] filtrée

Concernant le fichier excel pour code barre, il faut passer par une requête basée sur les données du formulaire [Choix etiquettes].
Ce sera dans la journée de demain.
Salutations.
Le Pingou
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
19 oct. 2010 à 23:36
Bonsoir,
J'ai un peu d'avance et je vous propose cei :
Créer une requête que vous nommez [R_codebarre] à l'aide de ce code SQL :
SELECT Stocks.[NouvCode article], Stocks.Description, Stocks.Reste
FROM Stocks
WHERE (((Stocks.Reste)>0) AND ((Stocks.Catégorie)=[Formulaires]![Choix etiquettes]![Catégorie]) AND ((Stocks.Produit)=[Formulaires]![Choix etiquettes]![Produit]));


Ensuite dans la procédure [Private Sub Créer_fichier_Click()]du formulaire [Choix etiquettes] vous remplacez votre instruction (DoCmd.OutputTo acOutputTable .....)
Par celle-ci :
DoCmd.OutputTo acOutputQuery, "R_codebarre", acFormxls, "Etiquettes.xls"
0