[VBA] - Boucle for qui s'arrête à la première ligne

Bonjour,

J'ai un problème avec mon code, une boucle for s'arrête dès la première ligne.

En utilisant F8, je vois bien le code s'arrête ici :

.Cells(i, 2) = colec(i)

Savez-vous d'où ça peut provenir ?

Voici le code en entier :

Option Explicit

Dim lf As Worksheet, tf As Worksheet
Dim S As Object
Dim lrtf&, lctf&, i&
Dim cib%, ii&
Dim tabl As Variant
Dim col As New Collection

Sub listingflore()
Set lf = Worksheets("Listing flore")
Set tf = Worksheets("Table flore")

lrtf = tf.Cells(Rows.Count, 1).End(xlUp).Row
lctf = tf.Cells(1, tf.Columns.Count).End(xlToLeft).Column

With tf
    'For cib = 1 To lctf
        'If tf.Cells(1, cib) = "LB_NOM" Then
                tabl = .Range("H2", "I" & lrtf) '(Cells(2, cib), Cells(lrtf, cib + 1))
     '   End If
    'Next cib

        'création collection
        On Error Resume Next
            For i = LBound(tabl, 1) To UBound(tabl, 1)
                If tabl(i, 1) > 0 Then
                    col.Add tabl(i, 1) & " " & tabl(i, 2), CStr(tabl(i, 1))
                End If
                'Exit For
            Next i
        On Error GoTo 0
    End With

'export collection dans resultat
If col.Count > 0 Then
    For i = 1 To col.Count
        'For ii = 1 To col.Count
        'Range("A1") = col.Count
        With lf
            .Cells(i, 2) = col(i)
        End With
            'tf.Activate
        'Next ii
    Next i
End If

End Sub

Je joins mon fichier test avec ça.

Sur internet, il est dit de bien vérifier que la boucle ne se poursuive pas dans l'autre feuille, mais ce n'est pas le cas normalement ; et le code s'arrête tout simplement à la ligne citée, rien de plus.

Je vous remercie de votre attention.

A plus tard

EDIT : Savez-vous s'il est également possible de faire fonctionner la partie qui variabilise la colonne

EDIT 2 : il faut penser à désactiver le Exit For dans fichier que j'ai transmis

    'For cib = 1 To lctf
        'If tf.Cells(1, cib) = "LB_NOM" Then
                tabl = .Range(Cells(2, cib), Cells(lrtf, cib + 1)) '("H2", "I" & lrtf)
     '   End If
    'Next cib

Quand je m'y prends comme ça, j'ai une erreur.

6text04.xlsm (30.62 Ko)

Bonjour,

J'ai copié-collé le code dans un nouveau sub pour travailler sur une table plus grande ; désormais tout fonctionne... c'est étrange.

Bonjour,

dans Private Sub CommandButton1_Click() de l'USF, on trouve ce code:

.../...
            For i = LBound(tabl, 1) To UBound(tabl, 1)
                If tabl(i, 1) > 0 Then
                    col.Add tabl(i, 1) & " " & tabl(i, 2), CStr(tabl(i, 1))
                End If
                Exit For 'contrairement au code présenté dans le post 1 cette ligne n'est pas en commentaire
            Next i
.../...

dès la première itération, on rencontre l'instruction Exit For ; donc la boucle ne va pas plus loin! Et on aura au mieux un seul élément dans la collection. Donc col.count = 1 !

    For i = 1 To col.Count

la boucle va tourner de 1 à ... 1 , donc une seule itération

A+

Bonjour,

Oui, c'est pour ça que je précisais dans mon premier post

EDIT 2 : il faut penser à désactiver le Exit For dans fichier que j'ai transmis

J'avais mis Exit For, pour ne pas avoir à répéter 96 000 fois la boucle (en utilisant F8), j'activais Exit For au bout de quelques lignes et je regardais ce qui se passait ensuite. Et j'ai oublié de l'enlever dans le document que j'ai transmis. L'erreur ne provenait, a priori, pas de cette ligne ; mais elle n'apparaît plus désormais.

Rechercher des sujets similaires à "vba boucle qui arrete premiere ligne"