Excel-Access récupération de champs

Résolu/Fermé
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 - 24 févr. 2010 à 15:20
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 - 9 mars 2010 à 18:01
Bonjour,

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 ?
A voir également:

64 réponses

Bonjour,

J'ai un peu de mal à voir l'intérêt d'utiliser à la fois access et excel pour cet objectif mais soit...
Je créerai une requête qui me donnerait les données à mettre dans la feuille EXCEL.
Dans un formulaire ACCESS j'ajouterai un bouton qui exporte ma requête vers EXCEL.

Pour faire l'inverse : Il faut utiliser (je penses) un peu de VBA excel + Regardez du côté des "query" dans le menu données excel.

courdinfo.fr
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
24 févr. 2010 à 15:41
Bonjour,
J'ai fais mes questionnaires sur excel parce que c'était plus simple pour moi et j'avais déjà fais une base access que j'ai réutilisé pour l'occasion car j'ai plusieurs questionnaires. En plus, ça fait plus propre sur access la présentation, d'autant que je ne sais pas comment en faire une sur excel. Voila la raison!

Pour mon pb, les données à récupérer sont toujours les mêmes "nom, prénom, adresse..."
Je n'ai donc pas besoin de requete. et en plus c'est pas automatique.

Existe -il un moyen pour que ça le soit ? même en vba.

merci
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
25 févr. 2010 à 11:34
Bonjour,
Une solution, depuis Excel sur Données Externe et choisir A partir d'un fichier Access
Dans Assistant connexion de données choisir DSN ODBC
Dans Connextion à une source..... choisir MS Access Database
Suivre instructions ...
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
25 févr. 2010 à 13:35
Bonjour Le Pingou,

Merci pour votre proposition, mais le résultat est le même que celle de coursdinfo.

En effet, la liaison me transfert tous les clients de la table. Or, j'aimerai recevoir uniquement les coordonnées du client qui à rempli ce questionnaire. Celui qui est en cours d'affichage dans la base Access lorsque j'appelle le questionnaire.

J'ai regardé grâce à un lien vers "developper.com" laissé par quelqu'un, et il semble que cela est possible avec ADO. Savez-vous comment ca marche par hasard ? et si c'est vraiment ce qui me convient?

Merci
0

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

Posez votre question
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
25 févr. 2010 à 14:24
Bonjour,
Non c'est dans l'autre sens, c'est depuis Excel que je vai chercher les données.
Il serait bien de savoir dans quel sens vous voulez travailler... d’Access vers Excel ou le contraire ?

Ma proposition vous permet d'avoir une liaison entre Excel et Access et il vous suffit sur Excel de reprendre les données de votre choix.

Ou au lieu de prendre la table, vous pouvez créer une requête qui rassemble que les éléments dont vous avez besoins sur Excel et ainsi vous faite la liaison avec cette dernière.
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
25 févr. 2010 à 14:52
Le Pingou,

Je ne pense pas que le sens est une importance pourvu que je récupère seulement 1 client et pas toute la table de clients. Car, si j'ai 200 clients, je vais vite être saturé sur ma feuille. Et en plus, cela ne m'oblige à rechercher le client dans la table appelée ou transférée. A moins que je me trompe..

