Bonjour

Je cherche a optimiser une macro que j'ai fait.

Celle ci me sert a créer des fichiers d'écriture en CSV pour les intégrer dans un logiciel.

Mon fichier génère un groupe d'écriture qu'il faut scinder en fonction de la société (colonne N). En fonction de la date, cette liste de société est variable.

Voici ce que j'utilise :

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Sub ECRITURE_CSV()
 
' Ecriture CSV
        Sheets("ECRITURE").Activate
        DerniereLigne = ActiveSheet.UsedRange.Rows.Count
        Range("A1:N" & DerniereLigne).Copy
        Workbooks.Add
        Range("A1").Select
        ActiveSheet.Paste
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Range("A1").Select
 
 
 
 
 
    'nom du fichier
 
 
 
        Dim stDateHeureExport As String
        stDateHeureExport = "_" & _
        Format(Now, "dd-mm-yyyy" & " à " & _
"hh""h""mm""'""ss""''""")
 
        Dim Libelle As String
        Libelle = InputBox("Libelle ?", "Titre") 'La variable reçoit la valeur entrée dans l'InputBox
        If resultat <> "" Then 'Si la valeur est différente de "" on affiche le résultat
        MsgBox resultat
        End If
 
 
 
 
 
'AA
        Sheets("Feuil1").Select
        Range("A1:N1").Select
        Selection.AutoFilter
        Selection.AutoFilter Field:=14, Criteria1:="AA"
        DerniereLigne = ActiveSheet.UsedRange.Rows.Count
        Range("A1:N" & DerniereLigne).Copy
    'ouverture du classeur
        Workbooks.Add
        Range("A1").Select
        ActiveSheet.Paste
 
Site = Range("N2").Value
        NomCompletFichier = Libelle & "_" & Site & "_" & stDateHeureExport
 
        chemin = "Z:\Service Support\Comptabilité\Z_FICHIER IMPORTATION CSV\"
 
        ActiveWorkbook.SaveAs Filename:=chemin & NomCompletFichier, FileFormat:=xlCSV, local:=True
 
        ActiveWorkbook.Close SaveChanges:=False
 
'BB
        Sheets("Feuil1").Select
        Range("A1:N1").Select
        Selection.AutoFilter
        Selection.AutoFilter Field:=14, Criteria1:="BB"
        DerniereLigne = ActiveSheet.UsedRange.Rows.Count
        Range("A1:N" & DerniereLigne).Copy
    'ouverture du classeur
        Workbooks.Add
        Range("A1").Select
        ActiveSheet.Paste
 
    'nom du fichier
 
 Site = Range("N2").Value
         NomCompletFichier = Libelle & "_" & Site & "_" & stDateHeureExport
 
        chemin = "Z:\Service Support\Comptabilité\Z_FICHIER IMPORTATION CSV\"
 
        ActiveWorkbook.SaveAs Filename:=chemin & NomCompletFichier, FileFormat:=xlCSV, local:=True
 
        ActiveWorkbook.Close SaveChanges:=False
 
...
 
End Sub
Ceci me permet d'avoir un fichier CSV par société (AA - BB...)

Ce qui j'imagine :

Copier coller ma colonne N (société) a un endroit, supprimer les doublons.
ensuite, venir chercher le "Criteria1" dans cette liste et pour chaque critère générer le fichier CSV.

Je pense qu'il faut faire un truc pour compter le nombre de critère et ensuite faire une boucle. mais j'y arrive pas

Je vous remercie d'avance pour votre aide.

Bonne journée,