Comment convertir des CSV en fichier Excel en masse (tous les fichiers d’un répertoire) avec VBA

Guide « 108 astuces pour grands débutants sur Excel ! » Offert
Booster votre productivité en téléchargeant gratuitement votre ebook PDF des meilleures astuces pour les débutants et les pros d'Excel
Excel formation - 00 Astuces - 100
 

Dans un précédent tutoriel, que je vous avais proposé l’année dernière, nous avions découvert comment travailler avec des fichiers CSV sur Excel. Nous avions alors manipulé des fichiers CSV sur Excel, mais également procédé à l’opération inverse, c’est-à-dire transformer un fichier Excel en CSV. Aujourd’hui, je vous propose de répondre à la question posée par « Flo Chass » dans les commentaires de la vidéo sur Youtube, qui s’interroge sur la possibilité de réaliser une conversion de masse de fichier CSV en fichier Excel.

Excel formation - Conversion de CSV en fichier Excel en masse - 01

 

Téléchargement

 

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

 

1. Présentation

 

Pour illustrer ce cours, nous allons partir de la série de fichiers CSV suivante :

Excel formation - Conversion de CSV en fichier Excel en masse - 02

Chacun de ces fichiers reprend les informations concernant les clients des différentes agences d’un groupe de magasin.

Il suffit d’ouvrir l’un d’entre eux pour constater qu’il s’agit de fichiers CSV classiques dans lequel chaque information est séparée par une simple virgule.

Excel formation - Conversion de CSV en fichier Excel en masse - 03

L’objectif étant alors de convertir chacun de ces fichiers en un fichier Excel facilement exploitable.

 

2. Convertir un fichier CSV en 1 clic

 

Tout d’abord, voyons comment faciliter la conversion d’un unique fichier en utilisant une macro commande VBA que nous pourrons lancer d’un simple clic !

Bien entendu, dans une seconde partie, nous verrons comment modifier cette macro commande pour automatiser la conversion de tous les fichiers présents dans un répertoire.

Et pour nous simplifier encore la tâche, nous n’allons pas saisir cette macro à la main, mais nous allons préférer utiliser l’enregistreur de macro.

Cette outil, que nous avons déjà eu l’occasion de découvrir dans le chapitre « Créer une macro VBA AUTOMATIQUEMENT sur EXCEL avec l’enregistreur » de la formation sur l’apprentissage de VBA pour les débutants.

Ici, nous allons découvrir une méthode alternative, qui va permettre d’affecter directement le lancement de la macro à un bouton !

Pour cela, nous commençons par créer un objet Zone de texte (menu Insertion > Zone de texte) :

Excel formation - Conversion de CSV en fichier Excel en masse - 04

Puis nous dessinons cet objet sur la feuille de calcul :

Excel formation - Conversion de CSV en fichier Excel en masse - 05

Ensuite, nous saisissons un texte au bouton et nous le mettons en forme :

Excel formation - Conversion de CSV en fichier Excel en masse - 06

Une fois ces opérations terminées, nous pouvons simplement effectuer un clic-droit sur le bouton, pour choisir l’option Affecter une macro.

Excel formation - Conversion de CSV en fichier Excel en masse - 07

Nous saisissons un nom que nous souhaitons donner à la macro-commande, puis nous cliquons sur le bouton Enregistrer pour démarrer l’enregistrement de toutes les actions que nous allons réaliser au sein d’Excel :

Excel formation - Conversion de CSV en fichier Excel en masse - 08

Nous validons simplement la fenêtre suivante, qui contient déjà le nom de la macro.

À partir de maintenant, tout ce que nous allons faire sera interprété par Excel en ligne de code.

Nous allons ici réaliser les opérations suivantes :

  • Ouvrir l’un des fichiers CSV,
  • Le convertir le fichier CSV en fichier Excel,
  • L’enregistrer le fichier CSV en tant que fichier Excel (format *.xlsx)
  • Fermer le fichier enregistré

