Bonjour à tous,
J'utilise actuellement une macro me permettant de copier certaines colonnes d'un classeur, de les coller dans un nouveau classeur, de les trier et de supprimer les retour à la ligne. La macro enregistre ensuite le fichier en format texte pour la fusion de données dans Indesign.
Voici le code :
Sub Ref_Service()
ActiveSheet.Range("$A$1:$AK$1224").AutoFilter Field:=23, Criterial:="SADD"
Range("D:G,K:K,L:L,O😛,U:U,V:V,X:X,AA:AB,AD:AD").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Rows("1:1").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A2:A240") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("K2:K240") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("J2:J240") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("D2😀240") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:N240")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Cells.Replace What:=Chr(10), Replacement:=" - ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Columns("D😀").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Range("B1").Select
ActiveCell.FormulaR1C1 = "Fin"
ActiveWorkbook.SaveAs Filename:= _
"G:\\SADD.txt" _
, FileFormat:=xlText, CreateBackup:=False
End Sub
J'imagine qu'il y a 1000 façons d'améliorer cette macro mais à mon niveau, je n'ai pas trouvé d'autres méthodes.
Voila ma question :
Je souhaiterais répéter cette macro afin qu'elle fasse le travail pour chaque critère de la colonne, c'est à dire que la macro change automatiquement le critère de filtre et enregistre le document avec le nom du critère.
En clair : faire un changement automatique des lignes :
ActiveSheet.Range("$A$1:$AK$1224").AutoFilter Field:=23, Criterial:="SADD" et :
ActiveWorkbook.SaveAs Filename:= _
"G:\\SADD.txt" _
Je ne peux pas joindre le document Excel car c'est un document de travail et il est confidentiel.
Est ce que cette opération est possible sans passer par x copier coller de la macro en changeant les noms manuellement ?
En vous remerciant grandement de votre aide !
J'utilise actuellement une macro me permettant de copier certaines colonnes d'un classeur, de les coller dans un nouveau classeur, de les trier et de supprimer les retour à la ligne. La macro enregistre ensuite le fichier en format texte pour la fusion de données dans Indesign.
Voici le code :
Sub Ref_Service()
ActiveSheet.Range("$A$1:$AK$1224").AutoFilter Field:=23, Criterial:="SADD"
Range("D:G,K:K,L:L,O😛,U:U,V:V,X:X,AA:AB,AD:AD").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Rows("1:1").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A2:A240") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("K2:K240") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("J2:J240") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("D2😀240") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:N240")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Cells.Replace What:=Chr(10), Replacement:=" - ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Columns("D😀").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Range("B1").Select
ActiveCell.FormulaR1C1 = "Fin"
ActiveWorkbook.SaveAs Filename:= _
"G:\\SADD.txt" _
, FileFormat:=xlText, CreateBackup:=False
End Sub
J'imagine qu'il y a 1000 façons d'améliorer cette macro mais à mon niveau, je n'ai pas trouvé d'autres méthodes.
Voila ma question :
Je souhaiterais répéter cette macro afin qu'elle fasse le travail pour chaque critère de la colonne, c'est à dire que la macro change automatiquement le critère de filtre et enregistre le document avec le nom du critère.
En clair : faire un changement automatique des lignes :
ActiveSheet.Range("$A$1:$AK$1224").AutoFilter Field:=23, Criterial:="SADD" et :
ActiveWorkbook.SaveAs Filename:= _
"G:\\SADD.txt" _
Je ne peux pas joindre le document Excel car c'est un document de travail et il est confidentiel.
Est ce que cette opération est possible sans passer par x copier coller de la macro en changeant les noms manuellement ?
En vous remerciant grandement de votre aide !