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 :
Ceci me permet d'avoir un fichier CSV par société (AA - BB...)
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
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,
Partager