GADENSEB
XLDnaute Impliqué
Bonjour, 
J'ai récupéré une macro qui une fois copier dans un fichier permet de découper ce fichier selon une colonne choisie
en plusieurs fichiers excel :
Dans le fichier joinr si je choisi le "service" - colonne C il va faire 3 fichiers puisqu'il y a 3 services différents.
etc... sur les autres colonnes
Cette marco est super mais je voudrais l'intégrée en XLA pour l'utilisée sur n'importe quel fichier
2 problèmes se posent :
1 - Le dossier d'enregistrement :
Ici le dossier est par défaut le dossier de la marco -> donc le futur dossier XLA
Je voudrais transformer le code pour que je puisse choisir le dossier de destination
2 - Le nom du fichier :
Ici par défaut le nom commun à tous les fichiers est "Service" là aussi à l'enregistrement je voudrais choisir le nom commun de tous les fichiers générés
Qui à une idée ?
bonne journée
Seb
	
	
	
	
	
		
	
		
			
		
		
	
				
			J'ai récupéré une macro qui une fois copier dans un fichier permet de découper ce fichier selon une colonne choisie
en plusieurs fichiers excel :
Dans le fichier joinr si je choisi le "service" - colonne C il va faire 3 fichiers puisqu'il y a 3 services différents.
etc... sur les autres colonnes
Cette marco est super mais je voudrais l'intégrée en XLA pour l'utilisée sur n'importe quel fichier
2 problèmes se posent :
1 - Le dossier d'enregistrement :
Ici le dossier est par défaut le dossier de la marco -> donc le futur dossier XLA
Je voudrais transformer le code pour que je puisse choisir le dossier de destination
2 - Le nom du fichier :
Ici par défaut le nom commun à tous les fichiers est "Service" là aussi à l'enregistrement je voudrais choisir le nom commun de tous les fichiers générés
Qui à une idée ?
bonne journée
Seb
		Code:
	
	
	Option Explicit
'
' compileARTT Macro
' Macro enregistrée le 09/10/2014 Par Sébastien GADEN
'
Sub Decoupage()
Dim Service As New Collection
Dim Plage As Range
Dim col3 As Integer
Dim L As Long, L2 As Long, Lmax As Long
    'évite le scintillement de l'écran
    Application.ScreenUpdating = False
 With ActiveSheet
 'With Sheets("Feuil1")       'A adapter en fonction de la feuille où sont les données!
        Lmax = .Cells(Application.Rows.Count, 1).End(xlUp).Row
        'Création de la liste des services (sans doublons)
        col3 = InputBox(Prompt:="Quel est le n° de colonne pour le tri?")
        On Error Resume Next
        For L = 2 To Lmax
            Service.Add .Cells(L, col3).Text, .Cells(L, col3).Text
        Next L
        On Error GoTo 0
        'Création des classeurs
        For L = 1 To Service.Count
            'Copie de l'onglet
            .Copy
            'Epurage des données par service
            With ActiveSheet
                Set Plage = .Rows(Application.Rows.Count)
                For L2 = 2 To Lmax
                    If .Cells(L2, col3).Text <> Service(L) Then
                        Set Plage = Union(Plage, .Rows(L2))
                    End If
                Next L2
                Plage.Delete
            End With
            'Sauvegarde classeur "Catégorie X"
            With ActiveWorkbook
                .SaveAs ThisWorkbook.Path & "\Service " & Service(L) & ".xlsx"
                'ActiveWorkbook.SendMail Recipients:=Range("A2").Value
               .Close
            End With
        Next L
    End With
    Application.ScreenUpdating = True
    MsgBox Service.Count & " classeurs créés"
End Sub