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
Salut,

Cela doit être le comportement de ton copy / colle d'origine dans ton code
ou alors l'enregistrer sous du fichier puisque tu le passe en txt/csv.

Faut regarder s'il est possible signifier qu'il ne faut pas encadrer le texte par un paramètre du coller.
je peux pas voir de suite ... si tu trouve avant que je m'y mette fait signe que je cherche pas pour rien ...
 

Deadpool_CC

XLDnaute Accro
Je te confirme que c'est la fonction workbook.saveas qui les ajoute.
j'ai testé avec d'autre fileFormat (CSV MSDOS, ..., et même les formats txt ... rien n'y fait.

Donc à part ouvrir un nouveau fichier (openfile) et le remplir ligne après ligne toi même, et le sauvgarder / fermer ... je vois pas comment éviter ces guillement en début et fin de chaque ligne
1654162383456.png


(Sauf si quelqu'un à une astuce pour le .saveAs ... lol


D'autre part, je viens de voir que tu avais mis comme séparateur la virgule ... Or tes Coo sont au format français avec des Virgule et non des Points.
Donc soit tu change le séparateur dans ton csv, soit tu passes les nombres au format anglo-saxon (avec un "." pour la décimale).

Désolé ... j'ai pas mieux
 

Deadpool_CC

XLDnaute Accro
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 & "," & Replace(Resultat.X, ",", ".") & "," & Replace(Resultat.Y, ",", ".") & "," & Replace(Range("E" & i).Value, ",", ".")
        Next i
    End With
End Sub

Code:
Sub ExportCSV()
 Dim Plage As Object, oL As Object, oC As Object, Tmp As String, Sep$
 Dim NomEtCheminFichier As String, Derlig As Long
 ChDrive ("c:\")    'cible le dique dur C comme disque courant
 ChDir Environ("userprofile") & "\Downloads"   'cible le dossier par defaut en le mettant comme dossier courant"
 
'le nom du fichier d'export en fonction du nom mis en A1.
 NomEtCheminFichier = "Export_" & Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2) & "_" & ActiveSheet.Range("A1").Value

Open NomEtCheminFichier For Output As #1
For Each cel In Range("TabExport")
    Print #1, cel.Value
Next
Close #1

Range("ImportRange").Delete
Range("ImportRange2").Delete
Range("TabExport").Delete
ActiveSheet.Range("A1").Value = "Faire l'import CSV !"

End Sub

je te laisse gérer la vérification au préalable de l'existance ou non du fichier de sortie.
car en mode Output => si existe pas il le créé. Si Existe il l'écrase.
Si tu veux ajouter dans un export existant il faut l'ouvrir en mode "append" au lieu de output de souvenir.
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 154
Membres
112 670
dernier inscrit
Flow87