| Par AURELIE, le 02 Déc 2006, 12:45 |
Revenir en haut de page |
|
Bonjour,
Voilà la macro que j'ai créer.pas de problèmes elle fonctionne.elle calcule bien les differentes zone
J'aimerai ajouter à cette macro une fonction qui me permettrait en plus de voir visuellement (la case serait colorée) toutes les cases ou l'année en cours apparait .
Pouvez vous m'aider
merci d'avance
| Code: | Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée
'
i = 5
While Cells(i, 1) <> ""
JSN = 0
JSPV = 0
datdebsn = Cells(i, 3)
datfinsn = Cells(i, 4)
datdebspv = Cells(i, 6)
datfinspv = Cells(i, 7)
datdebspp = Cells(i, 9)
datfinsppnorm = DateAdd("yyyy", 20, datdebspp)
datfinsppnorm1 = DateAdd("yyyy", 25, datdebspp)
datfinsppnorm2 = DateAdd("yyyy", 30, datdebspp)
'pas de SPP
If datdebspp = "" Then
Cells(i, 10) = datdebpp
Cells(i, 11) = datdebspp
Cells(i, 12) = datdebspp
End If
' SPP
If datdebspp <> "" Then
'pas de SN, pas de SPV
If datdebsn = "" And datdebspv = "" Then
Cells(i, 10) = datfinsppnorm
Cells(i, 11) = datfinsppnorm1
Cells(i, 12) = datfinsppnorm2
End If
'pas de SN et SPV
If datdebsn = "" And datdebspv <> "" Then
If datdebspv < datdebspp And datfinspv <= datdebspp Then
JSPV = DateDiff("d", datdebspv, datfinspv)
JSN = 0
End If
If datdebspv < datdebspp And datfinspv > datdebspp Then
JSPV = DateDiff("d", datdebspv, datdebspp)
JSN = 0
End If
nbjour = -JSPV
Cells(i, 10) = DateAdd("d", nbjour, datfinsppnorm)
Cells(i, 11) = DateAdd("d", nbjour, datfinsppnorm1)
Cells(i, 12) = DateAdd("d", nbjour, datfinsppnorm2)
End If
'SN et pas de SPV
If datdebsn <> "" And datdebspv = "" Then
If datdebsn < datdebspp And datfinsn <= datdebspp Then
JSN = DateDiff("d", datdebsn, datfinsn)
JSPV = 0
End If
If datdebsn < datdebspp And datfinsn > datdebspp Then
JSN = DateDiff("d", datdebsn, datdebspp)
JSPV = 0
End If
nbjour = -JSN
Cells(i, 10) = DateAdd("d", nbjour, datfinsppnorm)
Cells(i, 11) = DateAdd("d", nbjour, datfinsppnorm1)
Cells(i, 12) = DateAdd("d", nbjour, datfinsppnorm2)
End If
'SN et SPV
If datdebsn <> "" And datdebspv <> "" Then
'SN avant SPV sans chevauchement
If datfinsn <= datdebspv Then
If datdebspp <= datfinspv Then
JSN = DateDiff("d", datdebsn, datfinsn)
JSPV = DateDiff("d", datdebspv, datdebspp)
End If
If datdebspp > datfinspv Then
JSN = DateDiff("d", datdebsn, datfinsn)
JSPV = DateDiff("d", datdebspv, datfinspv)
End If
nbjour = -JSN - JSPV
Cells(i, 10) = DateAdd("d", nbjour, datfinsppnorm)
Cells(i, 11) = DateAdd("d", nbjour, datfinsppnorm1)
Cells(i, 12) = DateAdd("d", nbjour, datfinsppnorm2)
End If
'SN avant SPV avec chevauchement
If datfinsn >= datdebspv And datdebsn < datdebspv Then
If datdebspp <= datfinspv Then
JSN = DateDiff("d", datdebsn, datdebspv)
JSPV = DateDiff("d", datdebspv, datdebspp)
End If
If datdebspp > datfinspv Then
JSN = DateDiff("d", datdebsn, datdebspv)
JSPV = DateDiff("d", datdebspv, datfinspv)
End If
nbjour = -JSN - JSPV
Cells(i, 10) = DateAdd("d", nbjour, datfinsppnorm)
Cells(i, 11) = DateAdd("d", nbjour, datfinsppnorm1)
Cells(i, 12) = DateAdd("d", nbjour, datfinsppnorm2)
End If
'SPV avant SN sans chevauchement
If datfinspv <= datdebsn Then
If datdebspp <= datfinsn Then
JSN = DateDiff("d", datdebsn, datdebspp)
JSPV = DateDiff("d", datdebspv, datfinspv)
End If
If datdebspp > datfinsn Then
JSN = DateDiff("d", datdebsn, datfinsn)
JSPV = DateDiff("d", datdebspv, datfinspv)
End If
nbjour = -JSN - JSPV
Cells(i, 10) = DateAdd("d", nbjour, datfinsppnorm)
Cells(i, 11) = DateAdd("d", nbjour, datfinsppnorm1)
Cells(i, 12) = DateAdd("d", nbjour, datfinsppnorm2)
End If
'SPV avant SN avec chevauchement
If datfinspv >= datdebsn And datdebspv < datdebsn Then
If datdebspp <= datfinsn Then
JSN = DateDiff("d", datdebsn, datdebspp)
JSPV = DateDiff("d", datdebspv, datdebsn)
End If
If datdebspp > datfinsn Then
JSN = DateDiff("d", datdebsn, datfinsn)
JSPV = DateDiff("d", datdebspv, datdebsn)
End If
nbjour = -JSN - JSPV
Cells(i, 10) = DateAdd("d", nbjour, datfinsppnorm)
Cells(i, 11) = DateAdd("d", nbjour, datfinsppnorm1)
Cells(i, 12) = DateAdd("d", nbjour, datfinsppnorm2)
End If
'SN pendant SPV
If datdebsn >= datdebspv And datfinsn <= datfinspv Then
If datdebspp <= datfinspv Then
JSN = 0
JSPV = DateDiff("d", datdebspv, datdebspp)
End If
If datdebspp > datfinspv Then
JSN = 0
JSPV = DateDiff("d", datdebspv, datfinspv)
End If
nbjour = -JSN - JSPV
Cells(i, 10) = DateAdd("d", nbjour, datfinsppnorm)
Cells(i, 11) = DateAdd("d", nbjour, datfinsppnorm1)
Cells(i, 12) = DateAdd("d", nbjour, datfinsppnorm2)
End If
'SPV pendant SN
If datdebspv >= datdebsn And datfinspv <= datfinsn Then
If datdebspp <= datfinsn Then
JSPV = 0
JSN = DateDiff("d", datdebsn, datdebspp)
End If
If datdebspp > datfinsn Then
JSPV = 0
JSN = DateDiff("d", datdebsn, datfinsn)
End If
nbjour = -JSN - JSPV
Cells(i, 10) = DateAdd("d", nbjour, datfinsppnorm)
Cells(i, 11) = DateAdd("d", nbjour, datfinsppnorm1)
Cells(i, 12) = DateAdd("d", nbjour, datfinsppnorm2)
End If
End If 'SN SPV
Cells(i, 5) = JSN
Cells(i, 8) = JSPV
End If 'SPP
i = i + 1
Wend
End Sub |
|
|