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 :

Créer un champ en fonction d'un fichier excel


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 21
    Points : 13
    Points
    13
    Par défaut Créer un champ en fonction d'un fichier excel
    Bonjour,

    j'essaye depuis quelques jour de transferer un fichier excel vers access et j'ai un souci.

    Donc voici mon process :
    Dans access, je clic sur un bouton qui m'ouvre un fichier excel. Ce fichier execute une macro en auto_open qui a pour conséquence de créer une colonne à la suite des autres. L'en-tête de cette nouvelle colonne contient le mois et l'année en cours (nov-04 par ex) et le contenu des cellules c'est des chiffres décimaux. A la fin de la macro, le fichier s'enregistre et excel se ferme.

    Avant le transfert vers access, j'efface le contenu de la table "histo_dpa" qui contiendra le fichier excel. Donc ma table est vide. J'en profite également pour créer, de la même manière que dans excel, un champ dans cette table qui aura pour titre le mois et l'année en cours (nov-04 par ex). Voici le code :

    Dim fldmois As Field
    Set fldmois = CurrentDb.TableDefs!histo_dpa.CreateField(Format(Month(Date) - 1 & " " & Year(Date), "[$-40C]mmm-yy;@"), dbText)
    CurrentDb.TableDefs("histo_dpa").Fields.Append fldmois


    Mais j'ai un message d'erreur qui apparait lors du transfert :
    Le champ 'F24' n'existe pas dans la table destination 'histo_dpa'

    alors que mes champs ont exactement le même nom.

    Merci de votre aide pour me tirer de là

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    A priori ton code crée un chap nommé nov-2004 et non F24.
    Ou, est ce que F24 est un autre champ de ta table qui existe bien?

    Tu peut aussi voir pour importer tes données dans une nouvelle table temporaire. Puis tu repaases le tout dans ta table principal et tu supprimes enfin ta table temporaire.

  3. #3
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Je trouve que tu te compliques la vie au niveau du formatage de tes dates. Un conseil, évite de prendre les format Excel car bien que cela donne le résulat attendu, tu n'es pas à l'abri de surprises avec le $. Et dieu sait si on a des problèmes avec le $
    Bref, là n'est pas la question, chez moi, ta proc fonctionne si on greffe un pti truc qui s'appelle DAO et des crochets car ton nom de champ est un peu hors norme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test4545()
      Dim fldmois As DAO.Field
      Dim fldNom As String
      On Error Goto Erreur
      fldNom = "[" & Format(Month(Date) - 1 & " " & Year(Date), "mmm-yy") & "]"
      Set fldmois = CurrentDb.TableDefs!histo_dpa.CreateField(fldNom, dbText, 10)
      CurrentDb.TableDefs("histo_dpa").Fields.Append fldmois
    Erreur:
        MsgBox "Ca a planté à cause de ça:" & Error, , Err
        Err.Clear
    End Sub
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Alors, j'ai recopié ton code et j'ai un nouveau message qui apparait :

    Le moteur de base de données ne peut trouver '[oct-04]'.Assurez vous que le nom de paramètre ou d'alias et valide, qu'il ne comprend pas de caractère ou de ponctuation incorrect et qu'il n'est pas trop long.

    De plus je te met le code qui me permet de transferer le fichier excel dans ma table peut-être y trouveras tu une erreur.

    DoCmd.TransferSpreadsheet acImport, 8, "histo_dpa", "G:\mon_chemin\mon_fichier.xls", True, ""

  5. #5
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bah, je suis navré mais chez moi ta procédure (qui est bonne) fonctionne à merveille...
    Mon fichier Excel:
    • ID Truc sept-04 oct-04
      1 Chose1 150 200
      2 Chose2 149 201
      3 Chose3 148 202
      4 Chose4 147 203
      5 Chose5 146 204
      6 Chose6 145 205
      7 Chose7 144 206
      8 Chose8 143 207

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test4546()
      DoCmd.TransferSpreadsheet acImport, 8, "histo_dpa", "Z:\_Test\mon_fichier.xls", True
    End Sub
    Attention, ton champ [mois] ne doit pas avoir de crochet dans la feuille Excel ! Les crochets sont une convention SQLiène pour les champs bizaroïdes comme [Date], [Description], [Nom de famille]...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Une question :

    Le format de ma cellule contenant "oct-04" est-il important ou non ? Là, lorsque je pose mon curseur sur "oct-04", la valeur de la cellule est "01/10/2004" !!

  7. #7
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Oui, c'est important... C'est normal qu'XL le considère comme une date, c'en est une.
    Si tu ne veux pas que ce soit une date, met une apostrophe (') devant le nom du champ.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Merci,

    ça marche c t bien un problème de format. Mais pour info lorsque mon fichier excel que je transfert est ouvert, j'ai egalement un bug.

    Ce n'est pas grave puisque je préfère qu'excel soit fermé mais si quelqu'un à une ré&ponse ça interesse toujours !!

  9. #9
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Tu as de nombreuses possibiltés de le savoir...
    Avec une API comme FindWindow:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FindWindow("XLMAIN", "Microsoft Excel - Classeur1")
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/10/2013, 16h31
  2. Créer un champ en fonction d'un autre d'une autre table
    Par nenette69 dans le forum Modélisation
    Réponses: 9
    Dernier message: 21/02/2013, 15h28
  3. Réponses: 2
    Dernier message: 21/02/2012, 05h17
  4. Réponses: 5
    Dernier message: 29/01/2011, 20h19
  5. Extraction des champs a partir d'un fichier excel
    Par adihoub dans le forum Pentaho
    Réponses: 2
    Dernier message: 20/02/2010, 15h35

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