peut-on comparer des "#N/A" et des valeurs chiffrées ?

ter

XLDnaute Nouveau
Bonjour,

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 ?

Je vous remercie d'avance,
Ter
 

ROGER2327

XLDnaute Barbatruc
Re : peut-on comparer des "#N/A" et des valeurs chiffrées ?

Bonjour ter.


(...)

Excel considère qu'on ne peut pas comparer des "#N/A" avec des valeurs chiffrées.

(...)
C'est effectivement agaçant !
Rien trouvé de mieux que :​
VB:
(...)
If CStr(Cells(i, 2)) = CStr(Cells(i + 1, 2)) Then
(...)
J'espère que vous aurez de meilleures réponses !​


ROGER2327
#6796


Lundi 23 Phalle 140 (Lazare, gare - fête Suprême Quarte)
16 Fructidor An CCXXI, 6,8368h - citron
2013-W36-1T16:24:30Z
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : peut-on comparer des "#N/A" et des valeurs chiffrées ?

Bonsour®
Bonjour,

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
 

job75

XLDnaute Barbatruc
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
'-----
A+
 

ter

XLDnaute Nouveau
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).

Merci beaucoup !
 

job75

XLDnaute Barbatruc
Re : peut-on comparer des "#N/A" et des valeurs chiffrées ?

Bonjour ter, le fil,

En fait ma solution du post #6 ne présente guère d'intérêt.

Si les cellules ont des formats Nombre différents il vaut mieux utiliser la solution CStr de Roger2327.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg