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 :

Importer les données d'un fichier Excel (.xls) dans une table Access


Sujet :

Access

  1. #81
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Points : 86
    Points
    86
    Par défaut
    slt Totofe!
    j'ai une autre question à te poser concernant l'importation peut etre connais tu la reponse....
    ESt ce possible de recupérer le nom du fichier que l'on importe dans une requete SQL?

    Explications :

    Par exemple dans la requete SQL que tu a donné:

    docmd.runsql "CREATE TABLE ici se mettrai automatiquement le nom du fichier que l'on importe(Nom_de_colonne1 Type_de_donnée, Nom....)

    cSQL = "insert into [ici se mettrai automatiquement le nom du fichier que l'on importe] ( [ConfID],[HostEmail],[Duration],[Attendees] ) values ("..." )"

    Est ce possible?
      0  0

  2. #82
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    effectivement tu peut récupérer le nom avec
      0  0

  3. #83
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Points : 86
    Points
    86
    Par défaut
    ok mais cela ne fonctionne pas j'ai un message d'erreur a ce niveau :

    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
    DoCmd.RunSQL "CREATE TABLE owkb.name (ConfID String, HostEmail String, Duration Integer, Attendees Integer);"
    
    'tant que la cellule n'est pas vide
    While oWSht.Range("A" & i).Value <> ""
    
    If DCount("*", "[owkb.name]", "[HostEmail] LIKE '" & oWSht.Cells(i, 7) & "*'") = 0 Then
    
    cSQL = "insert into owkb.name ( [ConfID],[HostEmail],[Duration],[Attendees] ) values (" & Chr(34) & oWSht.Cells(i, 1) & Chr(34) & "," & Chr(34) & oWSht.Cells(i, 7) & Chr(34) & "," & Chr(34) & oWSht.Cells(i, 18) & Chr(34) & "," & Chr(34) & oWSht.Cells(i, 19) & Chr(34) & " )"
    
    'exécute la requète
    DoCmd.RunSQL cSQL
    
    End If
    
    i = i + 1
    Wend
    
    DoCmd.SetWarnings True
    
    
    End Sub
    Ne faut-il pas renommer quelque chose en "owkb"?
      0  0

  4. #84
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    Citation Envoyé par mike2302
    ok mais cela ne fonctionne pas j'ai un message d'erreur a ce niveau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "CREATE TABLE owkb.name (ConfID String, HostEmail String, Duration Integer, Attendees Integer);"
    LOL
    normal ta syntaxe n'est pas bonne. owkb.name est une méthode de vba il ne faut donc pas la mettre dans les guillemets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "CREATE TABLE " & owkb.name & " (ConfID String, HostEmail String, Duration Integer, Attendees Integer);"
    et pareil pour le INSERT INTO
      0  0

  5. #85
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Points : 86
    Points
    86
    Par défaut
    re totofe,

    toujours le meme problème à la même ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "CREATE TABLE " & oWkb.Name & " (ConfID String, HostEmail String, Duration Integer, Attendees Integer);"
    et pour le insert into j'ai fais de même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cSQL = "insert into " & oWkb.Name & " ( [ConfID],[HostEmail],[Duration],[Attendees] ) values (" & Chr(34) & oWSht.Cells(i, 1)....
    je joint un copier coller de mon ecran si tu veux y jeter un coup d'oeil...

    tu peux m'aider s'il te plait?
      0  0

  6. #86
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    taleur j'ai même pas vu cette erreur!! les type de donné sous SQL et VBA ne sont pas les même par exemple pour un string en VBA on aura varchar(nb_caractère_maxi). regarde dans la doc SQL si tu veut en savoir plus.
    on obtient donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.RunSQL "CREATE TABLE " & oWkb.Name & " (ConfID varchar(50), HostEmail varchar(50), Duration INTEGER, Attendees INTEGER);"
      0  0

  7. #87
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Points : 86
    Points
    86
    Par défaut
    ok jessaye merci totofe
      0  0

  8. #88
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    oki aprés je sait pas si c'est les types de variables que tu souhaite
      0  0

  9. #89
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Points : 86
    Points
    86
    Par défaut
    Désolé titofe ça ne fonctionne toujours pas.
    C'est toujours dans la même ligne qu'il y a une erreur :

    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
    DoCmd.RunSQL "CREATE TABLE " & oWkb.Name & " (ConfID varchar(50), HostEmail varchar(50), Duration INTEGER, Attendees INTEGER);"
     
    
    'tant que la cellule n'est pas vide
    While oWSht.Range("A" & i).Value <> ""
     
    If DCount("*", "[oWkb.name]", "[HostEmail] LIKE '" & oWSht.Cells(i, 7) & "*'") = 0 Then
     
    cSQL = "insert into statistique ( [ConfID],[HostEmail],[Duration],[Attendees] ) values (" & Chr(34) & oWSht.Cells(i, 1) & Chr(34) & "," & Chr(34) & oWSht.Cells(i, 7) & Chr(34) & "," & Chr(34) & oWSht.Cells(i, 18) & Chr(34) & "," & Chr(34) & oWSht.Cells(i, 19) & Chr(34) & " )"
     
    'exécute la requète
      DoCmd.RunSQL cSQL
     
    End If
     
      i = i + 1
    Wend
     
    DoCmd.SetWarnings True
     
    
    End Sub

    Voici l'erreur qu'Access m'affiche : (cf fichier joint)
      0  0

  10. #90
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    étrange tout de même ce message d'erreur qui dit qu'il trouve pas le fichier alor que tu ne fais aucun appel de fichier sur cette ligne.
    sinon tu ma dit que le nom de ta feuille avait le même nom que ton fichier mais sans le .xls de fin. je pense que ca serai mieu de nommé tes table en fonction du nom de tes feuilles. petetre ca résoudra le probleme
    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
     
    DoCmd.RunSQL "CREATE TABLE " & oWsht.Name & " (ConfID varchar(50), HostEmail varchar(50), Duration INTEGER, Attendees INTEGER);"
     
     
    'tant que la cellule n'est pas vide
    While oWSht.Range("A" & i).Value <> ""
     
    If DCount("*", oWsht.name, "[HostEmail] LIKE '" & oWSht.Cells(i, 7) & "*'") = 0 Then
     
    cSQL = "insert into " & owsht.name & " ( [ConfID],[HostEmail],[Duration],[Attendees] ) values (" & Chr(34) & oWSht.Cells(i, 1) & Chr(34) & "," & Chr(34) & oWSht.Cells(i, 7) & Chr(34) & "," & Chr(34) & oWSht.Cells(i, 18) & Chr(34) & "," & Chr(34) & oWSht.Cells(i, 19) & Chr(34) & " )"
     
    'exécute la requète
      DoCmd.RunSQL cSQL
     
    End If
     
      i = i + 1
    Wend
     
    DoCmd.SetWarnings True
     
     
    End Sub
    mais si ca résou pas ton probleme je pense qu'il vient de la ligne ou tu fais appel à ton fichier excel. Regarde si le nom du fichier est correct
      0  0

  11. #91
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Points : 86
    Points
    86
    Par défaut
    excuse moi entre temps j'ai changé de fichier excel et tout les fichier excel que je traite on certes, une seule feuille de travail mais celle-ci est differente du nom du fichier...(alors que je t'avais dit le contraire)

    mais en fait , l'import est correct lorsque je rentre le nom de la table.
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "CREATE TABLE statistique (ConfID string, HostEmail string, Duration INTEGER, Attendees INTEGER);"
    .
    Tout marche nikel...
    Le "string" est pris en compte j'ai pas besoin de mettre "varchar".


    je vais essayé ta formule
    DoCmd.RunSQL "CREATE TABLE " & oWsht.Name & " (ConfID.....

    et ensuite je te dirai si sa march ou pas...
      0  0

  12. #92
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    donc l'erreur provien de owkb.name si c'est le cas je pense que ca doit etre a cause du .xls.
      0  0

  13. #93
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Points : 86
    Points
    86
    Par défaut
    je pense aussi que tu es raison.
    Voila pourquoi j'ai choisi le oWsht.Name , feuille de travail qui (encore une fois tu avais raison) porte bien le nom du fichier sans le .xls.

    Et voila ce que sa me donne:
    (voir fichier joint)

    Ce que je comprend pas, c'est que la table portant le nom du fichier (sans le .xls) s'affiche mais l'import n'a pas lieu...la table est vide.Mais elle est crée...T'y comprend quelque chose?
    Images attachées Images attachées  
      0  0

  14. #94
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    de la même maniere que lorsque tu créé une table ton owsht.name doit être en dehor des guillemet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cSQL = "insert into " & owsht.name & " ( [ConfID],[HostEmail],[Duration],[Attendees] ) values (" & Chr(34) & oWSht.Cells(i, 1) & Chr(34) & "," & Chr(34) & oWSht.Cells(i, 7) & Chr(34) & "," & Chr(34) & oWSht.Cells(i, 18) & Chr(34) & "," & Chr(34) & oWSht.Cells(i, 19) & Chr(34) & " )"
      0  0

  15. #95
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Points : 86
    Points
    86
    Par défaut
    excuse moi pr le retard totofe merci beaucoup tout marche nikel

    merci pour ta patience et tes explications claires et precises cela m'a permis de mener à terme mon projet.
      0  0

  16. #96
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Points : 86
    Points
    86
    Par défaut
    re bonjour,

    Si on veut importer 2fois le même fichier il se produit une erreur.

    Il est possible de mettre un message d'erreur en msgbox, si le fichier est déjà importer dans une table, de ne pas l'importer une 2ème fois.

    Il faut mettre un if avant le DoCmd.RunSQL "CREATE TABLE "?

    Pouvez-vous m'aider svp?
      0  0

  17. #97
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    dsl pour le retar. donc pour tester si une table éxiste tu peut utilisé cette fonction tu la créé dans un module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Function fExistTable(strTableName As String) As Boolean 
      Dim i As Integer 
      fExistTable = False  
      CurrentDb.TableDefs.Refresh 
      For i = 0 To CurrentDb.TableDefs.Count - 1
        If strTableName = CurrentDb.TableDefs(i).Name Then       
          'Table Exists         
          fExistTable = True           
          Exit For 
        End If  
      Next i
    End Function
    et tu pourra faire appel dans ton code de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if fExistTable("ta_table" )
      0  0

  18. #98
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Points : 86
    Points
    86
    Par défaut
    bonjour totofe
    désolé aussi pour mon retard...merci pour ton code tout marche parfaitement...
    Afin d'optimiser mon code j'aimerai creer des nouvelles colonnes dans ma table qui serai les colonnes mois (n°du mois ex: 04,05,06) et année (2005,2006...)

    En fait le mois et l'année j'aimerai les recuperé à partir du titre du fichier qui se nomme ainsi : "2006_statistique_04"

    J'aimerai savoir si c'est possible car cela m'a l'air assez compliqué à faire...
      0  0

  19. #99
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    pour récupéré le numéro du mois et l'anné utilise les fonctions "left" et "right" mais j'ai pas tro saisi ce que tu voudré fair!!? tu voudré créé 2 champs dans ta table. Dans une nouvelle table ou ds la table ou t'importe tes donné?
      0  0

  20. #100
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Points : 86
    Points
    86
    Par défaut
    Merci totofe de me repondre aussi rapidement!!!

    En fait cela se passe dans la table où j'importe mes données...
    J'ai la colonne hostemail, duration....
    et je voudrai creer 2 nouvelles colonnes dans lesquelles il y aurai le mois dans l'une et l'année dans l'autre.

    Exemple : fichier excel : 2006_statistique_04

    Une colonne Mois où il y aurai "04" à chaque ligne...
    Une colonne Anné où il y aurai "2006" à chaque ligne...

    T'aurai une idée? car moi je sèche completement ...
    Merci d'avance totofe
      0  0

Discussion fermée
Cette discussion est résolue.

Discussions similaires

  1. importer les données d'un fichier Excel Protégé
    Par ARFY56 dans le forum Access
    Réponses: 15
    Dernier message: 21/11/2018, 21h11
  2. Réponses: 3
    Dernier message: 20/08/2010, 21h48
  3. importer les données d'un fichier excel vers oracle 10g
    Par sarita_ima dans le forum Documents
    Réponses: 2
    Dernier message: 04/09/2009, 13h52
  4. Importer les données d'un fichier excel dans une table
    Par dams95190 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/12/2007, 10h35
  5. Réponses: 3
    Dernier message: 27/07/2007, 13h06

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