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

VBA Access Discussion :

Imporation de excel vers access parametrée


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 36
    Points
    36
    Par défaut Imporation de excel vers access parametrée
    Bonjours à tous

    J'ai lu differente doc pour creer une importation parametrée (ex: http://access.developpez.com/faq/?pa...l#ImpFichExcel) mais je n'ai rien trouvé.
    en fait je voudrai importer dans une table des lignes de feuilles excel (ça j'ai réussi) mais je voudrai pouvoir le faire à partir d'une certaine ligne.

    j'utilise cette fonction mais je n'arrive pas à mettre une ligne de départ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "table", "chemin d'acces", True, "synthèse" & "!"
    "synthèse" & "!" represente la feuille

    Pouvez vous m'aider svp.
    Merci de votre aide
    et fait pas le malin
    pourquoi vouloir mourir alors qu'on a au moins une personne qui nous connait et qui pense à nous

  2. #2
    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
    il faut faire une requete SQL

    Regarde cette discussion http://www.developpez.net/forums/sho...d.php?t=349821
    ------------------- --------------------
    eFFeT DeVeLoPpEz.CoM

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    Je te montre se que j'ai deja fait :

    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
    Dim fs, f, f1, fc, s, i
    Dim lieu
    Dim z As Integer
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.getfolder("Z:\test normalisé\aide\dde") 'saisir le dossier comportant tous les classeurs excel des clients
    Set fc = f.Files
    For Each f1 In fc
       s = f1.Name
       lieu = f & "\" & s 'lieu= chemin d'acces+ le nom du classeur à importer
        'importation grace  à la concaténation du chemin et du nom du classeur
    Dim appExcel As Excel.Application
    Dim classeur As Excel.Workbook
    Set appExcel = CreateObject("Excel.Application")
    Set classeur = Excel.Workbooks.Open(lieu)
    z = appExcel.Sheets("Parametres contrôle poids").Range("Y11").Value  'voir une erreur de temps en temps lors de l'execution
    'actualisation des indices dans la feuilles excel
     appExcel.Sheets("Parametres contrôle poids").Range("Y11").Value = appExcel.Sheets("Parametres contrôle poids").Range("Y19").Value
    classeur.Close
    appExcel.Quit
     
    Set classeur = Nothing
    Set appExcel = Nothing
     
     
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "SAISIE", lieu, True, "synthèse" & "!",
    Next
    En fait je répertorie tous les fichier xls de mon dossier , je récupere le nom et le chemin d'acces et j'importe à partir de la ligne Y11 pour chaque classeurs xls.

    tu crois que je peu utiliser se code pour pouvoir faire mon importation???
    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
    Dim fs, f, f1, fc, s, i
    Dim lieu
    Dim z As Integer
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.getfolder("Z:\test normalisé\aide\dde") 'saisir le dossier comportant tous les classeurs excel des clients
    Set fc = f.Files
    For Each f1 In fc
       s = f1.Name
       lieu = f & "\" & s 'lieu= chemin d'acces+ le nom du classeur à importer
        'importation grace  à la concaténation du chemin et du nom du classeur
    Dim appExcel As Excel.Application
    Dim classeur As Excel.Workbook
    Set appExcel = CreateObject("Excel.Application")
    Set classeur = Excel.Workbooks.Open(lieu)
    z = appExcel.Sheets("Parametres contrôle poids").Range("Y11").Value  'voir une erreur de temps en temps lors de l'execution
    'actualisation des indices dans la feuilles excel
     appExcel.Sheets("Parametres contrôle poids").Range("Y11").Value = appExcel.Sheets("Parametres contrôle poids").Range("Y19").Value
    classeur.Close
    appExcel.Quit
     
    Set classeur = Nothing
    Set appExcel = Nothing
     
     
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "SAISIE", lieu, True, "synthèse" & "!",
    Next
    et fait pas le malin
    pourquoi vouloir mourir alors qu'on a au moins une personne qui nous connait et qui pense à nous

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    je t'ai envoyé le message d'avant car je n'est pas trés bien compris le probleme que vous aviez ou du moins je crois que je voix pas la comparaison avec le mien
    et fait pas le malin
    pourquoi vouloir mourir alors qu'on a au moins une personne qui nous connait et qui pense à nous

  5. #5
    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
    prend ce code il marche nikel


    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
    Private Sub Commande1_Click()
    'Ici l'importation se déclenche en cliquant sur le bouton "Commande1"
    'mais on peut aussi mettre ce code à l'ouverture d'un formulaire
    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("chemin_du_fichier_xls") 'mettez ici le chemin vers votre fichier Excel
    Set oWSht = oWkb.Worksheets("nom_de_la_feuille_concernée_par_limportation") 'mettez ici le nom de la feuille qui contient les données à importer
     
    'première ligne ou commence l'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 du tableur
    While i < 600
    'on peut aussi arrêter l'importation lorsque le programme rencontre une case
    'vide en remplaçant la ligne du While par :
    'While oWSht.Range("I" & i).Value <> ""
     
    'condition de remplissage de la table => eviter les doublons
    'si l'enregistrement existe déjà dans la table destination,
    'on passe à la ligne suivante sans l'importer
    If DCount("*", "[nom_da_la_table_destination]", "[nom_du_champ_destination_qui_ne_doit_pas_avoir_de_doublons] LIKE '" & oWSht.Cells(i, 9) & "*'") = 0 Then
    'le numéro 9 correspond au numéro de la colonne source, tel que : A=1, B=2, C=3 ...
     
    'requète SQL (avec en paramètre la ligne i et le numéro de la colonne comme précisé au-dessus)
    cSQL = "insert into [table_destination] ( [champ1], [champ2] ) values (" & Chr(34) & oWSht.Cells(i, 13) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 11) & Chr(34) & ")"
    'ici, on ne prend que les colonnes M (=13) et K (=11).
     
    'exécute la requète
    DoCmd.RunSQL cSQL
     
    End If
     
    'on incrémente la variable i pour passer à la ligne suivante
    i = i + 1
     
    Wend
     
    DoCmd.SetWarnings True
     
    End Sub


    si tu comprend pas demande moi
    ------------------- --------------------
    eFFeT DeVeLoPpEz.CoM

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    merci pour ta réponse rapide
    mais quesque je mets comme paramettre dans cette ligne?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cSQL = "insert into [table_destination] ( [champ1], [champ2] ) values (" & Chr(34) & oWSht.Cells(i, 13) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 11) & Chr(34) & ")"
    Ma premiere ligne de ma feuille et la meme que les entéte de la table donc si j'importe les ligne se mettront automatiquement en place.

    mon importation devrait ressambler à ça:

    j'importe du classeur "nom du classeur", la feuille "nom de la feuille", les lignes à partir de la ligne n°(z ma variable corespondant à un numero de ligne".
    et fait pas le malin
    pourquoi vouloir mourir alors qu'on a au moins une personne qui nous connait et qui pense à nous

  7. #7
    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
    en fait table destination c'est la table où tu voudrai qu'il y ait l'importation de tous ce dont tu as besoin (tu l'a appellé table je crois) puis ensuite champs 1 champs 2... ce sont les colonnes que tu veut importer (le nom des colonnes) et ensuite Chr(34) & oWSht.Cells(i, 13) & Chr(34) correspond au numero de la colonne que tu veu importer (exemple si c'est la 1ere colonne sa sera 1 si c la deuxieme colonne sa sera 2....ici c'est la colonne 13)...
    ------------------- --------------------
    eFFeT DeVeLoPpEz.CoM

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    je ne peut pas mettre aucun paramètre car mes colonnes sont identique dans ma table et dans ma feuille??

    un autre petit truc , lorsque tu mets sa:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While oWSht.Range("I" & i).Value <> ""
    la boucle s'arrete lorsqu'il rencontre une case vide ou une ligne vide??
    et fait pas le malin
    pourquoi vouloir mourir alors qu'on a au moins une personne qui nous connait et qui pense à nous

  9. #9
    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
    lorsque la case est vide...


    Sinon tu insere un create table pour directement créer tes champs et ensuite tu insere les info que tu veu

    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
    DoCmd.RunSQL "CREATE TABLE nom table (champs attributs champs attributs....);"
     
    'tant que la cellule n'est pas vide
    While nomtable.Range("A" & i).Value <> ""
     
    If DCount("*", "[nom_da_la_table_destination]", "[nom_du_champ_destination_qui_ne_doit_pas_avoir_de_doublons] LIKE '" & oWSht.Cells(i, 9) & "*'") = 0 Then
     
    'requète SQL (avec en paramètre la ligne i et le numéro de la colonne comme précisé au-dessus)
    cSQL = "insert into [table_destination] ( [champ1], [champ2] ) values (" & Chr(34) & oWSht.Cells(i, 13) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 11) & Chr(34) & ")"
    'ici, on ne prend que les colonnes M (=13) et K (=11).
     
    'exécute la requète
    DoCmd.RunSQL cSQL
     
    End If
     
    'on incrémente la variable i pour passer à la ligne suivante
    i = i + 1
     
    Wend
     
    DoCmd.SetWarnings True
     
    End Sub
    ------------------- --------------------
    eFFeT DeVeLoPpEz.CoM

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    ceci me permet de verifier si la cellule A de la ligne i est vide ou non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While nomtable.Range("A" & i).Value <> ""
    c'est sa??

    voila ma table et ma feuille excel.
    Esque j'ai besoin de spécifier les colonnes?
    et comment je modifie cette ligne alors??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cSQL = "insert into [SAISIE] ( [champ1], [champ2] ) values (" & Chr(34) & oWSht.Cells(i, 13) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 11) & Chr(34) & ")"
    et fait pas le malin
    pourquoi vouloir mourir alors qu'on a au moins une personne qui nous connait et qui pense à nous

  11. #11
    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
    tu veu importer tous les champs de ta feuille synthese dans une table? tu devai pas commencer par un certaine ligne?
    ------------------- --------------------
    eFFeT DeVeLoPpEz.CoM

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    si car dans une autre feuille du classeur je met dans une cellule un nombre consernant la derniere ligne de la feuille synthèse qui a etait importé, et je voudrai pouvoir importer à partir de ce numero; tu voix le truc?

    alors que dois je mettre comme parametre dans cette ligne???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cSQL = "insert into [SAISIE] ( [champ1], [champ2] ) values (" & Chr(34) & oWSht.Cells(i, 13) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 11) & Chr(34) & ")"
    et fait pas le malin
    pourquoi vouloir mourir alors qu'on a au moins une personne qui nous connait et qui pense à nous

Discussions similaires

  1. Bug Excel vers Access
    Par jbaudin dans le forum Access
    Réponses: 2
    Dernier message: 01/12/2005, 15h56
  2. Importer le contenu d'une cellule Excel vers Access
    Par deaqu1 dans le forum Access
    Réponses: 7
    Dernier message: 05/11/2005, 15h26
  3. Récupérer une sheets dans excel vers access sous vba
    Par odbee dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/10/2005, 00h30
  4. Problème champ après import d'excel vers access
    Par David M dans le forum Access
    Réponses: 6
    Dernier message: 16/10/2005, 11h53
  5. Réponses: 6
    Dernier message: 19/09/2005, 12h55

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