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 :

Importer fichier excel à partir de la 3è ligne dans access avec VBA [AC-2010]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Chargée d'Etudes Statistiques (étudiante)
    Inscrit en
    Mai 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargée d'Etudes Statistiques (étudiante)

    Informations forums :
    Inscription : Mai 2016
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Importer fichier excel à partir de la 3è ligne dans access avec VBA
    Bonjour,

    Je souhaite importer un fichier excel dans access à l'aide de VBA (c'est ok, mission réussie )
    Par contre, je souhaite importer ce fichier qu'à partir de la 3è ligne (donc les 2 premières lignes ne doivent pas être importées).

    Comment puis-je procéder ?

    Faut-il tout importer et supprimer ensuite les 2 premières lignes ou peut-on importer le fichier à partir de la ligne 3 ? Et comment faire ?

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    En fait il n'y a pas réponse simple à cette demande.

    Si tu le peux, la solution la plus simple est de supprimer les lignes inutiles avant l'importation.
    Sinon, tu peux aussi définir une plage de données (zone nommée) et importer cette plage de données.
    Tu peux aussi enregistrer ton fichier au format CSV puis le lire en VBA et ignorer les 2 lignes inutiles.
    Enfin tu peux copier tes données, cellule par cellule.

    Toutes ces options peuvent être automatiser en utilisant le VBA de Excel.

    Laquelle t'intéresse ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Chargée d'Etudes Statistiques (étudiante)
    Inscrit en
    Mai 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargée d'Etudes Statistiques (étudiante)

    Informations forums :
    Inscription : Mai 2016
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Bonjour Marot_r,

    Merci pour ta réponse.

    Je ne peux pas modifier le fichier excel avant l'importation.
    Ta solution csv n'est pas possible car je dois me baser absolument sur des fichiers xlsx.

    Comme je l'ai déjà importé, il me paraît donc plus "simple" de supprimer les lignes directement dans la table access mais je ne trouve pas le code VBA qui le permet...

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Ok, quel est le critère qui te permet de savoir que ces lignes doivent être supprimées ?

    À priori, il serait imprudent de se fier à leur position dans la table car rien ne garanti que les 2 premières lignes seront les 2 premiers enregistrements.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Test comme ça
    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
    cSQL = "SELECT [Id_pays], [Nom_pays],[Resultat] FROM  [Resultats$] in 'c:\MyRepertoire\MyFichier.xlsx' 'excel 8.0;HDR=Yes;IMEX=1;' ;"
     
    Set Rs=CurrentDb.Openrecordset(cSQL)
     
    Set rsAccess= CurrentDb.openrecordset("select * from MyTable")
    Dim Id as integer
     
    While rs.eof=false
    If Id>2 then
       with rsAccess
            .addnew
             .fields("Id_pays").value=Rs.fields("Id_pays").value
             .fields("Nom_pays").value=Rs.fields("Nom_pays").value
             .fields("Resultat").value=Rs.fields("Resultat").value
             .update
       end with
    End if
    Rs.Movenext
    Id=Id + 1
    Wend
    Mais on peut également définir un plage de cellules dans la requête et là c'est encore plus simple!
    Dernière modification par Invité ; 25/05/2016 à 19h51.

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Chargée d'Etudes Statistiques (étudiante)
    Inscrit en
    Mai 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargée d'Etudes Statistiques (étudiante)

    Informations forums :
    Inscription : Mai 2016
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Ok, quel est le critère qui te permet de savoir que ces lignes doivent être supprimées ?

    À priori, il serait imprudent de se fier à leur position dans la table car rien ne garanti que les 2 premières lignes seront les 2 premiers enregistrements.

    A+
    Bonjour Marot_r,

    Les lignes à supprimer sont celles qui ont une case vide dans ma colonne F1.
    J'ai essayé de faire : CurrentDb.Execute "Delete * From temporaire Where F1 = NULL;"
    Mais cela ne fonctionne pas.

    Merci pour votre aide.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         cSQL = "INSERT INTO test ( [champ1], [champ2], [champ3], [champ4], [champ5], [champ6],[champ7] ,[champ8] ,[champ9]  ) SELECT F1, F2, F3, F4, F5, F6, F7, F8, F9 FROM  [" & Feuille & "$] in '" & Dossier & "\" & Fichier & "' 'excel 8.0;HDR=No;IMEX=1;' Where [F1] Is not null;"
    CurrentDb.Execute cSQL

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour, au cas où la solution de rdurupt ne te conviendait pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Delete * From temporaire Where F1 IS NULL;"
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Chargée d'Etudes Statistiques (étudiante)
    Inscrit en
    Mai 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargée d'Etudes Statistiques (étudiante)

    Informations forums :
    Inscription : Mai 2016
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci rdurupt et marot_r !
    Les deux solutions fonctionnent parfaitement!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Créer plusieurs fichiers XML à partir d'une base de données Access avec VBA
    Par NicolasLet dans le forum VBA Access
    Réponses: 0
    Dernier message: 07/04/2016, 09h23
  2. OleDbCommand sur un fichier Excel - conserver les retour à la ligne dans une cellule
    Par rohstev dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 29/01/2014, 16h02
  3. Réponses: 0
    Dernier message: 28/08/2012, 17h41
  4. Import fichier Excel de plus de 1000 lignes
    Par christelle_s dans le forum Deski
    Réponses: 2
    Dernier message: 10/06/2011, 14h34
  5. Réponses: 2
    Dernier message: 10/03/2009, 17h52

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