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

Macros et VBA Excel Discussion :

Importer une plage de lignes définies depuis fichier CSV en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut Importer une plage de lignes définies depuis fichier CSV en VBA
    Bonjour, je souhaiterais savoir si à partir de cette macro bien connue d'import d'un fichier texte/CSV, elle peut être améliorée pour importer une plage de lignes.
    Par exemple, pour un fichier de 45000 lignes, importer les lignes allant de 10 000 à 30 000.
    Je suis parvenu à améliorer une macro pour importer de 1 à 15000 ou de 30 000 à 45 000 mais impossible de trouver la solution pour borner l'import avec des numéros de lignes choisis.
    En vous remerciant pour votre aide

    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
    Option Explicit
    Public Sub importFichT2()
     
    Const FichT = "Tagada.txt"
    Const Separateurs As String = ";"
    Const Feuil_name = "Feuil5"
    Dim sh As Worksheet
    Dim hnd As String
    Dim varStrg As Variant
    Dim NomFichT As String
    Dim inumlignes As Integer
    Dim i As Integer
     
    NomFichT = ThisWorkbook.Path & "\" & FichT
    Set sh = Worksheets(Feuil_name)
    hnd = FreeFile
    inumlignes = 1
     
    Open NomFichT For Input As #hnd
    Do While Not EOF(hnd)
     
    Line Input #hnd, varStrg
    Debug.Print varStrg
     
    varStrg = Split(varStrg, Separateurs)
    For i = 0 To UBound(varStrg)
    sh.Cells(inumlignes, i + 1) = varStrg(i)
    Next i
    inumlignes = inumlignes + 1
    Loop
     
    Close #hnd
    End Sub

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Faisable via une requête PowerQuery lier le fichier, l'indexer et filtrer l'index

    Tu peux éventuellement supprimer la requête après import dans un onglet.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut
    Bonjour,
    merci beaucoup pour la réponse. En fait, j'aurais dû mieux chiffrer mon exemple. Dans le cas où le CSV dépasse le nombre de lignes d'une feuille EXcel, ça coince avec PowerQuery.
    C'est la raison pour laquelle je souhaiterais pouvoir en amont dans VBA, extraire la fraction de lignes qui m’intéresse pour pouvoir tenir sur feuille;
    Exemple : 1 500 000 lignes. Par exemple Extraire lignes de 1 à 499 000, puis de 500 000 à 999 000 et enfin de 1 000 000 à end of file.
    Pensez-vous que ce soit faisable ?
    Merci pour les conseils.

  4. #4
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut
    Bonjour,
    Quelle drôle d'idée de penser que Powerquery ne sait pas gérer ça !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut
    Très bien, je vais creuser PowerQuery en espérant que ça marche !

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

Discussions similaires

  1. [AC-2007] Importer une plage d'une feuille de plusieurs fichiers Excel
    Par Yannto dans le forum Access
    Réponses: 2
    Dernier message: 14/05/2014, 03h59
  2. [XL-2000] Export d'une plage de lignes d'un fichier puis sauvegarde sous CSV
    Par Zak Blayde dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/09/2010, 16h47
  3. Importer une feuille EXCEL vers un autre fichier
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/05/2007, 15h59
  4. Importer une feuille excel d'un autre fichier excell
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/12/2006, 21h53
  5. [VBA] Copier une plage de cellules dans un fichier fermé
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/01/2006, 16h52

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