Bonjour,

J'utilise un fichier Excel qui me permet d'agréger des données multi-clients puis à générer, par client, des fichiers pdf.

Or, mes clients souhaitent que je leur envoie ces données par fichier Excel. J'aimerai donc pouvoir trouver une formule qui filtre mon tableau par client puis, pour chaque client, en génère un tableau Excel propre.

On m'a transmis une macro mais celle-ci suit le cheminement suivant :
* Filtre données pour le client i,
* Transfère les données vers un onglet "vierge",
* Sauvegarde le tout (tout le fichier) sous la forme "Données client i.xls".

Or, mon fichier de base est un fichier xlsm qui contient bon nombre d'onglets préparatoires, qui permettent de mettre en forme mon tableau final. Et j'ai plus de 80 clients différents. La méthode que l'on m'a indiquée (et que je retrouve sur le net) m'oblige donc, pour chacun des fichiers "Données client i.xls" à supprimer l'ensemble des onglets qu'il est inutile de transférer aux clients...

Est-il possible de générer un fichier à partir d'un unique onglet, ou une méthode permettant d'ajouter à un fichier excel externe modèle (que je préparerais alors en amont) le contenu filtré ?

Ci-joint la méthode transmise :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Sub edition()
 
For i = 2 To 83
 
    Sheets("INVAENVOY").Range("$A$3:$S$70000").AutoFilter Field:=3, Criteria1:=Sheets("Feuil3").Range("A" & i), Operator:=xlOr, Criteria2:="=X"
 
    ChDir "\\lurs\_partage\Maint\CIM\MEM\02 - Equipements\02 - Inventaires\01 - MEM\Inventaires 2019\test"
    Range("A1").Select
 
    DernLigne = Sheets("INVAENVOY").Range("A65536").End(xlUp).Row
    Sheets("INVAENVOY").Range("A1:R" & DernLigne).Copy
 
    'Workbooks.Add
    Sheets("Feuil1").Select
    Rows("1:1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
 
    Sheets("Feuil1").Select
 
    Rows("1:1").Select
    Selection.AutoFilter
    Cells.Select
    Cells.EntireColumn.AutoFit
 
    'ActiveSheet.Protect Password:="cimbat", DrawingObjects:=True, Contents:=True, Scenarios:=True _
    , AllowFormattingCells:=True, AllowFormattingColumns:=True, _
    AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
    AllowUsingPivotTables:=True
 
    ActiveWorkbook.SaveAs Filename:="\\lurs\_partage\Maint\CIM\MEM\02 - Equipements\02 - Inventaires\01 - MEM\Inventaires 2019\test\IGS 0" & Sheets("Feuil1").Range("C2") & " - Inventaire MEM 2019.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    'ActiveWorkbook.Close
 
    Sheets("Feuil1").Select
    Sheets("Feuil1").Range("A1:R" & DernLigne).Delete
 
Next
 
End Sub
D'avance, merci pour vos retours toujours éclairants !