Excel considère qu'on ne peut pas comparer des "#N/A" avec des valeurs chiffrées.
Du coup, quand dans une formule j'écris :
Code:
For i = 2 to 100 000
If Cells(i, 2) = Cells(i + 1, 2) Then
[...]
endif
next i
Le code ne veut pas continuer dès qu'il trouve un N/A. Pour autant, je considère que si dans la ligne d'au-dessus j'ai un chiffre du style 7200 et que dans la ligne d'en dessous j'ai "#N/A" que ce ne sont pas les mêmes valeurs...
On peut toujours mettre un IF Iserror=false, mais quand on doit en manipuler beaucoup, ça devient vite compliqué (j'ai douze if imbriqué dans un code à présent...)
Ce problème m'est vraiment récurrent, et ne se limite pas à ce seul exemple.
N'y a-t-il vraiment pas moyen de faire en sorte qu'excel prenne #N/A comme une suite de lettre quelconque, et non comme un résultat d'une erreur ?
Excel considère qu'on ne peut pas comparer des "#N/A" avec des valeurs chiffrées.
Du coup, quand dans une formule j'écris :
Code:
For i = 2 to 100 000
If Cells(i, 2) = Cells(i + 1, 2) Then
[...]
endif
next i
Le code ne veut pas continuer dès qu'il trouve un N/A. Pour autant, je considère que si dans la ligne d'au-dessus j'ai un chiffre du style 7200 et que dans la ligne d'en dessous j'ai "#N/A" que ce ne sont pas les mêmes valeurs...
il faut mettre en place un traitement d'erreur...(voir aide en ligne)
On Error Goto TrtErr
For ....
IF ....
[...]
End if
Next
Exit sub
TrtErr:
'il convient ici de traiter les cas d'erreur identifiés
' et modifier le déroulement de la proc
par un resume ..., un goto ou traitement approprié
End Sub
la routine TrtErr doit être la dernière avant le End sub
Re : peut-on comparer des "#N/A" et des valeurs chiffrées ?
Re,
La solution précédente suppose, pour les nombres, que les cellules sont au même format.
C'est normalement le cas quand elles sont, comme ici, dans une même colonne.
Sinon on peut toujours utiliser :
Code:
Dim i&, a, b
'-----
If IsError(Cells(i, 2)) Then a = Cells(i, 2).Text Else a = Cells(i, 2)
If IsError(Cells(i + 1, 2)) Then b = Cells(i + 1, 2).Text Else b = Cells(i + 1, 2)
If a = b Then
'-----
Re : peut-on comparer des "#N/A" et des valeurs chiffrées ?
Bonjour,
Ta solution Modeste geedee me semble au moins aussi longue que si je mettais des if Error()=true avant chacun de mes "if". Pour autant, c'est peut-être la solution la plus générale dans d'autres cas sans plusieurs boucles if imbriquées.
La solution de Roger et de job75 résolvent mon problème, merci. Effectivement, pour ce cas-ci, les cellules étaient aux mêmes formats, mais il est vrai que dans d'autres cas, j'aurais eu (et probablement "vais avoir" besoin du complément apporté par job75).