Impotation CSV

Bonjour

J'ai une macro pour importer les données d'un fichier CSV.Pour l'instant mon code fonctionne pour 30 données, je vais devoir faire la même chose pour beaucoup plus de données hors dans mon code j'ai ceci :

.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)

Y a t-il un moyen d'écrire ce code plus simplement pour faire l'importation de la donnée 1 à la donnée X (ou X correspond à la dernière donnée du CSV.

Merci pour votre aide

Personne n'a d'idée à me proposer ?

Bonjour,

Peut-être avec un exemple de CSV et le code que tu utilises tu auras des réponses

Bonjour

Désolé pour mon retard à répondre.

Voici un exemple de CSV que j'utilise :

4fichier-test.csv (632.00 Octets)

Et le code VBA dont je me sert pour faire l'importation :

Sub ImportationCSV()
Dim Page1,Page2 As Worksheet
Dim Fichier As Variant
Dim Nom As Name
Dim Urlapi As String

Set Page1 = Worksheets("Page1")
Set Page2 = Worksheets("Page2")
Urlapi = "http://xxx.xxx.xxx.xx/folder/XXXXXX/XXXXXXXX/"
Fichier = Application.GetOpenFilename("Fichiers csv (*.csv),*.csv")

    If Fichier = False Then
        Exit Sub
    Else
        Page2.Rows("39:40").Delete 'Shift:=xlUp
        With Page2.QueryTables.Add(Connection:="TEXT;" & Fichier, Destination:=Page2.Range("$A$39"))
        '.Name = "datas"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
        Page2.Range("A40:AK40").NumberFormat = "0.00"
        Page2.Cells.EntireColumn.AutoFit
        End With
    'traitement des données pour mise en page dans la Page1
            Page1.Range("Url") = Urlapi
            Page1.Range("file_csv") = Mid(Fichier, InStrRev(Fichier, "\") + 1)
            Page1.Range("precision_api") = Page2.Range("E40").Value
            Page1.Range("ecarttype_api") = Page2.Range("F40").Value
            Page1.Range("moyenne_api") = Page2.Range("G40").Value

            Page2.Range("H40:AK40").Copy
            Page1.Range("doses").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Transpose:=True
            Application.CutCopyMode = False

            If MsgBox("Voulez enregistrer la fiche de test  ?", vbYesNo, "Enregistrement de la fiche") = vbYes Then
                Page1.Range("info_importation") = "Importation des données via fichier CSV"
                Call Enregistrement
            Else
                Page1.Range("Url").ClearContents
                Page1.Range("file_csv").ClearContents
                Page1.Range("precision_api").MergeArea.ClearContents
                Page1.Range("ecarttype_api").MergeArea.ClearContents
                Page1.Range("moyenne_api").MergeArea.ClearContents
                Page1.Range("info_importation").MergeArea.ClearContents
                Page1.Range("doses").ClearContents
                Page2.Rows("39:40").Delete
                'Rechercher les plages nommées contenant le terme DonnéesExternes_ et les effacer
                For Each Nom In ActiveWorkbook.Names
                    If Nom.Name Like "*DonnéesExternes_*" Then Nom.Delete
                Next Nom
                Exit Sub
            End If
    End If
End Sub

Dans ce cas j'ai systématiquement le même nombre de données à importer mais je voudrais avoir la possibilité de pouvoir importer un CSV dont le nombre de données serait variables.

Je pense que cela doit se jouer au niveau de cette ligne :

 .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)

Mais je ne sais pas comment la modifier.

Merci pour votre aide.

Bonjour

Personne n'a de solutions à me proposer où il manque des éléments pour trouver une solution ?

Rechercher des sujets similaires à "impotation csv"