Le mystère de la Boucle For Each
Bonjour à tous,
En préambule, je précise que je n'ai pas de problème à résoudre, j'ai une solution qui fonctionne, mais j'aimerais soumettre le problème suivant à votre sagacité.
Dans un code que je viens d'écrire j'avais une première version qui lit le contenu d'une feuille avec une boucle For Each (ligne). Ma feuille de test contient 8 lignes. L'objectif est de lire 3 critères par ligne pour déterminer la nature de la ligne. La boucle For Each lit bien les données jusqu'à la ligne 4 puis ne trouve plus les informations. J'ai modifié mon code pour faire un For avec un compteur et là tout se passe bien. Ci-dessous les deux codes de test et le résultat de la console.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
Set wbkNewedge = Workbooks.Open(strFileName)
Set rgeDataNewedge = wbkNewedge.Sheets(1).Cells(1, 1).CurrentRegion
Debug.Print "Adresse de la plage = " & rgeDataNewedge.Address
' NOUVEAU 06/11/2017
' A chaque ligne du fichier NE
' on regarde si c'est une transaction, une position ou une valo
' on écrit dans la colonne 2 le résultat
Debug.Print "======== Boucle For Compteur Next ======="
For i = 1 To rgeDataNewedge.Rows.Count
Debug.Print "Ligne : " & i & " -> " & rgeDataNewedge.Cells(i, 2).Value & " " & rgeDataNewedge.Cells(i, 4).Value & " " & rgeDataNewedge.Cells(i, 117).Value
Next i
Debug.Print vbCrLf
Debug.Print "======== Boucle For Each Next ==========="
For Each rgeRow In rgeDataNewedge.Rows
Debug.Print "Ligne : " & rgeRow.Row & " -> " & rgeRow.Cells(rgeRow.Row, 2) & " " & rgeRow.Cells(rgeRow.Row, 4) & " " & rgeRow.Cells(rgeRow.Row, 117)
' If ValueOfType(strType, rgeRow) Then
' rgeRow.Cells(rgeRow.Row, 2).Value = strType
' End If
Next rgeRow |
Adresse de la plage = $A$1:$DN$8
======== Boucle For Compteur Next =======
Ligne : 1 -> Message Type Lifecycle Event Eulite Level
Ligne : 2 -> Trade State New T
Ligne : 3 -> Trade State New T
Ligne : 4 -> Trade State New T
Ligne : 5 -> Trade State New T
Ligne : 6 -> Trade State New T
Ligne : 7 -> Trade State New T
Ligne : 8 -> Trade State Modify P
======== Boucle For Each Next ===========
Ligne : 1 -> Message Type Lifecycle Event Eulite Level
Ligne : 2 -> Trade State New T
Ligne : 3 -> Trade State New T
Ligne : 4 -> Trade State New T
Ligne : 5 ->
Ligne : 6 ->
Ligne : 7 ->
Ligne : 8 ->
C'est le grand mystère mystérieux de la semaine... Quelqu'un aurait il une idée de ce qui cloche ? Par avance, je précise que nous avons passé le classeur source au crible et que les données semblent absolument kasher...
Merci par avance pour votre temps et vos réponses.
Guillaume.