Pour ouvrir le fichier, rendez-vous dans le menu Fichier > Ouvrir > Parcourir, puis dans la fenêtre d’ouverture, sélectionnez « Tous les fichiers (*.*) :

Excel formation - Conversion de CSV en fichier Excel en masse - 09

Choisissez l’un des fichiers puis cliquez sur ouvrir :

Excel formation - Conversion de CSV en fichier Excel en masse - 10

Le fichier maintenant ouvert, mais dans un format brut !

Pour le convertir le fichier CSV en un tableau Excel, sélectionnez toutes la colonne A dans laquelle se trouvent les données, puis rendez-vous dans le menu Insertion > Convertir :

Excel formation - Conversion de CSV en fichier Excel en masse - 11

Depuis l’assistant de conversion, choisissez le type de fichier Délimité :

Excel formation - Conversion de CSV en fichier Excel en masse - 12

Dans la fenêtre suivante, choisissez le séparateur Virgule, puis validez la conversion en appuyant sur le bouton Terminer :

Excel formation - Conversion de CSV en fichier Excel en masse - 13

Les données sont maintenant converties, nous pouvons enregistrer le fichier sous un format Excel (Fichier > Enregistrer sous…) :

Excel formation - Conversion de CSV en fichier Excel en masse - 14

Dans le menu Type, choisissez le format « Classeur Excel (*.xslx) » puis validez en appuyant sur la touche Enregistrer.

Et voilà, la conversion d’un fichier unique est maintenant terminée !

Nous pouvons valider la création de la macro commande en cliquant sur le carrée de fin d’enregistrement situé sur la barre d’état d’Excel :

Excel formation - Conversion de CSV en fichier Excel en masse - 15

 

3. Import de fichiers en masse !

 

La première chose que nous allons faire avant de modifier le fonctionnement de la macro va être de simplifier celle-ci !

Pour visionner cette macro VBA, effectuez un nouveau clic-droit sur le bouton inséré dans la feuille de calcul > Affecter une macro.

Ensuite, sélectionnez la macro, puis cliquez sur le bouton Modifier :

Excel formation - Conversion de CSV en fichier Excel en masse - 16

Nous pouvons ainsi consulter le fonctionnement de cette macro :

Excel formation - Conversion de CSV en fichier Excel en masse - 17

Nous voyons ainsi que conformément à ce que nous avons réalisé, Excel a notamment sélectionné la colonne A en entière, puis converti celle-ci dans un second temps.

Pour optimiser très légèrement le processus, nous allons fusionner ces deux lignes pour réaliser la conversion, non plus sur la sélection, mais directement sur la colonne A :

 

    Columns("A:A").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)), _
        TrailingMinusNumbers:=True

Ensuite, pour simplifier encore un peu cette ligne, nous allons supprimer les arguments inutiles, ce qui permettra ensuite de pouvoir utiliser la commande sur tous les fichiers CSV (qui auraient même le même type de délimiteur, c’est-à-dire la virgule) :

 

    Columns("A:A").TextToColumns  Destination:=Range("A1"), DataType:=xlDelimited, Comma:=True

Maintenant que notre macro est simplifiée au possible, nous allons créer une nouvelle procédure, dans laquelle nous allons déplacer le contenu de cette macro !

Pour cela, nous tapons simplement le nom de la macro après avoir saisi le mot-clé Sub (convertirUnCSV) :

 

Sub convertirUnCSV()
 
End Sub

Nous sélectionnons ensuite, le contenu de la macro précédente pour le faire glisser dans la nouvelle macro :

Excel formation - Conversion de CSV en fichier Excel en masse - 18

De cette manière, nous allons pouvoir faire passer le nom du fichier à convertir en tant qu’argument de cette nouvelle procédure.

Pour cela, nous saisissons le nom de cet argument entre les parenthèses insérées par Excel sur la ligne de déclaration :

 

Sub convertirUnCSV(fichier as String) 

Nous appelons cet argument « fichier » et le typons en tant que string, c’est-à-dire une chaîne de caractère qui va contenir le chemin d’accès complet au fichier.

