Boucle DO IF problème de comptage

Résolu
Nuadhu Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Nuadhu Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je viens de faire une petite macro qui doit comptabiliser les valeurs dans une colonne qui sorte d'une fourchette j'ai donc pondu la boucle suivante :

Dim NB_RELEVE_CRIT As Integer
Dim i As String
i = 2
Do
If 20 < Sheets(Onglet).Cells(i, 8).Value < 40 Then 'Fourchette de valeur pour la terre'


Else

If Sheets(Onglet).Cells(i, 6).Value = "Terre des masses" Or Sheets(Onglet).Cells(i, 6).Value = "Terre du neutre" Then
NB_RELEVE_CRIT = NB_RELEVE_CRIT + 1
End If

End If
i = i + 1

Loop While Sheets(Onglet).Cells(i, 7).Value = ""

Sheets("Indicateurs").Range("E30") = NB_RELEVE_CRIT

En gros I est en string car je dépasse les 33000 lignes les valeur sont dans la colonne 8 je dois les comptabiliser seulement si ce sont des terre du neutre ou terre des masses (colonne 6 ).

Quand je lance la macro tout fonctionne sauf que le résultat final est 0 dans la case E30 ???

Ps: Onglet est une variable définit auparavant

Merci d'avance pour vos réponses éclairées.



Windows 7 / Firefox 6.0.2

2 réponses

lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Déjà, si tu dépasse les 33000...
Dim NB_RELEVE_CRIT As Long   
Dim i As Long

et ça va jamais fonctionner...
If 20 < Sheets(Onglet).Cells(i, 8).Value < 40 Then 'Fourchette de valeur pour la terre' 

Ce qui revient à dire Si 20 < 0 ou Si 20 < -1 Ce qui n'arrivera jamais.
Explique cette ligne
A+
EDIT en relisant.. peut-être
If Sheets(Onglet).Cells(i, 8).Value > 20 And Sheets(Onglet).Cells(i, 8).Value < 40 Then 'Fourchette de valeur pour la terre'

Et enlève le "else"
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Nuadhu Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse rapide =)

J'ai modifié en

If Sheets(Onglet).Cells(i, 8).Value > 40 Or Sheets(Onglet).Cells(i, 8).Value < 20

Car il faut sortir de la fourchette pour être comptabilisé.

Mais la valeur final de mon NB_RELEVE_CRIT est de 1 maintenant alors qu'elle devrait être bien supérieur

J'ai remarqué mon erreur j'ai mis des boucles While alors qu'il me faut des Until Merci de ton aide =D
0