Boucle DO IF problème de comptage
Résolu
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
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
-
ContributeurBonjour,
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-êtreIf 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. -
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