Bonjour au forum,

Je suis ici car j'ai un souci concernant une boucle qui s'arrête avant d'avoir atteint la fin de ma colonne.
Ma colonne a environ 21 000 lignes à la base. Chaque ligne étant un article.
(Donc ma boucle, au départ va de i=2 to FinFeuilleFinale. "FinFeuilleFinale" étant égale à la dernière ligne remplie)
Un article peut être composé d'autres articles, ce sont ces articles là que je cherche à placer dans ma feuille, afin d'obtenir un résumé des nomenclatures.

Je regarde un article, et si il est composé d'autres articles, alors je copie ces derniers et je les place dans ma colonne, ce qui RALLONGE ma colonne.
Si je rajoute un article, je réaffecte la fin de mon tableau dans ma variable "FinFeuilleFinale" qui augmente en fonction du nombre de ligne rajoutées.

Une illustration s'impose :

Nom : capture_problemeboucle.PNG
Affichages : 982
Taille : 29,7 Ko et j'obtiens Nom : capture_boucle2.PNG
Affichages : 968
Taille : 27,4 Ko

En mode debug, ma variable "FinFeuilleFinale" s'incrémente bien.
Cependant, le "i" de mon "For" s'arrête à la valeur qui a été attribuée au départ à "FinFeuilleFinale" , soit 21 000 environs.

En soit ma boucle ne va pas au delà de 21 000 même en re-définissant cette variable et je me demande pourquoi.
Je met le code associé.
En espérant avoir été clair.

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Sub Generer_Nomenclature()
Application.ScreenUpdating = False
'--------------------Déclarations des variables----------------------------
Dim NumeroGamme As String
Dim FeuilleArticle As Worksheet, FeuilleNomenclature As Worksheet, FeuilleFinale As Worksheet
Dim i As Integer, FinTableauArticle As Integer, Niveau As Integer, Decalage As Integer
Dim FinTableauNomenclature As Long, FinFeuilleFinale As Long, Ligne As Long
Dim ZoneDeRecherche As Range, Trouver As Range
Dim Adresse As String
 
'-----------Attributions des feuilles Excel aux variables------------------
Set FeuilleArticle = Worksheets("GPARTICL")
Set FeuilleNomenclature = Worksheets("GPNOMENC")
Set FeuilleFinale = Worksheets("Nomenclature")
'--------------------------------------------------------------------------
 
FinTableauArticle = FeuilleArticle.Cells(50000, 1).End(xlUp).Row
FinTableauNomenclature = FeuilleNomenclature.Cells(50000, 6).End(xlUp).Row
 
'On copie la première colonne de la feuille GPARTICL avant de commencer le traîtement
'et on attribue le nombre de ligne de la feuille Nomenclature dans "FinFeuilleFinale"
FeuilleFinale.Columns(1).Value = FeuilleArticle.Columns(1).Value
FinFeuilleFinale = FeuilleFinale.Cells(50000, 1).End(xlUp).Row
Niveau = 0
Decalage = 1
'---------------------------Début du traîtement----------------------------
Niveau = Niveau + 1
For i = 2 To FinFeuilleFinale
NumeroGamme = FeuilleFinale.Cells(i, 1).Value
   If NumeroGamme <> "" Then
        Set ZoneDeRecherche = FeuilleNomenclature.Columns(32)
        Set Trouver = ZoneDeRecherche.Cells.Find(what:=NumeroGamme, LookAt:=xlWhole)
 
            If Trouver Is Nothing Then
 
            Else
        ' On repère sur quelle ligne se trouve le numéro du produit de la nomenclature en cours
            FeuilleNomenclature.Activate
            Adresse = Trouver.Address
            Range(Adresse).Select
            Ligne = ActiveCell.Row
 
        'Une fois repérée, on copie le numéro du produit dans notre feuille Nomenclature
 
            While FeuilleNomenclature.Cells(Ligne, 32).Value = NumeroGamme
 
            FeuilleFinale.Activate
            FeuilleFinale.Rows("" & i + Decalage & ":" & i + Decalage & "").Select
            Selection.Insert Shift:=xlDown
            FeuilleFinale.Cells(i + Decalage, 1 + Niveau).Value = FeuilleNomenclature.Cells(Ligne, 6).Value
            Ligne = Ligne + 1
            Decalage = Decalage + 1
 
            Wend
            Decalage = 1
            End If
            FinFeuilleFinale = FeuilleFinale.Cells(50000, 1).End(xlUp).Row
    End If
    FinFeuilleFinale = FeuilleFinale.Cells(50000, 1).End(xlUp).Row
Next
Application.ScreenUpdating = True
End Sub
Bonne journée à tous.
Cordialement.