XL 2016 convertir un fichier .csv en .xlms

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

scoubidou35

XLDnaute Occasionnel
Bonjour à tous,

J'ai des fichiers en .csv que je dois modifier en .xlsm après avoir effectué des modifications sur la structure du fichier.
J'ai donc fait un enregistrement des actions pour obtenir la macro que j'ai légèrement modifié
Donc maintenant j'ai un fichier "convertir" dans lequel je copie les info contenu dans le fichier .csv dans l'onglet "FichierOrigine" puis j'exécute la macro et j'obtiens le résultat que je veux c'est à dire un nouveau fichier .xls près à être utilisé
Mais je dois refaire la manip pour chacun des fichiers csv j'entends par là que je suis obligé de copier le fichier csv dans mon fichier "convertir"
Est ce que quelqu'un serait s'il est possible d'ouvrir le fichier csv et par un moyen de bouton dans la barre de commande par exemple d'exécuter la macro et d'obtenir ainsi le résultat plus rapidement ou comment faire pour que la macro réalise le travail sans avoir à nommer le fichier car pour l'instant je suis obligé de copier le fichier csv sur une feuille bien précise (avec un nom : ici FichierOrigine)pour indiquer à dans la macro les info à convertir.

Je ne suis pas sûr d'être clair mais je me tiens à votre dispo pour toutes informations complémentaires bien sûr.
Merci
 

Pièces jointes

Solution
Fichier (4) avec utilisation du Dictionary pour traiter les nouveaux codes :
VB:
Sub Convertir()
Dim chemin$, fichier$, d As Object, tablo, i&, ncol%
chemin = ThisWorkbook.Path & "\" 'à adapter
fichier = Dir(chemin & "*.csv") '1er fichier CSV du dossier
'---listes des anciens et nouveaux codes---
Set d = CreateObject("Scripting.Dictionary")
tablo = Feuil2.[A1].CurrentRegion.Resize(, 2) 'matrice, plus rapide, à adapter
For i = 2 To UBound(tablo)
    d(tablo(i, 1)) = tablo(i, 2)
Next
'---traitement des fichiers CSV___
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier a déjà été créé
While fichier <> ""
    With Workbooks.Open(chemin & fichier)
        With .Sheets(1).Cells(1).CurrentRegion...
Bonjour,
Comprends pas bien.
Tu as des fichiers .CSV dans un répertoire ?
Tu veux tous les convertir en .XLSM ?
Tu veux que ce soit fait automatiquement pour tous les fichiers en 1 seule action ?
Avec en plus la modification issue du Module1 de ton fichier exemple ?
Tu veux donner le même nom aux fichiers .XLSM que ceux des fichiers .CSV ?
Pourquoi des .XLSM ? Tu as une macro à intégrer dans le VBA des fichiers .XLSM ?
Où est le code de cette Macro ?
 
Bonjour,
Comprends pas bien.
Tu as des fichiers .CSV dans un répertoire ?
Tu veux tous les convertir en .XLSM ?
Tu veux que ce soit fait automatiquement pour tous les fichiers en 1 seule action ?
Avec en plus la modification issue du Module1 de ton fichier exemple ?
Tu veux donner le même nom aux fichiers .XLSM que ceux des fichiers .CSV ?
Pourquoi des .XLSM ? Tu as une macro à intégrer dans le VBA des fichiers .XLSM ?
Où est le code de cette Macro ?

Bonjour Dudu2,

Oui les fichiers .CSV sont regroupé dans un dossier sur mon ordi.
Non, j'ai fait une erreur quand j'ai écrit mon message c'est en .XLS...désolé 🙄
Oui il faudrait que le fichier .XLS ait les modifications apportées en suivant le module 1
Oui si le fichier XLS pouvait avoir le même nom que celui en csv se serait génial.
J'espère avoir répondu à toutes vos questions et ainsi vous aidez à voir plus clair dans ma recherche.
Merci et bonne journée
 
Bonjour scoubidou35, Dudu2,

Téléchargez les fichiers zippés joints dans le même dossier.

