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

VBA Access Discussion :

Importer un fichier texte dans une table en VBA


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Points : 21
    Points
    21
    Par défaut Importer un fichier texte dans une table en VBA
    Bonjour à tous,

    J'aimerais importer un fichier texte contenant plusieurs informations.

    Dans ce fichier texte il y a plusieur colonne Nom, prénom ...


    Ceci sont les noms donnés pour chaque "Colonne" du fichier texte,

    J'aimerai importer tous celà dans une table existente.

    Sachant que dans mon fichier texte les données sont séparé par une tabulation.

    Comment puis-je procéder par exemple pour dire que j'aimerai importer la colonne "Nom" dans mon champ Nom. etc...

    Merci d'avance pour vos futures réponses.

    edit : Je dois absolument passer par du VBA pour la suite de mon application. L'importation avec "l'option intégrée" à Access est exclue.

    J'ai essayé avec cette ligne là

    DoCmd.TransferText acImportDelim, ".txt", "tblPersonne", strFichierText

    Mais j'ai du faire une bétise

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Dans un premier temps utilise la commande du menu pour faire l'import. Clique sur le bouton Avancé... et change le délimiteur de champ. Fais Enregistré sous... et donne un nom à ce format d'import.

    Dans ton code utilise la 2ème option et met le nom que tu lui as donné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferText acImportDelim, "specImport", "Table", "d:\fichier.txt"
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    Merci pour ta réponse rapide

    Le problème est que je dois choisir dans quel champ je veux importer, je vais donc changer de technique, essayer plutôt de detecter les tabulations, puis une fois une tabulation detecter j'insère la valeur dans un champ

    J'aimerai ouvrir un fichier texte en VBA Afin de pouvoir importer les données dans une table.

    Dans ce fichier j'aimerai pouvoir détecter les tabulations et à chaque fois qu'une tabulation est trouvée, je copie la valeur dans un champ.

    Par exemple Dans mon fichier texte

    Jean "TAB" Dubois "TAB" Paris

    j aimerais ensuite copier ces valeurs dans ma table, Jean Dans le champ prénom, Dubois dans le champ Nom puis Paris dans le champ Ville ...

    Je devrais faire ça pour chaque ligne ( 1 ligne par enregistrement)

    Je suppose que c'est une sorte de boucle à faire

    Ma boucle (Des qu'il y a une tabulation)
    Je met le texte trouvé dans une table
    Jusqu'à ce qu'il n'y est plus de ligne dans le fichier ...

    Enfin J'ai du mal à percuter comment faire si quelqu'un pouvait m'apporter de sa lumière

    merci d'avance

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    De mémoire les spec d'import remplissent exactement ce cas. Maintenant tu peux effectivement vouloir réinventer la roue (bien que je ne vois pas pourquoi... serait-ce un TP ?)

    Tu as fais le plus dur... l'analyse fonctionnelle.

    Ouverture de fichier : Open
    Boucle : Do... while
    Traitement des enregistrements : Recordset

    Dans les tutos ACCESS voir :
    Les 5 syntaxes de base du langage VBA par Maxence Hubiche
    Manipulation des fichiers en VBA par Christophe Warin
    Création et manipulation des données avec DAO par Christophe Warin
    ou
    Accès aux données : ADO

    Voici de quoi lire pour arriver au but.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Inutile de refaire le monde !

    Comme te l'a conseillé si judicieusement loufab : utilise une première fois l'assistant d'importation de données externes.

    Renseignes toutes les étapes comme il t'es nécessaire.
    Et juste avant de terminer ton import, clique sur le bouton Avancé... puis sur Enregistrer Sous...

    Tu pourras ensuite utiliser la syntaxe que t'a donné loufab.

    Tout ceci à condition, bien sûr, que ton fichier ait toujours la même structure !

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    Merci pour vos réponses les gars

    @Loufab oui c'est pour un TP

    Enfaite je m'explique je dois migrer une base de données pour une usine, ils travaillaient sur Excel, je dois leur mettre le tout sous Access, le MCD M'étais fournit pour mon TP, désormais j'ai finit mon MLD puis mon MPD qui je pense sont parfaitement correct.

    J'ai une table qui contient un certains nombres de champs, et dans mon fichier texte je retrouve ces champs, seul souci, c'est que dans le fichier texte il y'aura une "colonne" qui ne sera pas importé dans ma base, donc à chaque fois que j'arriverai à cette "colonne" je devrais passer à la suivante sans l'importer ... m'enfin quand j'arriverai là ça sera bon signe.

    Ce qui m'inquiète c'est pour la syntaxe de ma boucle ... le VBA je connais un peu mais pas plus que ça enfaite.

    Donc faire mon loop,
    Ensuite detecter les tab, je récupère une information, je la stock dans une variable, je récupère la seconde, dans une var ... comme ça pour les "8 colonnes" de mon fichier texte, ensuite une fois que c'est dans mes 8 variable, je fais un INSERT dans ma table à l'aide de ces variable, et une fois que l'INSERT est fait, je vais à la ligne suivante de mon fichier texte et je recommence l'opération ... Vous pensez que c'est faisable comme ça ??

    Enfaite ce fichier texte sera importé une fois par mois, et si il y a des nouveau employé dans le fichier, je cocherai dans ma table employé "Nouveau", et si un employé n'est plus dans le fichier texte, je devrais aussi faire quelques chose pour le detecter ... car dans ma base de donnée je garderai quand même le nom de l'employé, mais je décocherai la case "Actif" car les employés qui ont quitté l'usine ne sont pas supprimé mais seront marqué comme inactif. Je ne sais pas si vous comprenez la tartine que je viens de vous étaler j'ai fait ça à ma sauce quoi

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Si c'est pour un champ que ça te gène c'est que tu n'as même pas essayer la solution... tu aurais vu que c'est possible.

    Qui dit migration dit fonctionnalité jetable, donc inutile d'y investir du temps.

    visiblement on apprend pas tout dans les cours d'info... haa ces djeun's
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    Disons que le VBA c'est pas ce qu'on a essentiellement apprit :p

    Enfin ça réponds pas à ma façon de faire ... si c'est bien ça ou pas

    edit : J'ai rien dit je fonce me mettre au travail en relisant les posts plus haut j'ai trouvé encore des réponses Merci

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    L'analyse est bonne.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/02/2014, 01h30
  2. [VB6]Importer un fichier texte dans une table ACCESS
    Par jean-pierre96 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/02/2013, 15h55
  3. Réponses: 4
    Dernier message: 09/01/2008, 16h20
  4. Importer un fichier texte dans une table avec champ Memo
    Par Steph4fun dans le forum Paradox
    Réponses: 12
    Dernier message: 25/11/2007, 23h10
  5. Comment importer un fichier text dans une table
    Par mongilotti dans le forum SQL
    Réponses: 6
    Dernier message: 21/05/2007, 13h05

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