Bonjour,

Dans un tableau:
  • je parcours toutes les lignes les unes après les autres (for indiceLigne = 1 to valeurCible)
  • en fonction du contenu de la cellule (ligne, G), je dois ou non rajouter un certain nombre de lignes (if cells(indiceLigne)<>0 then Rows(indiceLigne + 1).Resize(valeur).Insert Shift:=xlDown)
  • lorsque j'ai rajouté des lignes, j'incrémente d'autant la valeur de mon indiceLigne et de la valeurCible (indiceLigne = indiceLigne+valeur et valeurCible = vleurCible+valeur)


malheureusement, lorsque je teste ma macro, la boucle for se termine dès lors que l'indiceLigne est supérieur à la valeur initiale de valeurCible.

Voici le code:
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
 
Private Function RealLastLine(sheetArea As Range) As Long
   If WorksheetFunction.CountA(sheetArea) = 0 Then RealLastLine = 1: Exit Function
   RealLastLine = sheetArea.Find("*", , , , , xlPrevious).Row
End Function
 
Sub SplitArticles()
    Sheets("Feuil2").Select
    rowEnd = RealLastLine(Sheets("Feuil2").Cells)
    For rowVar = 5 To rowEnd
        partName = Split(Cells(rowVar, 7), " - ")
        nbOption = UBound(partName)
        If nbOption <> 0 Then
            Rows(rowVar + 1).Resize(nbOption).Insert Shift:=xlDown
            rowVar = rowVar + nbOption
            rowEnd = rowEnd + nbOption
        End If
    Next
End Sub
Lorsque je vérifie les variables locales, je ne détecte aucune erreur.
Le tableau de la "Feuil2" contient en colonne 7 (G) des données du type : item1 - item2 - item3... comme suit :
A B C D E F G
text text text text text text item1 - item2 - item3 - item4
text text text text text text item1
text text text text text text item1 - item2
text text text text text text item1 - item2 - item3
et la macro est censée rajouter après la ligne autant de ligne supplémentaire que de séparation " - ".

Je suppose que la solution est assez trivial, mais une fois de plus je butte.
Merci pour votre aide
- crissc -