Boucle DO IF problème de comptage

Résolu
Nuadhu Messages postés 2 Statut Membre -  
Nuadhu Messages postés 2 Statut Membre -
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

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  2. Nuadhu Messages postés 2 Statut Membre
     
    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