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"
1653479209719.png
Et cela passe après la correction de ton csv à importer
 

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 :
1653479633617.png


cordialement
 

Pièces jointes

  • Test1.xlsm
    30.8 KB · Affichages: 4

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
 

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
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 156
Membres
112 672
dernier inscrit
djudju