XL 2016 Exporter des Onglets vers une seule feuille.

HamoudaBA

XLDnaute Occasionnel
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
 

Pièces jointes

  • 111 (2).xls
    69.5 KB · Affichages: 58

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

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)

Ce qui n'est pas tout à fait la même chose.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

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

XLDnaute Occasionnel
Un essai (macro2).
En repartant du code de Phlaurent55 (;)) et avec l'utilisation d'un array pour boucler sur les feuilles indiquées.

Bonne soirée
zebanx[/QUOTE]
Bonjour le fil, le forum

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
 

Staple1600

XLDnaute Barbatruc
Re

@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)
Car ma macro fait l'exemple N°1
C'est à dire, elle créé plusieurs fichiers CSV (selon les feuilles choisies dans la macro)

PS; Dans l'autre fil, tu parles d'erreur de chemin, mais sauf erreur de ma part
@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.
Je ne vois ton message qui parle de cela dans cette discussion là
(Celle qui a pour titre : Exporter des Onglets vers une seule feuille)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@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
 

Discussions similaires