La macro affectée au bouton "Convertir" :
VB:
Sub Convertir()
Dim chemin$, fichier$
chemin = ThisWorkbook.Path & "\" 'à adapter
fichier = Dir(chemin & "*.csv") '1er fichier CSV du dossier
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier a déjà été créé
While fichier <> ""
    Workbooks.OpenText chemin & fichier, Local:=True
    With ActiveWorkbook
        .SaveAs chemin & Left(.Name, Len(.Name) - 4), 56 'fichier.xls
        .Close
    End With
    fichier = Dir 'fichier suivant
Wend
End Sub
A+
 

Pièces jointes

Bonjour,
Je ne comprends pas sur quoi travaille le convertisseur au départ.
Sur le fichier CSV ouvert sous Excel ?
Les noms des feuilles ont été mis préalablement sur ce classeur CSV ?

Tu peux envoyer un exemple de CSV ?
En fait si tu supprimes le contenu de la feuille "Nouveau Tableau" du fichier et que tu exécutes la macro tu obtiens le résultat final que je veux (Tableau avec les modif) et normalement tu as un nouveau fichier excel "Classeur1" qui s'ouvre avec ce même tableau (c'était pour me faciliter comme cela il me reste plus qu'a renommer le fichier classeur1 par le nom du fichier csv.
En fait la macro travail sur les données csv que j'ai copié/coller du fichier csv origine vers excel dans mon fichier dans l'onglet "fichieroriginal"
Je te joins un exemple de fichier csv
 

Pièces jointes

Je n'ai pas regardé les post précédents de Job75 qui sont peut-être des solutions.
Voici un fichier qui fait ce que j'ai compris que tu voudrais faire.
Je n'ai pas testé avec l'exécution de ta fonction Convertisseur.
A toi de vérifier.
 
Dernière édition:
Mon post #5 ne vous intéresse pas ?
J'ai rapidement testé je n'ai pas encore déjeuné. il fait bien la conversion de csv en xls mais ne change rien au niveau de la présentation. Lorsque je teste avec mon fichier csv que j'ai mis en ligne pour dudu2 j'obtiens un fichier xls sans convertion (les colonnes ne sont pas séparé). Reste maintenant à voir si en intercalent une partie de mon code si j'obtiens bien mon nouveau fichier xls avec les modifications souhaité (intitulé des colonnes, modifications de la présentation, etc...)
Merci pour cette piste
 
Je n'ai pas regardé les post précédents de Job75 et Scoubidou35 qui sont peut-être des solutions.
Voici un fichier qui fait ce que j'ai compris que tu voudrais faire.
Je n'ai pas testé avec l'exécution de ta fonction Convertisseur.
A toi de vérifier.
J'ai un problème je n'arrive pas à ouvrir ton fichier j'ai un message d'erreur me disant que le fichier n'existe pas
 
Je n'arrive pas à charger le CSV comme dans ton fichier initial.
Il utilise immanquablement la virgule comme séparateur et donc génère 2 colonnes.
Il faut donc que tu adaptes ton Convertisseur en conséquence.
A la fin le Convertisseur fait des trucs que je ne comprends pas et génère des prompts d'ouverture de fichier. Je te laisse vérifier cette partie qui t'appartient.
 
Je n'arrive pas à charger le CSV comme dans ton fichier initial.
Il utilise immanquablement la virgule comme séparateur et donc génère 2 colonnes.
Il faut donc que tu adaptes ton Convertisseur en conséquence.
A la fin le Convertisseur fait des trucs que je ne comprends pas et génère des prompts d'ouverture de fichier. Je te laisse vérifier cette partie qui t'appartient.

J'ai ouvert ton fichier et cliqué sur "le bouton "conversion CSV" il me demande de sélection le dossier, je sélectionne donc le dossier où sont tous les fichiers CSV puis à l'étape suivante je sélectionne le fichier CSV que je veux convertir mais après je ne comprends ce qui m'est demandé.
On me demande de sélectionner un fichier excel mais lequel je dois prendre le tiens ou le miens (mon fichier de départ).
Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 CSV en EXCEL
Réponses
1
Affichages
61
D
  • Question Question
2
Réponses
28
Affichages
2 K
Deleted member 441486
D
  • Question Question
Power Query Power Query
Réponses
26
Affichages
463
Retour