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

Excel Discussion :

Import Fichier : Conversion .csv en .xls ou .xlsx


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Par défaut Import Fichier : Conversion .csv en .xls ou .xlsx
    Bonjour à tous,

    je me vois à nouveau contraint de soliciter votre aide.
    J'ai une macro qui propose à l'utilisateur de choisir un fichier, fichier qui sera ensuite importé dans le fichier excel en cours.
    Cela marche assez bien pour des classeurs en .xls mais lorsqu'il s'agit d'importer un classeur en .csv ça coince...

    Voilà le code que j'ai pour l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    fichier2 = Application.GetOpenFilename
    If fichier2 = False Then Exit Sub
    MsgBox "vous avez sélectionné le fichier " & fichier2
    Application.ScreenUpdating = False
    Set fbcalcul = Worksheets("TBR")
    Set wbsource1 = Workbooks.Open(fichier2)
    wbsource1.SaveAs Replace(wbsource1.FullName, ".csv", ".xlsx"), 50
    fichier3 = Left(wbsource1.Name, Len(wbsource1.Name) - 5) & ".xlsx"
    Set wbsource2 = Workbooks.Open(fichier3)
    Set fimpor1 = wbsource2.Sheets(1)
    fimpor1.Range("A2:P10000").Copy fbcalcul.Cells(fbcalcul.UsedRange.Rows.Count + 1, 1)
    wbsource2.Close False
    Quand je vais dans mon dossier, une version en .xls du classeur a bien été enregistrée mais la conversion n'est pas réalisée. En effet au lieu d'apparaître chacun dans une colonne, mes élements s'affichent comme ça :
    61;32;32;0;0;0;0;0;0;0;0;01/02/2013;
    dans la première colonne

    Savez-vous d'où ça peut venir ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    A mon avis le PB vient de ce que les délimiteurs de champs sont inappropriés. Par défaut ce sont des tabulations.
    Le code qui suit n'est là que pour te donner une piste de recherche.
    Tout d'abord il faut utiliser [Importation des données] dans [Données externes]
    Vois en ligne 20 le paramètre indispensable.
    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
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;D:\Mes Documents\EXCEL\exemple.csv", Destination:=Range("A1"))
            .Name = "exemple"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = True 'Cette ligne initialise les points virgules comme délimiteurs
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
    End With
    Cordialement.
    Jean-Claude

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, à toi de poursuivre
    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
    Option Explicit
     
    Sub SelectionFichier()
    Dim Wkb As Workbook
        With Application.FileDialog(msoFileDialogFilePicker)
            .InitialFileName = ThisWorkbook.Path & "\"
            .Title = "Fichier"
            .AllowMultiSelect = False
            .InitialView = msoFileDialogViewList
            .ButtonName = "Sélection Fichier"
            .Show
            If .SelectedItems.Count > 0 Then
                Set Wkb = Application.Workbooks.Open(.SelectedItems(1), UpdateLinks:=xlUpdateLinksNever, _
                        ReadOnly:=True, Local:=True)
     
                ' etc ....
     
     
                Set Wkb = Nothing
            End If
        End With
    End Sub

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 44
    Par défaut
    ce sujet m'interesse ENORMEMENT !!!
    j'en étais arrivé au meme résultat mais.... par ce qu'il y en a toujours un, je n'arrive pas à réinjecter le chemin récupéré dans la suite...

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Sub recup_extr()
     
    'mise à vide de la feuille
     
    Range("A2:AZ6500").Select
        Selection.ClearContents
     
     
    ' Récupère l'emplacement du fichier
    On Error GoTo 1
    Dim finput As FileDialog
    Set finput = Application.FileDialog(msoFileDialogFilePicker)
    finput.InitialFileName = ThisWorkbook.Path & "\"
    finput.AllowMultiSelect = False
    finput.Show
     
    chemintemp = finput.SelectedItems(1)
    1:
     
        With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;chemintemp", Destination:=Range("$A$2"))
     
    ' "TEXT;D:\NOMENCLATURE\extNomISO.txt", Destination:=Range("$A$2"))
            .Name = "extraction"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = True
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
    End Sub
    je pense que c'est ça la merdouille mais comment je dois faire?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;chemintemp", Destination:=Range("$A$2"))
    With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;chemintemp", Destination:=Range("$A$2"))

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 44
    Par défaut
    juste pour dire que j'ai résolu mon probleme comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "TEXT;" & chemintemp, Destination:=Range("$A$2"))

Discussions similaires

  1. conversion .csv en .xls
    Par black cat747 dans le forum MATLAB
    Réponses: 3
    Dernier message: 17/05/2010, 15h52
  2. Conversion fichier .csv en .xls
    Par Peachplume dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 05/03/2008, 09h27
  3. conversion d'un fichier csv en xls
    Par yandoka dans le forum Langage
    Réponses: 11
    Dernier message: 23/07/2007, 16h37
  4. [VBA-E] Conversion CSV en XLS
    Par crac_finance dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/03/2007, 10h18
  5. Conversion .csv en .xls
    Par Isa31 dans le forum Langage
    Réponses: 4
    Dernier message: 24/05/2005, 13h04

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