[VBA] Copier données d'un fichier .CSV vers autre fichier

Whivez

XLDnaute Nouveau
Bonjour,

Suite à mon autre post (ici) qui m'a bien aidé pour développer/adapter ma macro, je me retrouve, de nouveau, dans une impasse...

Voilà mon soucis, le fichier dont je dois extraire les données est maintenant en .CSV au lieu de .xls comme précédement...
Du coup, il me copie toutes les données sous cette forme:
94;ZOLA ;ZOLA ;L9431;O;1;;0;;;;20;20;23;42;1124;20;20

Voici mon code:
Code:
Sub CopieColleWbk()

  Dim WbkS As Workbook  ' Classeur source
  Dim WbkD As String  ' Classeur données
  Dim WshD As String ' Feuille Base de données
  Dim VPathFic As String ' Chemin classeur source
  Dim i As Integer ' Variable pour colonne recherche
  Dim Periode As String ' Extraction texte période de fichier source
  Dim Date1 As Date ' Premiere date
  Dim Date2 As Date ' seconde date
  Dim LDepDate As Integer ' Ligne de départ pour copie date
  Dim LArrDate As Integer ' Ligne d'arrivée pour copie date
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Début de macro '''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  ' Enregistrement nom de classeur et feuille de données
WbkD = ActiveWorkbook.Name
WshD = ActiveSheet.Name
  ' Demander de choisir le classeur Source
MsgBox "Merci de sélectionner le Fichier de données"
  ' Choisir le fichier à ouvrir
VPathFic = ChoixFichier()
  ' Si aucun fichier, alors sortir
If VPathFic = "" Then Exit Sub
  ' Sinon ouvrir le classeur
Workbooks.Open VPathFic
  ' Définir le classeur source
Set WbkS = ActiveWorkbook
  ' Renommer la feuille
ActiveSheet.Name = "Feuil1"
  'mise en mémoire de la période
Periode = Range("A2")
  ' Sélection et copie de plage données + 1 ligne vide
Range("A5:S" & WbkS.Sheets("Feuil1").[A65535].End(xlUp).Row + 1).Select
Selection.Copy
  ' activation classeur destination
Workbooks(WbkD).Activate
  ' Sélection feuille
Sheets(WshD).Activate
  ' Trouver dernière cellule vide du tableau
i = 1
While (Cells(i, 1).Value <> "")
i = i + 1
Wend
Cells(i, 1).Select
LDepDate = ActiveCell.Row
  ' Collage
ActiveSheet.Paste
  ' Extraction des dates de la phrase "Periode du XX/XX/XXXX au XX/XX/XXXX"
Date1 = Mid(Periode, 12, 10)
Date2 = Mid(Periode, 26, 10)
  ' Trouver dernière cellule vide pour date
i = 1
While (Cells(i, 1).Value <> "")
i = i + 1
Wend
Cells(i, 1).Select
LArrDate = ActiveCell.Row - 1
  ' Copie des dates 1 & 2 dans les colonnes
Range(Cells(LDepDate, 19), Cells(LArrDate, 19)).Value = Date1
Range(Cells(LDepDate, 20), Cells(LArrDate, 20)).Value = Date2
  ' Message de fin
MsgBox "La copie du classeur source vers le calsseur de destination est terminée"
  ' effacer les variables objet
Set Sht = Nothing
Set WbkS = Nothing
End Sub
Function ChoixFichier()
Dim fd As FileDialog
Dim vrtSelectedItem As Variant
  Set fd = Application.FileDialog(msoFileDialogOpen)
  With fd
    If .Show = -1 Then
      ChoixFichier = fd.SelectedItems(1)
    Else
      ChoixFichier = ""
    End If
  End With
  Set fd = Nothing
End Function

J'ai vu pas mal de post au sujet des séparateurs, mais je ne vois pas comment l'adapter à mon code...
J'ai aussi pensé à une solution de secours, qui serait de rajouter une étape qui enregistre le fichier en .xlsx avant l'import mais bon...

Merci d'avance de votre aide... Encore !
 

Discussions similaires