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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <gbrelet@csc.com> wrote in message
news:OSknLOoLHHA.536@TK2MSFTNGP02.phx.gbl...
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
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