L'idée de la requête est intéressante mais je ne sais pas comment faire pour obtenir les infos de l'affichage courant de mes formulaires, sans avoir à demander nom, prénom ou N° de fichier (car c'est trop contraignant).

Avez-vous une amorce de cela SVP ?
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
25 févr. 2010 à 15:22
Bonjour,
Le sens à une importance primordiale si vous voulez que vos données soit identiquent dans les 2 applications.
Vos 200 clients ne vont jamais saturé une feuille Excel et de plus il vous suffit de paramètrer correctement les critères d'en la requête et vous aurez les bonnes valeurs dès l'ouverture d'Excel.

Pour moi en Access, les données sont dans une table et le formulaire ne sert qu'a manipuler les données de cette table ou de plusieurs tables via une requête.

Question : sur Access qu'elles sont les éléments qui vous indiques que des données et lesquelles doivent être à disposition d'Excel ?
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
25 févr. 2010 à 17:07
Bonjour,
Si vous désirez faire directement depuis Access au coup par coups, vous pouvez utiliser la partie du code suivant à mettre dans une procédure événementielle d’un formulaire:
Dim appXl As Excel.Application
Dim rst As DAO.Recordset
strDirFile = "c:\LeChemin\MonClasseur.xls"
Set appXl = CreateObject("Excel.Application")
Set rst = CurrentDb.OpenRecordset("Select * From ReqCorrespondancesD Where 
RefMonChamp1 = " & Me.Ref MonChamp1)
'rst.MoveFirst
With appXl
   .Workbooks.Open strDirFile
   .Visible = True
   .Range("F3").Select = rst.Fields("MonChamp1") 
   .Range("F4").Select = rst.Fields("NRef")
End With
Set appXl = Nothing
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
25 févr. 2010 à 17:51
Me revoilà,

Pour répondre à la question du post 8: sur Access qu'elles sont les éléments qui vous indiques que des données et lesquelles doivent être à disposition d'Excel ?

En fait, dans Access j'ai mon formulaire ouvert sur un client. Et à chaque fois que j'ai besoin de remplir un questionnaire, via un dble clic sur une liaison OLE vers mon questionnaire Excel, je voudrais disposer des coordonnées du client en cours d'affichage dans mon formulaire Access, et ce, dans une feuille du questionnaire Excel.
Ces données sont toujours les coordonnées du client qui sont dans une table et son N°table dans une autre table.

A part ça, je ne sais pas quel sens il faut employer...

Je vais essayer votre code du post 9.
Je dois la nommer et l'affecter à un bouton d'un formulaire c'est ça ?

Merci !
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
25 févr. 2010 à 21:21
Bonjour,
Est-ce que j'ai bien compris; il s'agit des coordonnées du client donc il vous suffirait d'avoir une marque dans la table (expl. oui/non) pour repérer le client qui doit être dans Excel.
Vous créer une requête sur cette marque. Dans Excel vous avez importation de données externe sur cette requête et vous avez uniquement les clients désirés qu'il vous suffit d'intégrer dans le formulaire adéquat. C'est le plus simple.
La procédure proposée fonctionne aussi mais n'est pas simple à mettre en place et encore moins évident s'il faut corriger des données erronées.

En marge : que comprendre par ; clic sur une liaison OLE
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
26 févr. 2010 à 09:13
Bonjour Le Pingou,

Merci pour cette dernière proposition. Je n'ai pas encore eu le temps de tester la précédente, mais cette dernière est bien aussi mais je devrais faire la manip d'importation de données externe, alors que je voulais que ça se fasse tout seul. Mais c'est pas grave, si ça marche c'est déjà ça!

L'avantage de la 2e proposition est que j'ai déjà dans mon sous-formulaire access des cases à cocher booléens qui déterminent quel questionnaire je vais appeler. Donc, il suffit que je mette un bouton de commande qui m'ouvre mon fichier questionnaire sous Excel avec les coordonnées du client dont la case à cocher a été validée.

Petite question: est-il possible que je réunisse sous le même fichier les questionnaires sélectionnés ?
il y en a 3 (entrée, plat, dessert) mais si le client ne prend que "entrée" et "plat", par exemple, est-il possible d'ouvrir Excel avec seulement 2 feuilles. Une avec le questionnaire "entrée" l'autre avec le questionnaire "plat"?
En même temps ma question est bizarre car où seraient alors placés ces questionnaires avant ??


En marge : que comprendre par ; clic sur une liaison OLE : je voulais dire que j'ai créé une liaison OLE dans un cadre dépendant. Donc en cliquant dans le cadre cela m'ouvre Excel.

ps: jevais certainement mettre plus de temps à vous relire car j'ai un autre soucis,
A+ et Merci encore!
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
26 févr. 2010 à 10:52
Bonjour,
Avec les 2 fichiers dans un ZIP et mis sur http://cijoint.fr/ je pourrais certainement mien vous répondre.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
26 févr. 2010 à 13:27
bonjour

Excusez l'incruste

A partir du nom dans Xl recherche de données concernant ce nom dans Table Access
A adapter (démo très basique...)
https://www.cjoint.com/?cAnAMiqtWC
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
26 févr. 2010 à 15:27
Bonjour michel_m,
Personnellement c’est une incruste que j’apprécie.
Merci infiniment pour cette solution qui est superbe.
A une prochaine.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
26 févr. 2010 à 17:06
Merci, Jean-pierre

Bon WE
Cordialement,
Michel
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
2 mars 2010 à 23:59
Bonjour mod77,
Voici un exemple en complément de celui de michel_m : https://www.cjoint.com/?dcx6yRxtER
Ouvrir le fichier Access et bien suivre l’instruction !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
3 mars 2010 à 08:51
Bonjour,

J'ai très nettement l'impression que Mod77 a pressé les citrons, donc les jette maintenant bien sûr sans dire merci....

j'ai téléchargé ton zip, je regarderai + tard (réiinstallation progressive de mon ordi suite à une destruction par la foudre: écran, adsl, imprimante HS)

cordialement,
Michel
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
3 mars 2010 à 17:54
Bonjour,

Que néni! Ce n'est pas mon genre. Seulement mon petit problème est de venu grand et je viens enfin de trouver le temps de vous remercier tout de même!

Je n'arrive cependant pas à comprendre la troisième ligne : client=range("client")
Je sais, ça parait stupide, mais n'empêche que c'est là que s'arrête la compilation de mon adaptation.
Dans ma table "T_Client" j'ai en clé N°Client, puis: Nom, Tel et Adresse et ma recherche je la préfère avec N°Client, mais j'essayais déjà avec le nom et ça bug, là ******? Pourquoi ?
Seriez-vous me l'expliquer SVP?

Sub importer_access()
Dim Source As Object, Requete As Object
Dim client As String, chemin As String
client = Range("client") ************?
chemin = ActiveWorkbook.Path

' ouvre la base de données Access (microsoft jet)
Set Source = CreateObject("ADODB.Connection")
Source.Provider = "Microsoft.Jet.OLEDB.4.0;"
Source.Open chemin & "\BD_Resto.mdb"

'exerce la requete ADO sur la donnée à recopier
Texte_SQL = "SELECT lieu, groupe FROM T_Client WHERE nom= '" & client & "';"
Set Requete = CreateObject("ADODB.Recordset")
Set Requete = Source.Execute("SELECT Tel, Adresse FROM T_Client WHERE nom = '" & client & "';")

Et puis, y a t-il possibilité d'afficher les données sur une ligne différente plutôt que colonne différente SVP ?

Merci de votre aide!

Je vais voir la proposition de Le Pingou que je remercie tout autant!
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
3 mars 2010 à 18:26
Bonjour Le Pingou,

Merci pour votre proposition qui répond en partie aux questions que je posais, en retour à michel_m, et d'après les commentaires que j'ai pu distingués.
Mais voilà, il en fallait un aussi, une erreur de compilation apparait le chemin vers excel n'est pas trouvé alors que la base de donnée et le fichier excel sont dans le même répertoire!?
Le message est "projet ou bibliothèque introuvable" et s'arrête sur la ligne : => " Sub EngVersExcel() "
et : "repclasseur = " est surligné en bleu.

Je ne comprends pas...pourquoi? J'ai bien ouvert le fichier excel "GestionPerso"avant de cliquer sur le bouton du formulaire pourtant?

Si vous pouvez m'éclairer encore SVP, Merci.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
3 mars 2010 à 18:36
range("client") correspond à la cellule A2 nommée "client"
dans tous les casla pièce jointe doit être téléchargée et non ouverte directement
Ca a marché pour jean-pierre, donc...
0