Boucle dans une macro

Résolu
Bonjour,

j'ai besoin d'aide pour améliorer ma macro suivante :

Sub création_article()
'
' création_article Macro
' permet de créer les fichiers csv pour la création d'articles renaissance
'

'
Sheets("données").Select
Range("C9").Select
ActiveCell.FormulaR1C1 = "'01"

ChDir "C:\Users\heri101440\Documents\star\import_rencs\01"

Sheets("gl_accounts_new").Select
ActiveWorkbook.SaveAs Filename:="gl_accounts_new.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("gl_short_codes").Select
ActiveWorkbook.SaveAs Filename:="gl_short_codes.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("product_master_new").Select
ActiveWorkbook.SaveAs Filename:="product_master_new.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("product_warehouse_new").Select
ActiveWorkbook.SaveAs Filename:="product_warehouse_new.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("ic_product_status_new").Select
ActiveWorkbook.SaveAs Filename:="ic_product_status_new.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("sales_prices").Select
ActiveWorkbook.SaveAs Filename:="sales_prices.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("sales_price_lines").Select
ActiveWorkbook.SaveAs Filename:="sales_price_lines.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("str_profil_part_codes").Select
ActiveWorkbook.SaveAs Filename:="str_profil_part_codes.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("ic_product_master_units").Select
ActiveWorkbook.SaveAs Filename:="ic_product_master_units.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("part_uom_conversions").Select
ActiveWorkbook.SaveAs Filename:="part_uom_conversions.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("product_groups").Select
ActiveWorkbook.SaveAs Filename:="product_groups.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("sf_brands").Select
ActiveWorkbook.SaveAs Filename:="sf_brands.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("données").Select
Range("C9").Select
ActiveCell.FormulaR1C1 = "'04"

ChDir "C:\Users\heri101440\Documents\star\import_rencs\04"

Sheets("gl_accounts_new").Select
ActiveWorkbook.SaveAs Filename:="gl_accounts_new.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("gl_short_codes").Select
ActiveWorkbook.SaveAs Filename:="gl_short_codes.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("product_master_new").Select
ActiveWorkbook.SaveAs Filename:="product_master_new.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("product_warehouse_new").Select
ActiveWorkbook.SaveAs Filename:="product_warehouse_new.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("ic_product_status_new").Select
ActiveWorkbook.SaveAs Filename:="ic_product_status_new.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("sales_prices").Select
ActiveWorkbook.SaveAs Filename:="sales_prices.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("sales_price_lines").Select
ActiveWorkbook.SaveAs Filename:="sales_price_lines.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("str_profil_part_codes").Select
ActiveWorkbook.SaveAs Filename:="str_profil_part_codes.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("ic_product_master_units").Select
ActiveWorkbook.SaveAs Filename:="ic_product_master_units.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("part_uom_conversions").Select
ActiveWorkbook.SaveAs Filename:="part_uom_conversions.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("product_groups").Select
ActiveWorkbook.SaveAs Filename:="product_groups.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Sheets("sf_brands").Select
ActiveWorkbook.SaveAs Filename:="sf_brands.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

End Sub

ce code crée ces fichiers .csv dans les 2 répertoires 01 et 04 (01 et 04 étant des codes d'établissements), mais comme il y a encore 14 autres établissements, ma macro sera très longue.

comment faire pour créer une boucle, et à chaque boucle, on change la cellule C9 et le répertoire de destination?

merci d'avance.



--
fait est meilleur que parfait.

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,
    tu peut mettre un fichier exemple ?
    il faut voir si tes feuilles se suivent?
    les codes établissement aussi
    1. les feuilles se suivent comme dans ma macro, en commençant par données, ensuite gl_accounts_new, et ainsi de suite.
      les codes sont 01, 04, 05, 06, 07, 08, 09, 11, 12, 13, 17, 19, 21, 23, 24, 25.
      1. code à tester

        Sub création_article()
        '
        ' création_article Macro
        ' permet de créer les fichiers csv pour la création d'articles renaissance
        '

        Dim CodeEta As Variant
        Dim Onglet As String
        CodeEta = Array("01", "04", "05", "06", "07", "08", "09", "11", "12", "13", "17", "19", "21", "23", "24", "25")
        Sheets("données").Select
        Range("C9").Select
        For i = 0 To 16
        ActiveCell.FormulaR1C1 = "'" & CodeEta(i)

        ChDir "C:\Users\heri101440\Documents\star\import_rencs\" & CodeEta(i)
        For j = 2 To 13

        Sheets(j).Select
        Onglet = ActiveWorkbook.ActiveSheet.Name & ".csv"

        ActiveWorkbook.SaveAs Filename:=Onglet, FileFormat:=xlCSV, CreateBackup:=False, local:=True
        Next j
        Next i

        End Sub

        1. c'est bon après 2 petites rectifications :
          - j'ai mis sheets("donnée").select et range("c9").select après for i=0 ... sinon c'est la cellule qui a le curseur qui change de 01, 04, etc.
          - et 16 en 15, puisque si la numérotation commence par 0, elle se termine par 15.

          merci. super.
          1. ravi de t'avoir aidé