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. #41
    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
    Où alors essay
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If DCount("*","[test]","[nomVille] LIKE " & chr(34) & oWSht.Cells(i, 9) & "*" & chr(34))=0 Then
      0  0

  2. #42
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 960
    Points : 937
    Points
    937
    Par défaut
    C'était bien le problème : j'ai supprimé les apostrophes dans mon tableau Excel et ça ne met plus l'erreur. Le problème c'est que la ligne vérifie si tout le contenu de la cellule existe déjà dans la table. Du coup, ça ne résout pas mon problème des "Perpignan Cassanyes", "Perpignan Saint-Charles", "Perpignan Joffre" etc... En fait ce qu'on a fait c'est rajouter une ligne qui empèche les doublons
    Pour mon problème, il faudrait qu'il ne vérifie que si le premier mot de la cellule existe déjà dans la table de destination, et non pas tout le contenu de la cellule. Donc en fait tous les caractères jusqu'à un espace.
    Là ça se corse
    En tout cas chapeau bas pour résoudre aussi vite les erreurs !
      0  0

  3. #43
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 960
    Points : 937
    Points
    937
    Par défaut
    Effectivement, quand j'enlève l'option "Indexé - Sans doublons" du champ [NomVille], ça produit le même résultat grâce à la condition qu'on a rajouté. En fait, le programme que tu as fait copie les champs spécifiés d'une table Excel vers les champs spécifiés de la table d'une base de données Access en évitant les doublons !
    Félicitations

    Mais, pour mon problème (voir mon message précédent) ?
      0  0

  4. #44
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 960
    Points : 937
    Points
    937
    Par défaut
    Oulà ! Autre gros problème : Comme le programme arrête d'importer lorsqu'il recontre une case vide, il y a une partie des données qui ne sont pas importées
    Parce qu'en fait, j'ai parfois entre 1 et 5 cases vides dans la colonne mais il y a des informations en-dessous, et elles ne sont pas prises en compte, du coup ...
    En fait, il faudrait que le programme tolère genre jusqu'à 10 cases vides avant d'arrêter l'importation

    J'espère ne pas trop t'importuner avec tous mes problèmes ...
    En tout cas, merci de laide que tu m'a déjà apportée
      0  0

  5. #45
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 960
    Points : 937
    Points
    937
    Par défaut
    J'ai essayé de rajouter une condition dans la ligne du "Tant que" pour qu'il accepte de continuer à importer même s'il rencontre 2 lignes vides, mais apparemment, ça ne marche pas (d'après les tests que j'ai fait) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While oWSht.Range("I" & i).Value <> "" And oWSht.Range("I" & i + 1).Value <> ""
    Edit : En fait c'est tout con, je sais pas pourquoi j'y ai pas pensé avant : il suffit de définir une plage à importer. Par exemple, on sait qu'il commence à la ligne 11, on peut pas lui dire de s'arrêter à la ligne 600 par exemple (en laissant une bonne marge pour les ajouts à venir).
    Par contre, j'avoue que je sais pas trop comment faire
      0  0

  6. #46
    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
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    While oWSht.Range("I" & i).Value <> ""
    tu met
    pas si compliquer que ca

    puis pour éviter tes doublon faut que t'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If DCount("*","[test]","[nomVille] LIKE " & chr(34) & left(oWSht.Cells(i, 9),instr(oWSht.Cells(i, 9))-1) & "*" & chr(34))=0 Then
      0  0

  7. #47
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 960
    Points : 937
    Points
    937
    Par défaut
    Ok, merci des infos, je teste ça lundi, et je te tiens au courant
      0  0

  8. #48
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 960
    Points : 937
    Points
    937
    Par défaut
    Salut ! Alors j'ai une erreur dans la dernière ligne que tu m'as donné : "Attendu : séparateur de liste". Voir screen joint ci-dessous.
      0  0

  9. #49
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 960
    Points : 937
    Points
    937
    Par défaut
    D'autre part, en dehors de l'erreur sur la ligne du "If", j'ai le message "Wend sans While", alors qu'il y a bien un While dans le code.
    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
    Private Sub Commande1_Click()
    Dim oApp As Excel.Application
    Dim oWkb As Excel.Workbook
    Dim oWSht As Excel.Worksheet
     
    Set oApp = CreateObject("excel.application")
    Set oWkb = oApp.Workbooks.Open("C:\Interventions\création.xls")
    Set oWSht = oWkb.Worksheets("Tableau réseau BPS")
    'premier ligne ou tu commence ton import
    i = 11
     
    'pour éviter les messages lors de l'ajout des enregistrements
    DoCmd.SetWarnings False
     
    'tant qu'on n'est pas arrivés à la ligne 600
    While i < 600
     
      cSQL = "insert into [test] ( [NomVille], [CPVille], [CodeDepartement#]) values (" & Chr(34) & oWSht.Cells(i, 9) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 11) & Chr(34) & ", " & Chr(34) & Left(oWSht.Cells(i, 11), 2) & Chr(34) & ")"
     
    'condition de remplissage de la table
    If DCount("*", "[test]", "[nomVille] LIKE '" & oWSht.Cells(i, 9) & "*'") = 0 Then
     
    'exécute la requète
      DoCmd.RunSQL cSQL
     
    'sinon, on passe à la ligne suivante
    Else
     
      i = i + 1
    Wend
     
    DoCmd.SetWarnings True
    End Sub
      0  0

  10. #50
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If DCount("*","[test]","[nomVille] LIKE " & chr(34) & left(oWSht.Cells(i, 9),instr(oWSht.Cells(i, 9)," ")-1) & "*" & chr(34))=0 Then
    en effet il maquait un argument dans ma fonction. je l'ai pas testé mais je pense que maintenat ca doit etre bon

    D'autre part, en dehors de l'erreur sur la ligne du "If", j'ai le message "Wend sans While", alors qu'il y a bien un While dans le code.
    effectivement il manque un "End If" juste avant ton wend

    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
     
    Private Sub Commande1_Click()
    Dim oApp As Excel.Application
    Dim oWkb As Excel.Workbook
    Dim oWSht As Excel.Worksheet
     
    Set oApp = CreateObject("excel.application")
    Set oWkb = oApp.Workbooks.Open("C:\Interventions\création.xls")
    Set oWSht = oWkb.Worksheets("Tableau réseau BPS")
    'premier ligne ou tu commence ton import
    i = 11
     
    'pour éviter les messages lors de l'ajout des enregistrements
    DoCmd.SetWarnings False
     
    'tant qu'on n'est pas arrivés à la ligne 600
    While i < 600
     
    'condition de remplissage de la table
    If DCount("*","[test]","[nomVille] LIKE " & chr(34) & left(oWSht.Cells(i, 9),instr(oWSht.Cells(i, 9)," ")-1) & "*" & chr(34))=0 Then 
      cSQL = "insert into [test] ( [NomVille], [CPVille], [CodeDepartement#]) values (" & Chr(34) & oWSht.Cells(i, 9) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 11) & Chr(34) & ", " & Chr(34) & Left(oWSht.Cells(i, 11), 2) & Chr(34) & ")"
    'exécute la requète
      DoCmd.RunSQL cSQL
     
    'le esle est inutile car on doit passer à la ligne suivante même si on éxecute la requete
    'Else
     end if
     
    i = i + 1
     
    Wend
     
    DoCmd.SetWarnings True
    End Sub
      0  0

  11. #51
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    Je profite du sujet pour une question sur les formats de date : Ca va poser problème si j'essaie d'importer un truc excel du genre 06-06-06 dans un champs date d'access?
    merci
      0  0

  12. #52
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 960
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par totofe
    effectivement il manque un "End If" juste avant ton wend
    Bouah ! Comment j'ai pû oublier ça ! Honte sur moi

    Sinon, j'ai (encore) une erreur sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If DCount("*", "[test]", "[nomVille] LIKE " & Chr(34) & Left(oWSht.Cells(i, 9), InStr(oWSht.Cells(i, 9), " ") - 1) & "*" & Chr(34)) = 0 Then
    Voir pièce jointe
      0  0

  13. #53
    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 Hydex
    Je profite du sujet pour une question sur les formats de date : Ca va poser problème si j'essaie d'importer un truc excel du genre 06-06-06 dans un champs date d'access?
    merci
    je suis pas sure faut que tu test. mais je pense que sa devrait fonctionner. sinon je pense que la fonction format() pourait t'aider
      0  0

  14. #54
    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 azertix
    Sinon, j'ai (encore) une erreur sur la ligne :
    dsl voit pas d'ou elle provient l'erreur .
      0  0

  15. #55
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 960
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par Hydex
    Je profite du sujet pour une question sur les formats de date : Ca va poser problème si j'essaie d'importer un truc excel du genre 06-06-06 dans un champs date d'access?
    merci
    J'ai essayé et apparemment ça ne pose pas de problèmes.
    Sinon pour ton format date sur Excel, ça ne serait pas avec des "/" à la place des "-" ? Parce que j'ai regardé tous les formats date sur Excel, et je n'ai pas vu avec des tirets sauf par exemple : "mars-03".
    En tout cas, j'ai testé avec le format 03/03/03 sur Excel et le format 03/03/2003 avec Access, et ça n'a pas posé de problèmes.
    Après tout ce sont deux logiciels de la suite Microsoft, donc ils sont censés être compatibles et pouvoir permettre des importations/exportations facilement.
    Ensuite à toi de choisir le format date approprié et dans Excel et dans Access.
    Essaye de prendre des formats les plus proches possibles

    Voir pièce jointe
      0  0

  16. #56
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 960
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par totofe
    dsl voit pas d'ou elle provient l'erreur .
    Tu as vu mon screen ?
      0  0

  17. #57
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If DCount("*", "[test]", "[nomVille] LIKE '" & Left(oWSht.Cells(i, 9), InStr(oWSht.Cells(i, 9), " ") - 1) & "*'") = 0 Then
    essay avec ca mais je pense pas que ca devrais résoudre ton probleme
      0  0

  18. #58
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 960
    Points : 937
    Points
    937
    Par défaut
    Non, hélas j'ai toujours la même erreur
      0  0

  19. #59
    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
    essay de voir se que te retourne la fonction instr() et regarde si elle te renvoi bien la position du premier " ".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    msgbox InStr(oWSht.Cells(i, 9), " ")
    essaye de voir d'ou provient ton erreur
      0  0

  20. #60
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 960
    Points : 937
    Points
    937
    Par défaut
    Bah, tant pis, je trouve pas.
    Mais ne t'inquiète pas c'est déjà bien ce que fait le programme

    Je te remercie pour toute l'aide que tu m'as apporté, et encore chapeau pour la résolution des problèmes

    Azertix
      0  0

Discussion fermée
Cette discussion est résolue.
Page 3 sur 9 PremièrePremière 1234567 ... DernièreDernière

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