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 :

Lecture d'un fichier texte et ajout dans une table [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut Lecture d'un fichier texte et ajout dans une table
    Bonjour,

    Je vous joins le code qui me permettait de lire et écrire un fichier texte,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    '--- Ouverture de la tbl 
         Set rs1 = db.OpenRecordset("tbl Adhérents MDP")
    '--- Effectue la boucle jusqu'à la fin du fichier.
         While Not EOF(iInt_Fichier)
            Line Input #iInt_Fichier, Ligne
           If Left(Ligne, 11) = "Identifiant" Then 
               iStr_Identifiant = Right(Ligne, 10)
           ElseIf Left(Ligne, 12) = "Mot de passe" Then
               iStr_MotDePass = Right(Ligne, 8)
          With rs1
            'Ajoute les enregistrements
            .AddNew
              ![Identifiant] = Trim(iStr_Identifiant)
              ![MotDePass] = Trim(iStr_MotDePass)
            .Update
          End With
          End If
        Wend
    mais aujourd’hui dans ce fichier et que pour certains enregistrements deux lignes ont été rajoutées :

    ANIMATEUR

    SPORTIF

    Ces deux lignes se trouvent après « mot de passe : 123456 »

    Ce lien montre une photo du fichier en question.
    http://www.developpez.net/forums/d15...fichier-texte/

    Mon problème est que je n’arrive pas à trouver une condition sur ANIMATEUR ET SPORTIF
    pour les ajouter dans ma table.

    Merci pour votre aide.

    Salutations

  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,

    Je ne comprend pas bien ton problème !

    Ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(Ligne, 11) = "Identifiant" Then
    Tu arrives bien à tester ce que renvoi la ligne courante ! Pourquoi tu ne peux pas le faire avec les 2 nouvelles string ?

    En utilisant Instr() par exemple.

    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 habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut
    Bonjour loufab,

    Merci pour ta réponse.

    J’ai rajouté ces deux conditions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ElseIf Left(Ligne, 9)  = "ANIMATEUR" Then
       iStr_Titre1 = Left(Ligne, 9)            
    ElseIf Left(Ligne, 7)  = "SPORTIF" Then
       iStr_Titre2 = Left(Ligne, 7)
    et dans .AddNew ces deux champs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ![titre1] = Trim(iStr_Titre1)
    ![Titre2] = Trim(iStr_Titre2)
    Mais je n’obtiens dans la table que les enregistrements avec « ANIMATEUR » ET « SPORTIF »,
    et pas les autres.

    Où se trouve mon erreur ?

    Salutations

  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
    Tu souhaites les ajouter dans un nouvel enregistrement ou bien dans le même ?

    La structure de la table qui reçoit avec un petit schéma serait le bienvenue pour bien comprendre ce que tu attends exactement de ton code.
    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 habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut
    Bonsoir loufab,

    Je joins sous format jpg une image du fichier texte, et de la table qui reçoit les
    informations.

    Ces informations son enregistré manuellement dans la table à titre d'exemple.


    Salutations
    Images attachées Images attachées  

  6. #6
    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,

    Donc pas de addnew pour ces 2 nouvelles infos.

    Voici comment on peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
         While Not EOF(iInt_Fichier)
            Line Input #iInt_Fichier, Ligne
            If Left(Ligne, 11) = "Identifiant" Then  'on démarre forcément un nouvel enregistrement
               rs1.addnew
               rs1.fields("[Identifiant]").value = Trim(Right(Ligne, 10))
               rs1.update
            ElseIf Left(Ligne, 12) = "Mot de passe" Then
               rs1.edit
               rs1.fields("[MotDePass]").value  = Trim(Right(Ligne, 8))
               rs1.update
            ElseIf instr(1,Ligne, "SPORTIF")>0 Then
               rs1.edit
               rs1.fields("[champ1]").value  = Right(Ligne, len("SPORTIF"))
               rs1.update
            ElseIf instr(1,Ligne, "ANIMATEUR")>0 Then
               rs1.edit
               rs1.fields("[champ2]").value  = Right(Ligne, len("ANIMATEUR"))
               rs1.update
            Endif
      Wend
    évidemment chacun trouvera une méthode personnelle.

    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

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut
    Bonjour loufab,

    J’ai essayé le code mais j’ai une « Erreur 3021 Aucun enregistrement en cours »
    sur la ligne rs1.Edit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ElseIf Left(Ligne, 12) = "Mot de passe" Then
               rs1.Edit
               rs1.Fields("[MotDePass]").Value = Trim(Right(Ligne, 8))
               rs1.Update
    Pourtant la table n’est pas vide puisque l’identifiant s’est bien créé dans la table grâce à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Left(Ligne, 11) = "Identifiant" Then  
               rs1.AddNew
               rs1.Fields("[Identifiant]").Value = Trim(Right(Ligne, 10))
               rs1.Update
    Pour quelles raisons la mise à jour ne peut se faire ?

    Salutations

  8. #8
    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
    Il faut repositionner le curseur avec un rs1.movelast. A vérifier !

    Sinon utiliser un FindFirst. Regarde dans le tuto DAO pour l'utilisation.

    Dans tous les cas tu es proche du but.
    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

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut
    Bonjour loufab,

    Merci, c'est bien un rs1.movelast qui manquait.

    Salutations

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/04/2011, 10h52
  2. Lecture d'un fichier texte et affichage dans flash
    Par TaleMaker dans le forum Flash
    Réponses: 2
    Dernier message: 29/04/2010, 12h18
  3. [AC-2007] Lecture d'un fichier texte et import dans Access
    Par Huma7 dans le forum VBA Access
    Réponses: 7
    Dernier message: 15/05/2009, 17h04
  4. Réponses: 0
    Dernier message: 20/10/2008, 12h59
  5. Lire un fichier text et écrire dans une table oracle
    Par naima2005 dans le forum VB.NET
    Réponses: 6
    Dernier message: 28/12/2007, 11h35

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