Bonjour à toutes et à tous,

Dans une macro, je souhaite extraire des données d'un tableau et les réécrire en fonction d'une variable (un paquet) dans des lignes différentes au besoin.

Exemple : une ligne avec une valeur "quantité" = 100 à séparer en 3 lignes de 30 et une ligne de 10 (pour arriver au même total).

Voici donc la macro que j'ai écrite ("Option Explicit" inscrit en début, je vous épargne donc toutes les variables définies) :

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
Dim r As Integer ' N° de ligne en-cours en lecture
Dim l As Integer ' N° de ligne en-cours en écriture
 
l = 2
For r = 2 To ligFin
     ligDat = Cells(r, colDat).Value
     ligCde = Cells(r, colCde).Value
     ligGen = Cells(r, colEan).Value
     ligPcb = Cells(r, colPcb).Value
     ligRec = Cells(r, colQte).Value
 
ligEcr:
     If ligRec <= ligPcb Then
         tabTmp(l, 1) = ligDat
         tabTmp(l, 2) = ligCde
         tabTmp(l, 3) = ligGen
         tabTmp(l, 4) = ligPcb
         tabTmp(l, 5) = ligRec
     GoTo ligSui
 
     ElseIf ligRec > ligPcb Then
         tabTmp(l, 1) = ligDat
         tabTmp(l, 2) = ligCde
         tabTmp(l, 3) = ligGen
         tabTmp(l, 4) = ligPcb
         tabTmp(l, 5) = ligPcb
         ligRec = ligRec - ligPcb
         l = l + 1
     GoTo ligEcr
     End If
 
ligSui:
      Next r
Il passe en premier dans la boucle "ElseIf" (car la quantité totale est supérieur à la quantité d'un paquet donc nécessité de créer plusieurs lignes) puis bloque lorsqu'il repasse dans la boucle " If ligRec <= ligPcb Then" pour écrire la dernière ligne.
Je me retrouve avec une "Erreur d'exécution 9 : l'indice n'appartient pas à la sélection" sur la ligne "tabTmp(l, 1) = ligDat".

Je pense que cela vient de "l = l + 1" qui pour moi devait me servir à écrire sur une ligne différente que la ligne de lecture d'origine mais je ne trouve pas la solution.

Merci d'avance pour vos éclaircissements.