Bonsoir le Forum,
j'ai repris un exemple posté par phlaurent55 que j'ai trouvé très intéressant pour vous demander comment peut on choisir les onglets à exporter (uniquement feuil 3,4 et 6 par exemple)? peut on insérer à l'export une incrémentation.
Je vous remercie
Il s'agit d'exporter chaque feuille choisie en un fichier csv correspondant?
(donc avec l'exemple donné, on aura 2.csv, 4.csv et 6.csv)
ou de compiler les feuilles choisies dans l'onglet Recap puis d'exporter cette onglet Recap au format csv?
(donc avec l'exemple donné, on aura recap.csv)
Sans réponse d'HamoudaBA, j'ai néanmoins continué mes tests.
J'en livre ici le résultat avec une macro paramétrable
Mode d'emploi de la macro test
En paramètre 1: on met le chemin du dossier d'export
(ici dans l'exemple : ThisWorkbook.Path &"\")
En paramètre 2, on liste les feuilles que l'on veut exporter en CSV
(ici dans l'exemple la Feuil2 et la Feuil5)
Test OK avec Excel 2013
VB:
Sub test()
Application.ScreenUpdating = False
Export_CSV ThisWorkbook.Path & "\", Worksheets("Feuil3"), Worksheets("Feuil5")
End Sub
Private Sub Export_CSV(strPath As String, ParamArray sheets() As Variant)
If IsMissing(sheets) Then Exit Sub
Dim var As Variant, ws As Worksheet
Application.DisplayAlerts = False
For Each var In sheets
If TypeName(var) = "Worksheet" Then
Set ws = var
ws.Copy
With ActiveWorkbook
.SaveAs Filename:=strPath & ws.Name & ".csv", FileFormat:=xlCSV, local:=True
.Close False
End With
End If
Next
End Sub
Sans réponse d'HamoudaBA, j'ai néanmoins continué mes tests.
J'en livre ici le résultat avec une macro paramétrable
Mode d'emploi de la macro test
En paramètre 1: on met le chemin du dossier d'export
(ici dans l'exemple : ThisWorkbook.Path &"\")
En paramètre 2, on liste les feuilles que l'on veut exporter en CSV
(ici dans l'exemple la Feuil2 et la Feuil5)
Test OK avec Excel 2013
VB:
Sub test()
Application.ScreenUpdating = False
Export_CSV ThisWorkbook.Path & "\", Worksheets("Feuil3"), Worksheets("Feuil5")
End Sub
Private Sub Export_CSV(strPath As String, ParamArray sheets() As Variant)
If IsMissing(sheets) Then Exit Sub
Dim var As Variant, ws As Worksheet
Application.DisplayAlerts = False
For Each var In sheets
If TypeName(var) = "Worksheet" Then
Set ws = var
ws.Copy
With ActiveWorkbook
.SaveAs Filename:=strPath & ws.Name & ".csv", FileFormat:=xlCSV, local:=True
.Close False
End With
End If
Next
End Sub
@HamoudaBA
Tu cites zebanx, tu me cites, mais tu ne réponds pas la question que je posais au message N°3
Et tu ne donnes pas ton avis sur ma dernière macro
Sans doute une erreur de manipulation dans la rédaction de ton message.
@HamoudaBA
C'est à cette question que tu n'as pas répondu
Il s'agit d'exporter chaque feuille choisie en un fichier csv correspondant?
(donc avec l'exemple donné, on aura 2.csv, 4.csv et 6.csv)
ou de compiler les feuilles choisies dans l'onglet Recap puis d'exporter cette onglet Recap au format csv?
(donc avec l'exemple donné, on aura recap.csv)
@Staple1600
Pour votre Macro je vous ai répondu que je n'arrivais pas à modifier le path afin de l'adapter à mon fichier, alors pour moi je n'ai pas parvenu à l'essayer.
@HamoudaBA
Donc voici la macro adaptée pour traiter le cas de l'exemple 2
(Un seul fichier CSV est généré)
Dans cette exemple, on demande à la macro xtest de copier les donnés des feuilles Feuil3 Feuil5 et Feuil7 à la suite dans la feuille Recap.
Ensuite elle exporte l'onglet Recap au format CSV dans le même répertoire que là où se trouve le classeur Excel que l'on veut exporter en CSV.
VB:
Sub xtest()
Application.ScreenUpdating = False
Export_CSV ThisWorkbook.Path & "\", Worksheets("Feuil3"), Worksheets("Feuil5"), Worksheets("Feuil7")
End Sub
Private Sub Export_CSV(strPath As String, ParamArray sheets() As Variant)
If IsMissing(sheets) Then Exit Sub
Dim var As Variant, ws As Worksheet
Application.DisplayAlerts = False
For Each var In sheets
If TypeName(var) = "Worksheet" Then
Set ws = var
If Not ws.Name = "Recap" Then
' on copie les données des feuilles passées en parametres dans la feuille Recap
With ws.UsedRange
If .Rows.Count > 1 Then
.Offset(1, 0).Resize(.Rows.Count - 1).Copy Worksheets("Recap").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
End If
End With
End If
End If
Next
'export en un seul fichier CSV
Worksheets("Recap").Copy
With ActiveWorkbook
.SaveAs Filename:=strPath & Worksheets("Recap").Name & ".csv", FileFormat:=xlCSV, local:=True
.Close False
End With
End Sub