[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.
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.