Bonjour à tous
Je vous sollicite aujourd'hui car je n'arrive pas à trouver la bonne combinaison d'opérateur logique pour compter des éléments en tenant compte de nombreux critères.
J'explique !
Je veux compter le nombre d'éléments compris ds un intervalle de temps donné.
J'ai dû préalablement faire une différence entre deux dates.Cette différence est en années, en mois et en jours.
N.B: pour chaque unité de temps il y a une colonne de référence. Il y a donc une colonne pour les années, une colonne pour les mois et une colonne pour les jours.
Les critères sont les suivants:
- x<= 1 mois;
- 1<x<=6 mois;
- 6<x<=12 mois;
- x>12 mois.
En faite je souhaite compter le nombre ligne correspondant à plusieurs critère.
Par exemple ligne 2: pour le critère 1 mois < x <= 6 mois, x élement compris dans l'intervalle de temps défini.
ligne 2 Colonne A: contenu doit commencer par "TH*"
ligne 2 Colonne S: contenu doit être égale à "BRIVE"
ligne 2 Colonne AQ(années): contenu doit être égale à 0.
ligne 2 colonne AR (mois): contenu doit être égale à une valeur comprise dans l'intervalle [1;6] mois.
ligne 2 colonne AS (jours): contenu doit être égale à une valeur comprise dans l'intervalle [0;30]jours.
sauf que dés lors qu'on a 6mois il faut obligatoirement 0jours!
alors que quand il y a 1 mois les jours peuvent varier de 0 à 30 jours.
Ainsi c'est une véritable logique à adopter!
Mon code est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Dim B1 As Range, btr1 As Long Set DateRange = Range([A1], Cells(Rows.Count, 1).End(xlUp)) For Each B1 In DateRange If B.Value Like "TH*" Then If (B1.Offset(, 42).Value = 0) And (B1.Offset(, 43).Value >= 1) And B1.Offset(, 44).Value <= 30 Xor _ (B1.Offset(, 44).Value <= 6) And B1.Offset(, 44).Value <= 0 Then btr1 = btr1 + 1 End If End If Next B1
J'ai essayé les opérateurs logiques Or ou Xor; mais je pense que c'est mon code qui n'est pas assez structurer pour répondre totalement au critère correspondant.
En fait le code précédent ne prend pas en compte tout les résultats possibles, j'ai l'impression...
Pouvez-vous m'aider à résoudre ce problème?
Je vous remercie d'avance pour vos réponses.
Cordialement
Tiviia
Partager