IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Transfert de données Access/Excel


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Transfert de données Access/Excel
    Bonjours,

    Je travaille sur une base de donnees et on m'a interdit l'utilisation de visual basic. Il m'est pourtant necessaire d'utiliser des conditions if.. then... else... Je n'ai pas trouve de moyen sans visual basic pour le faire donc j'ai pense a importer puis exporter mon tableau dans excel. Le problem est que le tableau excel ne se met pas a jour dans ses calculs du moment qu'il n'est pas ouvert, je me retrouve donc avec des valeurs nulles dans toute mes donnees importees.

    Auriez vous une solution( autre moyen que excel ou metre a jour le tableau)

    Merci

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    as-tu lu le tuto suivant ?

    http://cafeine.developpez.com/access/tutoriel/excel

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Desole j'avais cherche dans la FAQ mais pas dans les tutos
    Merci beaucoup

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Desole mais ce ne m'est en fait pas tres utile vus que je n'ai pas droit a VBA:
    "J'écarte d'office les macros qui sont à mon avis à proscrire dans un développement d'une application Access, pour des raisons qui ont déjà été maintes fois abordées sur le forum."
    Auriez vous une solution n'utilisant pas VBA?

  5. #5
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Heu ... tu as dû lire beaucoup trop vite ...

    http://cafeine.developpez.com/access...iel/excel/#LVI

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Je veux bien essayer avec une query depuis excel mais j'aimerais ne pas avoir a demander l'import de data a chaque fois, en fait, j'aimerais bien ne pas avoir du tout a ouvrir excel ou du moins que l'on ne se rende pas comte de son ouverture lors de l'utilisation de la database...
    la solution serait de faire un macro qui ouvre le fichier excel, importe la data et ferme le fichier excle mais si on peut faire sa, ma methode marche aussi bien puisque ouvrir puis fermer le fichier excel suffit pour le faire se mettre a jour.

    Merci de votre aide

  7. #7
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Si tu n'as droit ni aux macros, ni au VBA, ni à msQuery ... on se demande bien pourquoi ...

    Essaie de travailler sur une table liée à un fichier Excel ... mais je pense que tu auras des petits soucis ... à tester.

    Le plus simple reste quand même une simple ligne de code ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet ...

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    j'ai le droit au macro! c'est la seule chose que je peux utiliser. Quand je transfert mon tableau c'est avec une fonction TransferSpreadsheet. mon probleme est la mise a jour des resultats excel entre l'import et l'export.

  9. #9
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    DoCmd.TransferSpreadsheet = TransférerFeuilleCalcul

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Je sais bien, mon problem est que j'importe des donnees sur excel sur une feuillle. Sur cette feuille sont deja presente des cellules qui donnent des resultats differents en fonction des donnees qui ont ete importee. J'aimerai ensuite exporter ces cellules avec leurs resultats sur access mais le probleme est que le resultat reste celui present avant l'import car du moment que l'on a pas ouvert sa feuille de calcul excel manuellement, les calculs ne s'executent pas.
    (desole je me rend compte maintenant que je n'etais peut etre pas tres comprehensible)
    Merci

  11. #11
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    c'est totalement incompréhensible pour moi ...

  12. #12
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Desole desole je viens de me relire et c'est vrais qu'on ne peut pas vraiment comprendre.
    J'explique:
    J'ai un tableau contenant des informations. J'aimerais que ces information soient utilisees dans une boucle IF THEN ELSE

    exemple: j'ai des valeurs de 1 a 3 dans une colonne pour chaqun de mes records et je veux que dans la colonne suivante soit marque 1 si la valeur est de 3 et 0 si la valeur est de 1 ou 2.

    Access ne permet pas de faire ce genre d'operation a part avec l'utilisation de visual basic, chose auquel je n'ai pas le droit. Excel permettant de le faire, je decide d'essayer de lier mon tableau a un tableau excel.
    Pour ce faire, je cree un macro comportant deux comandes: deux TransferSpreadsheet, le premier de type export(les donnees que je veux mettre dans ma condition pour la boucle IF), et le deuxieme de type import qui importe une partie differente du meme tableau dans laquelle se trouve le resultat de ma boucle if.

    Mon talbeau excel avant l'import se presente comme ceci:

    | | =IF(A1=3,1,0) |
    | | =IF(A2=3,1,0) |
    | | =IF(A3=3,1,0) |
    | | =IF(A4=3,1,0) |
    | | =IF(A5=3,1,0) |
    | | =IF(A6=3,1,0) |
    | | =IF(A7=3,1,0) |

    (a le place de mes boucles if on voit 0, c'est juste pour etre explicite que je les ai marquees.)



    Apres l'import:
    | 1 | 0 |
    | 2 | 0 |
    | 1 | 0 |
    | 3 | 1 |
    | 3 | 1 |
    | 2 | 0 |
    | 3 | 1 |
    Le travail de mon macro est donc d'envoyer la premiere colonne avec le premier TransferSpreadsheet qui est de type export, puis de recuperer les resultats dans la deuxieme colone avec le deuxieme TransferSpreadsheet de type import.

    Tous marche tres bien(pas de message d'erreur) mais lorsque j'importe la deuxieme colonne, alors que je devrais avoir des 1 et des 0, toutes mes valeurs sont nulles. Je me suis rendu compte que si entre les deux TransferSpreadsheet j'ouvrais manuellement mon tableau excel( ou les bons resultats etaient affiches) mon deuxieme TransferSpreadsheet marchait tres bien et j'obtenais les bonnes valeurs dans mon tableau access. J'en ai donc deduit que le probleme venait de excel qui ne modifie ses resultats ( la deuxieme colone) que si l'on ouvre le tableau. Y aurait il donc un moyen pour ne pas avoir besoin d'ouvrir manuellement son tableau excel entre les deux TransferSpreadsheet (exemple: un macro qui l'ouvre et le ferme automatiquement)

    Merci beaucoup

  13. #13
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Pourquoi ne pas passer par une requête plutôt que par un laborieux Excel ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MonChamp, Iif(MonChamp = 3, 1, 0) As Test
    FROM MaTable

  14. #14
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Parceque les calculs sont plus conplique que if(MonChamp = 3, 1, 0)...
    mais maintenant que tu m'y fait penser peut etre qu'il existe une commende access specifique qui permet de faire sa.
    J'ai une liste de personne dans un club dans un tableau et j'aimerai avoir un autre tableau avec une liste des personne de ce club (donc qui sont toutes dans le premier tableau) participant a un evenement.
    Dans chacqun des tableaux se trouve trois colone: ID, Name, Surname.
    Mon but est de pourvoir entrer dans le second tableau le Name et Surname uniquement et que le systeme remplisse l'ID automatiquement a l'aide du premier tableau.
    Y a-t-il une commande access pour faire ca? (audel cas je suis vraiment desole d'avoir tellement insiste sur le transfert excel)

  15. #15
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Oui ça s'appelle une jointure entre deux tables ... c'est même à ça que sert Access ...

    Pour bien comprendre l'intérêt d'Access, lis ce tuto jusqu'au bout (ça te donnera des idées)
    http://mhubiche.developpez.com/Access/tutoJointures/

  16. #16
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut JackyJoke,

    En lisant les posts défiler dans cette discussion, j'ai l'impression de lire un "joke"! Une sorte de ping-pong dont la finalité est incertaine.
    On se retrouve dans un brouillard immense que l'on se pose la question si on pourra s'en sortir.
    Bref, résumons un peu la situation: tu veux mettre à jour un champ de ta table mais tu n'as pas le droit d'utiliser VBA? La solution que tu as trouvée est de transférer vers Excel les données, les traiter là bas et les importer (une fois traitées) dans ta table?
    C'est bien cela?
    As-tu le droit d'utiliser les requêtes Action comme la requête de mise à jour?
    Si oui, c'est la solution à ton problème. Voici comment?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       UPDATE NomDeLaTable SET NomDeLaTable.ChampX = IIf(NomDeLaTable.ChampY = 3, 1, 0);
    Ce n'est pas VBA, c'est du SQL et si l'on t'interdit de l'utiliser ... je suis sans mot!
    Comme tu as le droit d'utiliser les macros, appelle cette requête action dans une macro et le tour est joué ou bien exécute la directement depuis la fenêtre de la base de données.

    Je te souhaite bon courage et @+

  17. #17
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Re,

    Résumons: tu as deux tables Table1 et Table2 contenant chacune trois champ ID, Name et Surname. Dans la seconde table, le champ ID n'est pas rempli.
    Solution: utilisation de la requête Action de mise à jour avec utilsation de la jointure comme Cafeine l'a dit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       UPDATE Table2 INNER JOIN Table1 ON Table2.Name=Table1.Name AND Table2.Surname=Table1.Surname SET Table2.ID=Table1.ID;
    Table2 est la table contenant le champ à mettre à jour
    Nous allons lier la table Table1 avec la table Table2 au niveau des champs Name et Surname qui devraient êtrs identiques
    La mise à jour porte sur le champ ID de la table Table2
    La valeur de la mise à jour est la valeur du champ ID de la table Table1

    Tu peux aussi créer cette requête d'une manière visuelle, en choisissez Nouveau dans l'onglet Requête. Tu ajoutes tes tables (les deux) et tu les as dans la liste des champs.
    Tu fais glisser le champ Name d'une table vers l'autre champ Name de l'autre table. Tu fais pareil avec Surname.
    Tu ajoutes (double clic) le champ ID de la table à remplir.
    Dans le menu requête, choisis Requête de mise à jour
    Dans la ligne mise à jour de la grille d'interrogation de ta requête, mets PremièreTable.[ID]

    Si tu passes en mode d'affichage SQL, tu verras à peu près la même écriture que ce que je te propose dans le tag CODE.

    Bon courage et @+

  18. #18
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Merci enormementsa a l'air de tres bien marcher!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Transfert de données 'une base Access vers Excel
    Par sidisadmir dans le forum ADO.NET
    Réponses: 0
    Dernier message: 06/11/2013, 05h13
  2. Transfert de données VB.NET vers EXCEL
    Par ApprentiDeveloppeur dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/12/2010, 19h03
  3. Transfert de données de WinCC vers Excel
    Par Emanon dans le forum Automation
    Réponses: 1
    Dernier message: 12/01/2010, 15h54
  4. Macro transfert de données d'une feuille Excel à une autre
    Par marion2 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/11/2009, 14h20
  5. Réponses: 1
    Dernier message: 29/06/2009, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo