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

XL 2019 Insertion CSV dans un tableau en VBA

richbike87

XLDnaute Nouveau
Bonjour à tous,

Je suis sur un projet de conversion de point GPS en LAMBERT93.
Cependant, je n'arrive pas à intégrer mon fichier CSV dans mon tableau Excel, cela ne me copie que la première ligne. Or je souhaite que la copie se fasse à partir de la deuxième ligne.

Ensuite, je souhaite créer un export des valeurs trouvées (après conversion) dans un nouveau fichier CSV, et qui supprimerait les valeurs du tableau pour recommencer l'opération avec d'autres fichiers.

En pièces jointes, le tableur Excel avec le code VBA d'insertion du CSV et un CSV.

Par avance merci de votre aide si précieuse
 

Pièces jointes

  • Test1.xlsm
    17.4 KB · Affichages: 7
  • st saulve1.zip
    331 bytes · Affichages: 7
Solution
Tiens j'ai pris le temps de te corriger tes fonctions de conversion et d'export
VB:
Sub Conversion()
Dim lg As Integer, i As Integer, lat As Single, lng As Single, Resultat As L93
    With Sheets("Feuil1")
        lg = .Cells(Rows.Count, "C").End(xlUp).Row
        For i = 3 To lg
            lat = .Range("C" & i).Value 'Replace(.Range("C" & i).Value, ".", ",")
            lng = .Range("D" & i).Value 'Replace(.Range("D" & i).Value, ".", ",")
           
            Resultat = Lambert93(lat, lng)
           
            .Range("G" & i).Value = Resultat.X
            .Range("H" & i).Value = Resultat.Y
            'Définit le texte d'export pour le csv en colonne "J"
            .Range("J" & i).Value = .Range("B" & i).Value & "," &...

Deadpool_CC

XLDnaute Accro
LE problème vient de ton CSV
Le ligne sont en saut de ligne Linux "LF" ... faut les passer en Windows "CRLF"
Dans Notepad++ utiliser le remplacer en mode étendu et recherche "\n" et remplace par "\\r\n"
Et cela passe après la correction de ton csv à importer
 

Deadpool_CC

XLDnaute Accro
A noter dans ta macro import, lit une première ligne sans rien traiter puis ensuite les autres lignes avec ton traitement d'import : sinon tu va lire et importer les titre de colonne comme des données (1ere ligne de ton CSV)
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Vous avez 2019, faites le avec PowerQuery, vous pourrez opérer toutes les transformations que vous voudrez.

Dans le fichier ci-joint un exemple.
Pour voir la requête, cliquez dans une cellule du tableau vert puis dans l'onglet 'Requête' qui s'affiche alors sur le ruban (à droite) cliquez sur modifier.

Dans l'étape source, vous changerez le chemin vers le fichier :


cordialement
 

Pièces jointes

  • Test1.xlsm
    30.8 KB · Affichages: 4

Deadpool_CC

XLDnaute Accro
@Hasco Lol ... 2016 pour ma part

@richbike87 si power query pas possible pour toi ... Quand tu aura fait ta fonction d'export ...
Pour nettoyer ton tableau après ta boucle de création du fichier et après la fermeture du fichier, il suffit d'ajouter
VB:
    Range("ImportRange").Delete
 

richbike87

XLDnaute Nouveau
@Deadpool_CC Je pensais pouvoir utiliser le fichier CSV sans aucune modification, car celui-ci est un export d'une app Android. N'y a-t-il pas possibilité de l'utiliser comme telle ?
Merci pour la commande de suppression.

@Hasco je ne connais pas Power Query c'est pour cela que je voulais utiliser le VBA.

Je vais essayer de creuser un peu plus le sujet afin d'obtenir quelque chose de cohérent.
 

Deadpool_CC

XLDnaute Accro
le simple "LF" (fin de ligne) n'est pas géré par la fonction standard "Line Input" que tu utilises
pour Excel il faut absolument le CR (Retour Charriot)
j'avoue que j'ai jamais eu le cas car dans ces cas la je m'arrange pour que mon fichier de données soit propre

peut-être chercher un code VBA pour faire le remplacement avant de traiter
chercher si CRLF présent, sinon remplacer LF par CRLF

J'avoue que j'ai pas cela sous la main
 

richbike87

XLDnaute Nouveau
@Deadpool_CC j'ai réussi à trouver la fonction en VBA afin de remplacer LF par CRLF, par contre je n'arrive pas à démarrer à la seconde ligne de mon fichier CSV.
 

Pièces jointes

  • Test2.xlsm
    34.4 KB · Affichages: 6
  • st saulve1.zip
    331 bytes · Affichages: 6

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

En utilisant l'assistant hérité d'import de données texte (onglet 'Données' bouton 'Obtenir des données'-> 'Assistant hérités' avec l'enregistreur de macro j'ai obtenu ceci qui fonctionne et transforme les latitudes et longitudes en nombres décimaux.
VB:
Sub Import()
'
' Import Macro
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;CheminVersLeFichier\st saulve1.csv", Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "st saulve1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 65001
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
        .TextFileDecimalSeparator = "."
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

cordialement
 

richbike87

XLDnaute Nouveau
@Deadpool_CC oui il ne reste plus que l'export des colonnes "B, G, H, E" dans cet ordre avec la remise à zéro des tableaux "ImportRange" et "ImportRange2"

@Hasco Je me doute qu'en passant par le Power Query cela doit être plus simple, mais je n'ai pas les connaissances pour pouvoir l'utiliser pour le moment, mais je vais m'y pencher dans un futur proche.
 

Hasco

XLDnaute Barbatruc
Repose en paix
e me doute qu'en passant par le Power Query cela doit être plus simple, mais je n'ai pas les connaissances pour pouvoir l'utiliser pour le moment, mais je vais m'y pencher dans un futur proche.
Ma dernière proposition, n'a rien à voir avec Power query, mais avec les assistants d'importations tels qu'ils existaient dans les versions précédentes.

Cordialement
 

Deadpool_CC

XLDnaute Accro
Oui le code de Hasco était une autre manière d'importer ton CSV en VBA.
Par contre je ne sais pas comment aurait réagit son code vu que chaque ligne du CSV finissait en LF et non CRLF
à tester à l'occasion
 

Discussions similaires

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