Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

zebanx

XLDnaute Accro
Bonsoir HamoudaBA,

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
 

Pièces jointes

  • recap_xls.xls
    78 KB · Affichages: 52

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
 

zebanx

XLDnaute Accro
Bonjour Staple1600

Cette exportation de feuilles (type array) est intéressante. Je garde ce code. Merci (pour le code et etre aller au bout de ta démarche).

++
zebanx
 
Dernière édition:

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]
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@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.
 

Staple1600

XLDnaute Barbatruc
Re

@HamoudaBA
C'est à cette question que tu n'as pas répondu
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…