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 :

Macro ouverture multiple fichiers CSV et copier valeurs vers fichier XLSX [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur sécurité incendie
    Inscrit en
    Décembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur sécurité incendie
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Macro ouverture multiple fichiers CSV et copier valeurs vers fichier XLSX
    Bonjour à tous,

    Je suis nouveau sur le forum, je suis ingénieur sécurité incendie pour le bâtiment en Suisse.
    Pour le traitement de données de simulation j'ai besoin de récupérer les valeurs de plusieurs fichiers CSV et les coller horizontalement dans un fichier excel, un fichier par ligne par ex la colonne " du fichier CSV "A" vers la ligne 2 du fichier Excel, fichier "B" vers ligne 4...

    J'aimerais utiliser une boîte de dialogue pour sélectionner les fichiers CSV et que la macro les traite les uns après les autres.

    Pour récupérer les données des CSV il faut au préalable les convertir avec la virgule comme séparateur. J'ai enregistré une macro pour récupérer le bout de code mais il me manque l'ouverture à la suite de plusieurs fichiers.
    Est-ce qu'un d'entre vous pourrait me donner un coup de main SVP ?

    Merci d'avance,
    Aymeric

    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
     
    Workbooks.Open fileName:= _
            "C:\Etudes\Scenario_3\Stade_3-01_occupants.csv"
     
    'Converti CSV :
        Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
            :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
            Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
            )), TrailingMinusNumbers:=True
     
        'Sélectionne et copie la colonne 
    Range("c2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Windows("Convergence.xlsm").Activate
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
     
    'Sélectionne le fichier cible et colle
                Windows("Convergence.xlsm").Activate
        Range("b3").Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
        Windows("Stade_3-01_occupants.csv").Activate
        ActiveWindow.Close False

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Une façon de faire:
    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
    Sub MultiSelect()
       Dim k As Integer
       '--- Sélection fichiers
       With Application.FileDialog(msoFileDialogFilePicker)
          .AllowMultiSelect = True
          .InitialFileName = ThisWorkbook.Path
          .Filters.Add "Fichiers Excel", "*.xlsx, *.csv, *.xls"
          .Show
          If .SelectedItems.Count > 0 Then
             For k = 1 To .SelectedItems.Count
               Cells(k, 1) = .SelectedItems(k)   '--- à remplacer par la macro de traitement
             Next k
           End If
       End With
    End Sub
    Attention: il n'est tenu aucun compte de l'ordre dans lequel les fichiers sont sélectionnés.

    Bonne continuation.

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur sécurité incendie
    Inscrit en
    Décembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur sécurité incendie
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci EricDgn, moyennant quelques adaptations ça fonctionne parfaitement ! La macro fait en 15s ce que je faisais en 15min

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

Discussions similaires

  1. [XL-2010] macro"ouverture de fichier"
    Par nunnu27 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/08/2010, 12h27
  2. Rechercher - copier valeur vers deux fichiers différents
    Par supai dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/02/2010, 14h07
  3. Macro Ouverture de fichier
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/01/2010, 12h49
  4. [E-03] macro ouverture de fichier
    Par meumeu73.1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2009, 08h36
  5. Réponses: 9
    Dernier message: 17/01/2008, 16h16

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