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 :

Import Excel Erreur / Trop de ligne


Sujet :

Access

  1. #1
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 82
    Points : 81
    Points
    81
    Par défaut Import Excel Erreur / Trop de ligne
    Bonjour,
    Alors voilà j'ai un import D'Excel vers Access, il marche niquel avec des petit fichier, mais le problème c'est que cette import pourrais facilement avoir plus de 50k lignes. J'ai essayé d'importer un fichier de 50k lignes et le problème est que tout d'abord Access devien carrement instable pendant l'import (normal me direz-vous) mais aussi, il ne fini pas l'import, il arrive à environ 9k lignes là ...
    Est-ce possible d'importer plus de 50K lignes avec un import ? ou je dois delimiter les fichier excel à moin de 10k ligne ?

    Sinon avec chaque import (j'en ai d'autres qui marchent trés bien), il me fait une 'erreure' et me demande si e veux bien enregistrer (screenshot ci- dessous) Est-ce possible d'enlever cela ? Car je n'ai pas besoin de ce message.
    (Je précise qu'il n'y a pas de violation de clé ni rien)
    Images attachées Images attachées  

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    bjr,

    Citation Envoyé par Sethouille
    Car je n'ai pas besoin de ce message.
    Ah bon?
    Pourtant ce message t'explique pourquoi il te manque 44352 lignes à l'import
    Les champs supprimés c'est peut-être un problème de type de champ, mais sans doute qu'il manque du contenu après import
    Et ça génère sûrement une table avec les lignes en erreurs, ça peut être utile d'y jeter un oeil.

  3. #3
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 82
    Points : 81
    Points
    81
    Par défaut
    En fait, malgrés ce msg, il rentre bien les donnés. Pour cela que j'en ai pas besoin
    Ensuite, j'ai remarqué qu'il me metteait bien ces données justement, pour les 54K lignes et des brouettes, mais le problème c'est quil plante dans ma routine pour l'enregistrement
    j'explique : Je met les lignes dans une tables annexes, puis je regarde ligne par ligne si elle existe dans la bonne table et j'enregistre ou je modifi s'il le faut.
    Et en fait c'est au niveau du module que ça plante ... j'ai fais 2 essai, le premier j'ai eu le droit à 9k ligne enregistrées ... et la 2nde 11K
    Est-ce que c'est un bug de VBA ? un recordset ne peut gerer autant de ligne ? Ou ma routine qui ne tourne pas bien ?
    La voici :
    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
    Private Sub cmdPT_Click()
    On Error GoTo Err_cmdPT_Click
    Dim vS As String
    Dim vI As Recordset
    Dim vU As Recordset
    Dim vRs As Recordset
    Dim vTest As String
    Dim vT As Integer
    Dim vL As String
     
     
    vS = OuvrirUnFichier(Me.Hwnd, "Parcourir", 1, "Microsoft Excel", "xls")
     
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "PosteTechniqueImport", vS, True
    Set vI = CurrentDb.OpenRecordset("PosteTechnique")
    Set vRs = CurrentDb.OpenRecordset("PosteTechniqueImport")
    While vRs.EOF = False
        vTest = "SELECT * FROM PosteTechnique " & _
                "WHERE pTNom = '" & [vRs]![pTNom] & "'"
        vT = InStr(1, vRs!pTNom, "-")
        vL = Mid(vRs!pTNom, vT + 1, 3)
        Set vU = CurrentDb.OpenRecordset(vTest)
        If vU.EOF Then
                    vI.AddNew
                    vI!pTNom = vRs!pTNom
                    vI!pTDesc = vRs!pTDesc
                    vI!pTZoneDeTri = vRs!pTZoneDeTri
                    vI!pTType = vRs!pTType
                    vI!pTClasse = vRs!pTClasse
                    vI!pTSecteur = vRs!pTSecteur
                    vI!pTUnit = vL
                    vI.Update
                Else
                    vU.Edit
                    vU!pTDesc = vRs!pTDesc
                    vU!pTZoneDeTri = vRs!pTZoneDeTri
                    vU!pTType = vRs!pTType
                    vU!pTClasse = vRs!pTClasse
                    vU!pTSecteur = vRs!pTSecteur
                    vU!pTUnit = vL
                    vU.Update
        End If
     
        vRs.Delete
        vRs.MoveFirst
    Wend
     
    Exit_cmdPT_Click:
        Exit Sub
     
    Err_cmdPT_Click:
        MsgBox "Une erreure est survenue, veuillez verifier votre fichier !" & vbCrLf & "L'importation va s'arrêter"
        Resume Exit_cmdPT_Click
     
    End Sub

  4. #4
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    je ne sais pas s'il attend la fin de l'import avant de continuer le traitement...
    peut-être que non?

    sinon plutôt qu'un import, lier le fichier excel serait suffisant non?

  5. #5
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 82
    Points : 81
    Points
    81
    Par défaut
    Effectivement il attend que l'import se finisse avant de commencer le traitement.
    D'ou mon interrogation sur le recordset. Est-ce qu'il plante parcqu'il ne peut gerer tant de ligne ?
    Et le fichier excell ne serais pas suffisant, j'ai beaucoup de calcul à effectué la dessus, et d'autres differentes données à récuperer.
    Je vais continuer mes tests.

  6. #6
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 82
    Points : 81
    Points
    81
    Par défaut
    J'ai coupé la procédure en 2, une première pour faire l'importation et la seconde pour gerer les données (les mettre dans la bonne table, avec une modification si l'objet existe, ou une nouvelle entré s'il n'existe pas.
    Et ce n'est pas à l'importation que cela plante, mais aprés.

    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
    Dim vI As Recordset
    Dim vU As Recordset
    Dim vRs As Recordset
    Dim vTest As String
    Dim vT As Integer
    Dim vL As String
     
     
    Set vI = CurrentDb.OpenRecordset("PosteTechnique")
    Set vRs = CurrentDb.OpenRecordset("PosteTechniqueImport")
    While vRs.EOF = False
        vTest = "SELECT * FROM PosteTechnique " & _
                "WHERE pTNom = '" & [vRs]![pTNom] & "'"
        vT = InStr(1, vRs!pTNom, "-")
        vL = Mid(vRs!pTNom, vT + 1, 3)
        Set vU = CurrentDb.OpenRecordset(vTest)
        If vU.EOF Then
                    vI.AddNew
                    vI!pTNom = vRs!pTNom
                    vI!pTDesc = vRs!pTDesc
                    vI!pTZoneDeTri = vRs!pTZoneDeTri
                    vI!pTType = vRs!pTType
                    vI!pTClasse = vRs!pTClasse
                    vI!pTSecteur = vRs!pTSecteur
                    vI!pTUnit = vL
                    vI.Update
                Else
                    vU.Edit
                    vU!pTDesc = vRs!pTDesc
                    vU!pTZoneDeTri = vRs!pTZoneDeTri
                    vU!pTType = vRs!pTType
                    vU!pTClasse = vRs!pTClasse
                    vU!pTSecteur = vRs!pTSecteur
                    vU!pTUnit = vL
                    vU.Update
        End If
     
        vRs.Delete
        vRs.MoveFirst
    Wend
    Tout se deroule bien si je me met en mode pas à pas, mais si je le lance normalement access plante directement, même avec 3000 lignes.
    (Je précise que la table PosteTechniqueImport est remplie au préalable)

Discussions similaires

  1. Import Excel avec nombre de lignes
    Par Satriani92 dans le forum VBA Access
    Réponses: 1
    Dernier message: 26/11/2013, 21h51
  2. Accès SQL dans fichier excel erreur sur une ligne
    Par troubleshooting dans le forum Excel
    Réponses: 3
    Dernier message: 17/11/2009, 14h46
  3. [VBA] Import Excel: problème saut de ligne
    Par davasm dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/11/2007, 09h05
  4. [DTS sql server] Erreur lors de l'insertion de trop de ligne
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/07/2005, 22h44
  5. Erreur d'import Excel -> Delphi
    Par Homer dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 05/07/2004, 10h07

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