A voir également:
- VBA - problème gestion évènement
- Logiciel gestion photo gratuit - Guide
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion cave à vin gratuit - Télécharger - Cuisine & Gastronomie
- Logiciel gestion association gratuit excel - Télécharger - Gestion de projets
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
3 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
16 oct. 2009 à 14:33
16 oct. 2009 à 14:33
Bonjour,
C'est bien dans Workbook_open qu'il faut lancer la macro
Il faut d'abord tester si la colonne Z est renseignée par "mail envoyé", si elle n'est pas renseignée, on effectue le test sur la colonne E avec la date du jour. Si elle est renseignée, on effectue le test avec la date colonne AB.
Je ne vois pas trop bien ce que tu veux faire si la date de la colonne AB est > 48h ? Parce que si aujourd'hui elle est supérieure de 48h, elle le sera encore demain et après demain ... etc ...
Il faut une autre condition pour ne pas envoyer éternellement des mails ...
Peux-tu donner plus de détails stp.
Voilà un point de départ
;o)
C'est bien dans Workbook_open qu'il faut lancer la macro
Il faut d'abord tester si la colonne Z est renseignée par "mail envoyé", si elle n'est pas renseignée, on effectue le test sur la colonne E avec la date du jour. Si elle est renseignée, on effectue le test avec la date colonne AB.
Je ne vois pas trop bien ce que tu veux faire si la date de la colonne AB est > 48h ? Parce que si aujourd'hui elle est supérieure de 48h, elle le sera encore demain et après demain ... etc ...
Il faut une autre condition pour ne pas envoyer éternellement des mails ...
Peux-tu donner plus de détails stp.
Voilà un point de départ
Dim datejour As Date Dim ecart As Variant Dim lig As Long For lig = 158 To [E65536].End(xlUp).Row If Range("Z" & lig).Value <> "" Then ecart = DateDiff("h", Range("AB" & lig).Value, Date) If ecart > 48 Then '.... End If Else ecart = DateDiff("h", Range("E" & lig).Value, Date) If ecart > 48 Then Call envoyer_mail Range("Z" & lig).Value = Date Range("AB" & lig).Value = "mail en retard envoyé" End If End If Next
;o)
je suis peut etre sur une piste
voici mon code :
j'ai placé ce code dans l'évenement :
Enfait il faut que tant que la date ne dépasse pas 48h, on envoit pas de mail.
pour executer mon test il faut qu'une macro modifit les cellules de ma ligne en question(une selection d'une cellule engendre l'execution du test : ActiveCell.FormulaR1C1 = "")
par contre il faudrait qu'une fois le mail envoyé, le test ne s'execute plus même si on modifit la ligne. Enfait il faudrait que le test soit comme ca : si la date est supèrieur OU STRICTEMENT EGALE à 48 alors on execute le test, comme ca même si ca dépasse 48h ca ne s'execute plus. mais je ne sais pas comment faire.
merci !
voici mon code :
Private Sub test1() Dim date48 As Date Dim datejour As Date date48 = 48 datejour = Now Dim lig As Long For lig = 158 To [E65536].End(xlUp).Row If datejour - Cells(lig, 5) > date48 / 24 And Cells(lig, 5) <> "" Then call envoyer_email Cells(lig, 26) = "mail envoyé" Exit For End If Next lig End Sub
j'ai placé ce code dans l'évenement :
Private Sub Worksheet_Change(ByVal Target As Range)
Enfait il faut que tant que la date ne dépasse pas 48h, on envoit pas de mail.
pour executer mon test il faut qu'une macro modifit les cellules de ma ligne en question(une selection d'une cellule engendre l'execution du test : ActiveCell.FormulaR1C1 = "")
par contre il faudrait qu'une fois le mail envoyé, le test ne s'execute plus même si on modifit la ligne. Enfait il faudrait que le test soit comme ca : si la date est supèrieur OU STRICTEMENT EGALE à 48 alors on execute le test, comme ca même si ca dépasse 48h ca ne s'execute plus. mais je ne sais pas comment faire.
merci !