Alimentation tableau temporaire [VBA]
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:
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.