Boucle pour alléger le code

msingle

XLDnaute Junior
Bonjour,

Je ne parviens pas à créer une boucle pour alléger mon code (Excel me signale que le code dépasse 64k).

Le problème :

J'importe des commandes d'un site ecommerce de tshirts personnalisés.

Chaque commande se trouve sur une ligne, mais peut comporter un nombre variable d'articles (jusqu'à 10).

Je dois donc les "transposer" afin de pouvoir créer un fichier de fabrication comportant 25 champs.

Voici un extrait de mon code :
Code:
Sub test()
    'teste si déjà mis en fabrication
        nbrlignes = Application.WorksheetFunction.CountA(Feuil4.Range("$A:$A"))
        ActiveSheet.Range("$A$8:$FJ" & nbrlignes + 7).AutoFilter Field:=166, Criteria1:="=" ' le champ FJ doit être vide
        lastfilterrow = Range(["A65535"]).End(xlUp).Row
        If lastfilterrow > 8 Then 'les données commencent à partir de la ligne 9
    'copie de l'article 1 :
            ActiveSheet.Range("$A$8:$FJ" & nbrlignes + 7).AutoFilter Field:=37, Criteria1:="<>"
            lastfilterrow = Range(["A65535"]).End(xlUp).Row
            Range("S9:S" & Range("S" & Rows.Count).End(xlUp).Row).Copy 'nom
            Sheets("Fabrication").[B65000].End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        End If
    'copie de l'article 2 :
            ' à chaque changement d'article, on décale le champ à filtrer de 13 colonnes. Dans ce cas, on passe de 37 à 50.
            ActiveSheet.Range("$A$8:$FJ" & nbrlignes + 7).AutoFilter Field:=50, Criteria1:="<>"
            lastfilterrow = Range(["A65535"]).End(xlUp).Row
        If lastfilterrow > 8 Then
            Range("S9:S" & Range("S" & Rows.Count).End(xlUp).Row).Copy 'nom
            Sheets("Fabrication").[B65000].End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        End If
    'copie de l'article 3 :
            ' on décale de 50 à 63 (+13)
            ActiveSheet.Range("$A$8:$FJ" & nbrlignes + 7).AutoFilter Field:=63, Criteria1:="<>"
            lastfilterrow = Range(["A65535"]).End(xlUp).Row
        If lastfilterrow > 8 Then
            Range("S9:S" & Range("S" & Rows.Count).End(xlUp).Row).Copy 'nom
            Sheets("Fabrication").[B65000].End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        End If
' etc., etc.... jusqu'à 10 commandes
End Sub

Pouvez-vous m'aider à créer la boucle qui simplifiera mon code?

Merci d'avance
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 220
Messages
2 086 381
Membres
103 199
dernier inscrit
ATS1