Résultat opération fait sur 2 colonnes

m-ln -  
 m-ln -
Bonjour,

dans une colonne, j'aimerais récupérer le résultat d'une opération réalisée sur deux colonnes.
cad :
j'ai une colonne avec une date de fin de contrat, une colonne avec une durée de préavis (en mois).
et dans une colonne, j'aimerais récupérer le résultat : date de fin de contrat-préavis
ensuite, j'aimerais alerter l'utilisateur du préavis par rapport à la date d'aujourd'hui avec un MSGBOX.

ex : date de fin de contrat : 1.03.2008
préavis : 3 mois

auparavant je convertis la durée de préavis en jours : 3*30=90 jours
d'où date de fin de contrat-préavis=02.12.2007

ensuite si la date d'aujourd'hui = 02.12.2007 alors message :"attention préavis"

Voici ce que j'ai fait:

Sub date_preavis()

'declaration des variables
Dim c As Range
Dim delais2 As Date

i = 2

For Each c In Range(("AA" & i), Range("AA" & i).End(xlDown))

delais2 = Range("N" & i).Value - (Range("O" & i).Value * 30) 'pour convertir le mois en jours
Range("AA" & i).Value = delais2

If Date = delais2 Then
MsgBox ("Attention preavis pour " & Cells(i, 1).Value)
End If

Exit For
Next

End Sub

que faut-il rajouter pour gérer les cellules vides ?

Merci d'avance pour votre aide.
A voir également:

6 réponses

hervelot Messages postés 535 Statut Membre 123
 
Bonjour,

il suffit juste de tester que Range("N" & i).Value et Range("O" & i).Value ne sont pas nulles

if not isnull(Range("N" & i).Value) or not isnull(Range("O" & i).Value) then

delais2 = Range("N" & i).Value - (Range("O" & i).Value * 30) 'pour convertir le mois en jours
Range("AA" & i).Value = delais2

If Date = delais2 Then
MsgBox ("Attention preavis pour " & Cells(i, 1).Value)
End If

endif
0
m-ln Messages postés 7 Statut Membre
 
Ca ne marche pas : ça écrit que dans la première ligne.....
0
hervelot Messages postés 535 Statut Membre 123
 
Oui c sur tu n'incrémentes pas ton i, il reste à 2
0
m-ln Messages postés 7 Statut Membre
 
Donc ça donnerait :

Sub date_preavis()

Dim c As Range
Dim delais2 As Date

'selection de la feuille contrats
Sheets("contrats").Select

i = 2

For Each c In Range(("AA" & i), Range("AA" & i).End(xlDown))

If Not IsNull(Range("N" & i).Value) Or Not IsNull(Range("O" & i).Value) Then

delais2 = Range("N" & i).Value - (Range("O" & i).Value * 30) 'pour convertir le mois en jours
Range("AA" & i).Value = delais2

If Date = delais2 Then
MsgBox ("Attention preavis pour " & Cells(i, 1).Value)
End If

End If

i = i + 1
Next

End Sub

est-ce correct ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hervelot Messages postés 535 Statut Membre 123
 
Ouais, C'est deja beaucoupo mieux
0
m-ln
 
Merci beaucoup : ça marche
0