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) :
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.
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
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.
Partager