Excel-Access récupération de champs
Résolumod77 Messages postés 1320 Date d'inscription Statut Membre Dernière intervention -
J'ai fait un formulaire de saisie d'identité de client sous access avec d'autre saisie.
J'ai fait un questionnaire sous excel qui devra être lié au client.
Pour faire mon rapport, j'ai besoin de récupérer, sous excel, certains champs saisis sous access.
Comment dois-je faire pour que ça soit automatique et pas au coup par coup ?
C'est a dire que lorsque j'ouvre mon fichier excel il y ait les coordonnées du client dans la feuil du questionnaire.
Quelqu'un peut-il me renseigner SVP ?
- Valeur champ excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
64 réponses
Le besoin est d’extraire automatiquement dans Excel les coordonnées du client affiché dans Access et de les pré-remplir dans la feuille du questionnaire sans saisie manuelle. Une solution simple consiste à créer une requête dans Access qui filtre le client concerné et à importer cette requête dans Excel via Données > Importation de données externes, de façon à n’obtenir que les éléments souhaités. Une alternative est d’établir une liaison entre Excel et Access (OLE) et d’alimenter la feuille Excel via une requête SQL qui renvoie l’enregistrement en cours, par exemple en filtrant sur l’identification. Le fil évoque aussi la possibilité d’un déclenchement automatique à l’ouverture d’Excel ou via un bouton, mais la mise en œuvre pratique peut s’avérer complexe selon la configuration.
Merci pour l'info "client". Ca veut donc dire écrire "client" dans la variable client, n'est ce pas?
Concernant la proposition de Le Pingou, je suis en train de débugger. J'ai déclaré des variables qui manquent et je bloque justement sur celle-ci: "exapp =" ? avez-vous l'astuce SVP?
Pouvez-vous me dire si je peux choisir la façon d'afficher les données récupérées SVP , sur une même colonne.
Merci
Je viens de contrôler le fichier exemple et il fonctionne à la perfection.
Il y a certainement une erreur chez vous.
Contrôler, sous Access, que la bibliotèque "Microsoft Excel xx Objects Library" est disponible dans les références MS VBA (Alt+F11 et sous menu Outils clic sous Références )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionJe n'ai pas voulu vous offusquer, je sais au combien votre aide m'est toujours précieuse, mais comme ça plantait dès le début d'abord sur "repclasseur" alors je l'ai déclaré, puis sur "Chr(34)" et enfin sur "exapp =" je ne savais plus quoi faire.
Néanmoins, j'ai regardé dans les références et j'ai bien "Microsoft Excel 10 Objects Library" de sélectionné.
Sur l'utilisation de votre proposition je dois bien ouvrir le fichier Excel "GestionPerso" puis ouvrir la BD_GestionPerso et cliquer sur le bouton "Renseigner Excel" apres avoir sélectionné ma fiche ?
Se serait bien que ça marche, car c'est exactement la façon de gérer que je cherche à faire.
Merci encore
Il y a certainement un problème de version Access.
Qu'elle est votre version ?
En plus, merci, de mettre une copie de la fenêtre des références !
J'attends votre réponse.
Merci. Mais se n'est pas les bonnes références, elles cporrespondent GestionPerso.xls:
Merci de mettre celles qui correspondent à Access GestionPerso.mdb
je viens de voir qu'il manque aussi "microsoft excel 12.0 object library" lorsque j'ouvre BD "GestionPerso"
je vais voir ce que vous me marquez.
A+
https://www.cjoint.com/?derjU2lKLd
mais je ne trouve pas le fichier manquant.
Merci comme cela c'est mieux.
Vous devez décocher [Manquant: Microsoft Exel 12.0 Object Library] et [Microsoft ADO Ext. 2.8 for DDL and Security]
Un grand merci à vous ça marche, Le Pingou.
Je vais essayer d'adapter maintenant votre version.
Il y a dores et déjà une ligne que je ne comprends pas :
" WHERE T_InitialisationAnnees.Identification = " & Chr(34) & Form_F_InitConge.Matricule & Chr(34)
Que représente Chr(34) ? et
quelle différence y-a-t-il entre "Sub EngVersExcel_ouvre_classeur()" et "Sub EngVersExcel()" dans leur rôle?
Merci
Juste au passage .....
Que représente Chr(34) ? Caractère de ponctuation (") nécessaire à la requête , a ne pas remplacer ou supprimer.
quelle différence y-a-t-il entre "Sub EngVersExcel_ouvre_classeur()" et "Sub EngVersExcel()" dans leur rôle? La première est un essai qui ouvre un classeur, j'ai oublié de la supprimer.
Peut-on prévoir que Excel s'ouvre dès qu'on appui sur le bouton dans access, puis éxécute le transfert ?
Ou faut-il créer un autre bouton pour cela ?
Je suis de retour, mes réponses pour ce poste:
OK! dommage c'est celle qui se compile bien, l'autre me cause problème, mais c'est mon adaptation.
Les 2 vous poserons des problèmes, vous devez adapter le code selon vos propres fichiers.
Peut-on prévoir que Excel s'ouvre dès qu'on appui sur le bouton dans access, puis éxécute le transfert ? Oui c’est possible, cela dépends de la fréquence des ouvertures/fermetures mais cela on ne le sait pas.
Ou faut-il créer un autre bouton pour cela ? Non
Je n'ai pas trouvé la variable "matricule" dans votre base access. Est-ce que je dois laisser ce terme pour la mienne?
Aussi, je n'ai pas créé de requête est-ce indispensable ?
ça bloque à cette ligne:
strSQL = "SELECT * FROM T_Client" & _
" WHERE T_Client.N°Client = " & Chr(34) & Form_F - Table.Matricule & Chr(34)
merci
Concerne poste 40 :
Je n'ai pas trouvé la variable "matricule" dans votre base access. Est-ce que je dois laisser ce terme pour la mienne?
Matricule est le nom du champ d’identification du formulaire [Form_F_InitConge] (champ père) qui lient les enregistrements du sous-formulaire [Form_ SF_InitialisationConge] (champ fils).
Vous devez donc mettre le nom que vous avez dans votre formulaire [Form_.......... . NomDeVotreChamp ]
Aussi, je n'ai pas créé de requête est-ce indispensable ?
Sans requête, aucunes données seras disponibles …
Alors, comment est appelé/activé cette requête et quelle est la requête qui sert à l'affichage SVP ?
Eh bien :
Alors, comment est appelé/activé cette requête et quelle est la requête qui sert à l'affichage SVP ?
La requête est transmise à la variable [strSQL]
strSQL = "SELECT * FROM T_InitialisationAnnees" & _
" WHERE T_InitialisationAnnees.Identification = " & Chr(34) & Form_F_InitConge.Matricule & Chr(34)
La requête est exécutée et le résultat est transmis dans la variable [rstcha]
Set rstcha = cdb.OpenRecordset(strSQL)
J'ai 2 questions qui ont leur importance:
1- Est-ce que je peux utiliser comme argument de liaison entre table et formulaire, la variable de clé des tables?
J'ai écris ceci, mais ça bug à la dernière ligne: C'est N°Client qui est la clé des 2 tables.
strSQL = "SELECT * FROM T_Client" & _
" WHERE T_Client.N°Client = " & Chr(34) & Form_F_TableSF.N°Client & Chr(34)
Set rstcha = cdb.OpenRecordset(strSQL)
2- Pouvez-vous me préciser, aussi, s'il y a une raison particulière de changer le nom de la zone texte "identifications" en "matricule" SVP ?
Merci
Il n'y a rien à débugger dans ma procédure qui fonctionne correctement.
Voir : https://forums.commentcamarche.net/forum/affich-16750113-excel-access-recuperation-de-champs?page=2#25