De cette manière, nous allons pouvoir utiliser cet argument comme nom de fichier à ouvrir :

 

    Workbooks.Open Filename:= fichier

Mais nous allons également en déduire le nom du fichier Excel généré et pour cela, nous allons faire appel à la fonction Replace, qui permet de remplacer une série de caractère par une autre, au sein d’une série principale.

Nous pouvons donc très facilement remplacer l’extension *.csv par *.xlsx :

 

ActiveWorkbook.SaveAs Filename:=Replace(fichier,  ".csv", ".xlsx"),  FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

Cela étant fait, nous allons maintenant revenir dans la macro principale, afin de passer en revue tous les fichiers présents dans un dossier en particulier pour les convertir !

Pour commencer, nous allons demander Excel de sélectionner le premier fichier à convertir :

 

    Dim dossier As Variant
    dossier = Application.GetOpenFilename

Cette commande va lui présenter une fenêtre de sélection de fichier :

Excel formation - Conversion de CSV en fichier Excel en masse - 19

Le chemin d’accès complet au fichier va alors être enregistré dans la variable dossier.

Un Debug.Print de cette variable permet alors de connaître sa valeur réelle :

Excel formation - Conversion de CSV en fichier Excel en masse - 20

Nous allons vouloir simplement supprimer la partie qui se trouve sur la partie droite, après le dernier antislash (« \ »).

Pour cela, nous allons utiliser deux fonctions VBA :

  • La fonction InStrRev qui va permettre de connaître la position de ce caractère,
  • La fonction Left qui va permettre de ne conserver qu’un nombre de donnés de caractères de cette chaîne

Excel formation - Conversion de CSV en fichier Excel en masse - 21

Ensuite, nous allons pouvoir passer en revue tous les fichiers CSV de ce dossier pour lancer la macro de conversion.

Pour cela, nous allons créer une nouvelle variable que nous allons appeler « fichier », à laquelle nous allons donner pour valeur le chemin du dossier, suivi du symbole joker étoile (le « * », qui permet de remplacer n’importe quelle série de caractère) et de l’extension csv :

 

    Dim fichier As String
    fichier = Dir(dossier & "*.csv")

Ensuite, il ne reste plus qu’à boucler sur tous les fichiers csv présent dans le dossier en utilisant une boucle Do While qui va se répéter tant que VBA identifie des fichiers dans le dossier.

 

    Do While Len(fichier) > 0
    Loop

Dans cette boucle, nous allons simplement appeler la procédure de conversion (convertirUnCSV avec pour argument le contenu de la variable « fichier »), puis passer au fichier suivant :

Excel formation - Conversion de CSV en fichier Excel en masse - 22

Maintenant pour tester la fonction, il suffit de revenir sur la feuille de calcul et de cliquer sur le bouton de conversion (pensez à supprimer les éventuels fichiers déjà convertis pour éviter l’apparition d’un message) :

Excel formation - Conversion de CSV en fichier Excel en masse - 23

 

 



Articles qui pourraient vous intéresser

Comment remplir automatiquement des cellules d'un tableau Excel avec la complétion automatique
Comment regrouper (ou pas !) les dates d’un tableau croisé dynamique (TCD) sur Excel ?
Comment connecter Excel sur Internet, sans VBA ?
Comment traduire automatiquement des fonctions Excel dans leur version originale ?
Comment analyser les résultats d’un sondage ou questionnaire avec Excel ?
Comment utiliser la fonction SOMME.SI pour effectuer des recherches sur des textes sur Excel ?
Comment calculer et étudier des écarts budgétaires avec Excel ?
Comment verrouiller et protéger un objet (graphique, image, zone de texte…) sur Excel ?
Comment formater des dates correctement dans Excel ?
Comment protéger le formatage des cellules tout en autorisant la saisie de données dans Excel ?
Comment transformer une photo en tableau Excel ?
Comment créer un publipostage automatique avec Excel ? (sans Word !)

Contact - Plan du site - À propos - Contact

© Excelformation.fr 2018-2024 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.