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