Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Conversion d'un fichier csv par VBA sans modification du format date

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 !

sasjm37

XLDnaute Junior
Bonjour,
Malgré mes recherches sur les forums, je ne trouve pas la solution à mon problème.
Dans les fichiers de la PJ, mon programme (en partie d'autres auteurs...) ouvre l'explorateur pour intégrer le fichier csv joint. Lors de cette intégration les dates sont transformées (exemple : le 01/04/2021 est transformer en 04/01/2021) et forcement ça m....
Merci de votre aide.
Cordialement.
 

Pièces jointes

Solution
Bonjour Sasjm,
Un essai en PJ qui semble marcher. A tester, avec simplement :
VB:
Sub integre()
Dim nf$
    nf = Application.GetOpenFilename("Fichier CSV (*.csv), *.csv")
    If nf <> "" And Right(nf, 3) = "csv" Then
        Workbooks.Open Filename:=nf, Local:=True
        Cells.EntireColumn.AutoFit
        [A1].Select
    End If
End Sub
Bonjour Sasjm,
Un essai en PJ qui semble marcher. A tester, avec simplement :
VB:
Sub integre()
Dim nf$
    nf = Application.GetOpenFilename("Fichier CSV (*.csv), *.csv")
    If nf <> "" And Right(nf, 3) = "csv" Then
        Workbooks.Open Filename:=nf, Local:=True
        Cells.EntireColumn.AutoFit
        [A1].Select
    End If
End Sub
 

Pièces jointes

Bonsoir le fil, sasjm37, sylvanu

Une autre façon de faire
(correspond à Données/Données externes/Fichier Texte)
Code:
Sub Macro1()
Dim nf$
nf = Application.GetOpenFilename("Fichier CSV (*.csv), *.csv")
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & nf, Destination:=Range("$A$1"))
    .Name = "Resa_club"
    .FieldNames = -1: .PreserveFormatting = -1
    .RefreshStyle = xlInsertDeleteCells: .SaveData = -1
    .AdjustColumnWidth = -1: .RefreshPeriod = 0
    .TextFilePlatform = 1252: .TextFileStartRow = 1
    .TextFileParseType = xlDelimited: .TextFileSemicolonDelimiter = -1
    .TextFileColumnDataTypes = Array(1, 4, 4, 1, 4, 4) ' ici formatage des données : 4 = Date JMA
    .Refresh BackgroundQuery:=False
End With
End Sub
Test OK sur le CSV exemple.
 
Merci sylvanu
C'est beau, c'est simple, ça fonctionne. Je suis admiratif devant ce code si pur.
moi je dis "Respect Monsieur"
Merci encore
 
Bonjour Staple1600,
Merci d'avoir pris le temps d'étudier mon code et de répondre à ma demande.
Ton code fonctionne correctement, mais il demande beaucoup d'adaptations pour répondre à mon besoin.
En revanche, il est toujours utile d'avoir plusieurs solutions et je vais prendre le temps d'étudier ce code avec attention.
Merci encore
Cordialement
 
Bonjour le fil, sasjm37, sylvanu

Alors, je fais dans l'utile (et dans le fun)
VB:
Sub b()
Workbooks.OpenText "C:\Users\STAPLE\conversion_csv\Resa_club.csv", Local:=-1
ActiveSheet.Cells(1).CurrentRegion.Columns.AutoFit
End Sub
PS: J'ai pas osé reprendre le fit de Sylvanu 😉 (déjà que j'avais emprunté son nf)
Maintenant, il est trop tôt pour que je cherche la différence entre la méthode Workbooks.Open et Workbooks.OpenText

Et pour nourrir tes études, une autre possibilité (puisque tu es sous Excel 2016) : PowerQuery

NB: L'avantage (selon l'environnement d'exploitation de ton classeur), c'est que passer par Données ou par PowerQuery (donc sans macro) permet d'avoir une requête actualisable.
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…