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:
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 !
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 !