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 de tableaux Excel complexes


Sujet :

Access

  1. #1
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut Import de tableaux Excel complexes
    Bonjour,

    Je traite actuellement l'import de fichiers Excel dans Access.
    L'import des données brutes ne posent pas de souci.
    Mais je voudrais ensuite retraiter mes données : les fichiers Excel ressemblent un peu à des tableaux croisés :

    Col1 Col2 Col3 Carac4 ...... CaracN
    CaracX1 CaracX2 CaracX3 X1 ....... Xn
    CaracY1 CaracY2 CaracY3 Y1 ....... Yn

    Et j'aimerai les transformer dans ma table en

    Col1 Col2 Col3 Col4 Col5
    CaracX1 CaracX2 CaracX3 Carac4 X1
    .......
    CaracX1 CaracX2 CaracX3 CaracN Xn
    CaracY1 CaracY2 CaracY3 Carac4 Y1
    ...........
    CaracY1 CaracY2 CaracY3 CaracN Yn

    Quelqu'un aurait-il déjà eu le même problème ?
    Merci.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    ceci pourrait t'aider
    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
     
    Sub anadecroise(source As String, cible As String, nbfix As Integer)
    'cette procèdure crée une table cible
    'à partir de la table source
    ' elle fait le travail inverse d'une requête analyse croisée
    'les  premières colonnes spécifiées par nbfix restent inchangées
    'la colonne (ipivot) suivante reprendra les intitulés des
    ' colonnes supérieures à nbfix
    'la colonne suivante (dpivot) contient les valeurs transposées
    Dim base As DAO.Database
    Dim champ As DAO.Field
    Dim depart As DAO.Recordset
    Dim departdef As DAO.Fields
    Dim boucle As Integer
    Dim typechamp As Integer
    Dim incohérent As Boolean
    Dim sql As String
    Dim sqlb As String
    If source = cible Then Exit Sub
    Set base = CurrentDb()
    'ici la procédure s'arrête si la table source n'existe pas
    Set depart = base.OpenRecordset(source)
    Set departdef = base.TableDefs(source).Fields
    'vérification du nombre de champ à transposer
    If nbfix + 2 > departdef.Count Then
    MsgBox "il doit y avoir au moins deux champs à transposer", vbCritical, "ERREUR"
    Exit Sub
    End If
    'vérification du type des champs de source
    typechamp = departdef(nbfix).Type
    incohérent = False
    For boucle = nbfix + 1 To departdef.Count - 1
    Set champ = departdef(boucle)
    If champ.Type <> typechamp Then incohérent = True
    Next boucle
    If incohérent Then
    MsgBox "tous les champs transposés doivent avoir le même type", vbCritical, "ERREUR"
    Exit Sub
    End If
    'création de la table cible et ajout de la première colonne à transposer
    sql = "SELECT "
    For boucle = 0 To nbfix - 1
    sql = sql & departdef(boucle).Name & ","
    Next boucle
    sql = sql & "'" & departdef(nbfix).Name & "' as ipivot"
    sql = sql & ", " & departdef(nbfix).Name & " as dpivot into " & cible & " from " & source & ";"
    DoCmd.RunSQL (sql)
    sql = "INSERT INTO " & cible & "("
    For boucle = 0 To nbfix - 1
    sql = sql & departdef(boucle).Name & ","
    Next boucle
    sql = sql & "ipivot,dpivot ) select "
    For boucle = 0 To nbfix - 1
    sql = sql & departdef(boucle).Name & ","
    Next boucle
    DoCmd.SetWarnings False
    'ajout des données suivantes
    For boucle = nbfix + 1 To departdef.Count - 1
    sqlb = sql & "'" & departdef(boucle).Name & "' as ipivot," & departdef(boucle).Name & " as dpivot from " & source & ";"
    DoCmd.RunSQL (sqlb)
    Next boucle
    DoCmd.SetWarnings True
    End Sub

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Merci, je vais tester.

    La première étape étant bien sûr de faire un TransferSpreadsheet.
    J'ai d'ailleurs un petit problème sur cette phase.
    dans mon tableau Excel, je vais jusqu'à la colonne IK.
    Dans la table Access résultant du Transfer, à partir de la colonne F187, j'ai des soucis d'import. Dans la table d'erreur, j'ai ça :
    Champ Erreur Ligne
    F187 Enregistrement insécable 0
    D'où cela peut-il venir ?

    Merci

Discussions similaires

  1. [PPT-2007] Importe Graphes/tableaux d'Excel vers PowerPoint
    Par gabi75 dans le forum VBA PowerPoint
    Réponses: 8
    Dernier message: 01/06/2010, 15h35
  2. Réponses: 9
    Dernier message: 20/09/2007, 12h55
  3. Import data d'Excel ds 2 table lié par clé primaire
    Par lord_paco dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 10/05/2005, 09h31
  4. BDD Access et importation de fichier excel!
    Par Zetmurin dans le forum C++Builder
    Réponses: 13
    Dernier message: 03/02/2005, 11h34
  5. [VB.NET] Import donnes d'excel : chiffres et lettres
    Par JohnGT dans le forum Windows Forms
    Réponses: 5
    Dernier message: 19/10/2004, 18h53

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