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 :

créer une table par un module macro


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Par défaut créer une table par un module macro
    Bonjour,
    je veux importer un fichier txt pour créer une table (et l'inclure après ds une procédure automatique)

    mon fichier txt se présente ainsi:
    600809.544;128568.889;0;COA;0110;1 01
    600809.544;128568.889;0;COA;0110;MOA-COA


    mon module est écrit ainsi:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    Dim Fichier As String, ligne As String, mslink As String, B As String, C As String
    Dim X As String, Y As String, nom As String, pave As String, A As String, nvaleur As String
    Dim I As Double, J As Integer, K As Integer
     
     
    DoCmd.DeleteObject acTable, "pvpcoa"
    DoCmd.RunSQL "create table pvpcoa (mslink double constraint MyFieldconstraint Primary key,x double, y double, a double, nom varchar(255), pave varchar(255), nvaleur varchar(255));"
    DoCmd.OpenTable "pvpcoa", acNormal, acEdit
     
    Fichier = "C:\pvp1\encours\COA\pvptagcoa.txt"
    Open Fichier For Input As #1
    I = 0
     
    Do Until EOF(1)
    I = I + 1
    mslink = Str(I)
    Input #1, ligne
    B = LTrim(ligne)
    J = 0
    C = ""
     
    Do Until J = 128
    J = J + 1
    C = Mid(B, J, 1)
    If C = ";" Then
    X = Left(B, J - 1)
    X = LTrim(X)
    Exit Do
    Else
    End If
    Loop
     
    K = J
    Do Until K = 200
    K = K + 1
    C = Mid(B, K, 1)
    If C = ";" Then
    Y = Mid(B, J + 1, K - J - 1)
    Y = LTrim(Y)
    Exit Do
    Else
    End If
    Loop
     
    J = K
    Do Until J = 200
    J = J + 1
    C = Mid(B, J, 1)
    If C = ";" Then
    A = Mid(B, K + 1, J - K - 1)
    A = LTrim(A)
    Exit Do
    Else
    End If
    Loop
     
    K = J
    Do Until K = 200
    K = K + 1
    C = Mid(B, K, 1)
    If C = ";" Then
    nom = Mid(B, J + 1, K - J - 1)
    nom = LTrim(nom)
    Exit Do
    Else
    End If
    Loop
     
    J = K
    Do Until J = 200
    J = J + 1
    C = Mid(B, J, 1)
    If C = "" Then
    pave = Mid(B, K + 1, J - K)
    pave = LTrim(pave)
    Exit Do
    Else
    End If
    Loop
     
    K = J
    Do Until K = 200
    K = K + 1
    C = Mid(B, K, 1)
    If C = ";" Then
    nom = Mid(B, J + 1, K - J - 1)
    nom = LTrim(nvaleur)
    Exit Do
    Else
    End If
    Loop
     
    DoCmd.SetWarnings False
    DoCmd.RunSQL "INSERT INTO pvpcoa (mslink,x,y,a,nom,pave,nvaleur) VALUES ('" + mslink + "','" + X + "','" + Y + "','" + A + "','" + nom + "','" + pave + "','" + nvaleur + "');"
     
    Loop
    Close #1
    DoCmd.Save acTable, "pvpcoa"
    DoCmd.Close acTable, "pvpcoa"
    DoCmd.SetWarnings True
    DoCmd.Quit
     
    End Function
    mais voilà la table obtenue se présente ainsi:

    colonnes: mslink x y a nom pave ID
    mslink ok, x ok, yok, a ok, nom ok,
    mais pavé pas bon 0110;1 01 ou 0110;MOA-COA or je voudrais que 101 ou MOA-COA soit ds le champs ID car champs ID est vide

    je ne trouve pas l'erreur dans mon module

    merci pour votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut
    Bonjour
    Si le fichier texte utilise le séparateur ; comme séparateur de champ, il serait plus simple de faire un import direct, par macro ou par code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferText ....

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Par défaut
    j'ai déjà essayé mais je n'y suis pas arrivé
    et puis le but et de rendre cela automatique

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut
    Re
    Ok, mais plutôt que de lire caractère par caractère, la fonction InStr permet de retrouver une chaine dans une chaine. Donc pour chercher un ; c'est plus pratique

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Par défaut
    bon, je vais être honnête,
    je reprends un module déjà existant et comme je débute (vrai débutante) je ne connais pas toutes les commandes
    j'ai réussi à insérer de nouveaux champs et je suis têtue j'aimerai voir là où ça cloche

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut
    Re
    En regardant un peu je vois 2 erreurs, mais je ne peus pas tester.
    Il manque le ; dans la recherche de pave et nvaleur se transforme en nom.

    Proposition :
    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
    21
    22
    23
    J = K
    Do Until J = 200
    J = J + 1
    C = Mid(B, J, 1)
    If C = ";" Then
    pave = Mid(B, K + 1, J - K)
    pave = LTrim(pave)
    Exit Do
    Else
    End If
    Loop
     
    K = J
    Do Until K = 200
    K = K + 1
    C = Mid(B, K, 1)
    If C = ";" Then
    nvaleur= Mid(B, J + 1, K - J - 1)
    nvaleur= LTrim(nvaleur)
    Exit Do
    Else
    End If
    Loop

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Par défaut
    vu
    mais ça ne fonctionne tjrs pas
    x, y, a, nom ok
    pave-> 0110;
    ID est vide, je ne récupère tjrs pas le 1 01 ou le COA-MOA
    MERCI POUR TON AIDE fgiambelluco

Discussions similaires

  1. Créer une table par sélection des tables d'entrées
    Par Ouvrier11023 dans le forum Macro
    Réponses: 2
    Dernier message: 15/01/2014, 13h58
  2. Réponses: 13
    Dernier message: 30/06/2011, 17h33
  3. Réponses: 4
    Dernier message: 24/07/2009, 13h59
  4. Créer une table accessible par tous
    Par Wilgard dans le forum Administration
    Réponses: 2
    Dernier message: 19/06/2007, 10h45
  5. Modifier la structure d'une table par macro / vba
    Par zermatt dans le forum Access
    Réponses: 8
    Dernier message: 21/01/2007, 15h32

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