OVH Cloud OVH Cloud

Comptage d'intervalles à partir d'un tableau

1 réponse
Avatar
Georges
Bonjour,
Je souhaite lister les intervalles (en nombre de jours) entre des événements
dans un tableau contenant les données suivantes :
- En colonne : les dates de l'année ;
- En cellule : un caractère ("M" en l'occurrence) qui indique qu'un
événement a eu lieu.
Ex : si j'ai un "M" dans les colonnes du 01/01/06, du 13/01/06, du 19/01/06
et du 28/01/06, cela doit me donner 13 (entre le 01 et le 13), 7 (entre le
13 et le 19) et 10 (entre le 19 et le 28).
De plus, les intervalles doivent se retrouver dans une seule colonne sur
plusieurs lignes, mais sans espace.
Je voudrais répéter cela pour plusieurs lignes (environ 50).
Merci pour les conseils.
Georges

1 réponse

Avatar
h2so4
bonsoir,

il y a sans doute une solution sans passer par vba, mais voici une solution
VBA :

Sub dibM()
Dim startdate, endate As Date

'parametre à changer en fonction
'colm= numero de la colonne contenant les M

colm = 2
'coldate numero de la colonne contenant les dates

coldate = 1
'coltarget numero de la colonne où mettre les résultats

coltarget = 3
'feuil = nom ou numero de la feuille (doit exister)

feuil = "Feuil1"
' nligne = nombre de lignes à prendre en considération pour la colonne
contenant les M

nligne = 100


For i = 1 To nligne
If Sheets(feuil).Cells(i, colm) = "M" Then
If startdate = "" Then
startdate = Sheets(feuil).Cells(i, coldate)
Else
enddate = Sheets(feuil).Cells(i, coldate)
d = d + 1
Sheets(feuil).Cells(d, coltarget) = enddate - startdate

startdate = enddate
End If
End If
Next i

"Georges" wrote in message
news:
Bonjour,
Je souhaite lister les intervalles (en nombre de jours) entre des
événements
dans un tableau contenant les données suivantes :
- En colonne : les dates de l'année ;
- En cellule : un caractère ("M" en l'occurrence) qui indique qu'un
événement a eu lieu.
Ex : si j'ai un "M" dans les colonnes du 01/01/06, du 13/01/06, du
19/01/06
et du 28/01/06, cela doit me donner 13 (entre le 01 et le 13), 7 (entre le
13 et le 19) et 10 (entre le 19 et le 28).
De plus, les intervalles doivent se retrouver dans une seule colonne sur
plusieurs lignes, mais sans espace.
Je voudrais répéter cela pour plusieurs lignes (environ 50).
Merci pour les conseils.
Georges