[VBA] valeur cellule sous condition

Fermé
marcel77 - 19 août 2011 à 11:03
 marcel77 - 22 août 2011 à 10:30
Bonjour,

Je fais appel à vous car après avoir fait des recherches j'ai pas trouvé exactement le bout de code permettant de faire ca. (je veux du code et pas des règles excel)

jai un tableau avec dans la colonne A une valeur "Envoyé", j'aimerai que quand A23 par exemple est sur "Envoyé" alors B23 retourne la valeur de la date d'aujourd'hui.
N'importe quelle celulle de la colonne A a la valeur "Envoyé", la cellule ce la ligne associé a la colonne A est la date d'aujourd'hui.

Ensuite, j'aimerai que quand jouvre mon fichier xls, il y ai une comparaison entre les dates inscrites dans la colonne B et la date d'aujourd'hui. Si celle ci dépasse 3jours, ca envoi un mail.

Merci bcp pour votre aide.

3 réponses

up svp
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 19/08/2011 à 15:02
Bonjour,
Attachons nous déjà à la macro "Ecrire Date Si Envoyé"...
Premières petites questions préliminaires :
1- Quel est le nom de la feuille concernée?
2- la Colonne A est-elle complète ou comporte t'elle des cellules vides?
3- Si aujourd'hui je passe la macro, des dates vont s'inscrire en colonne B. Demain, si je la repasse, il ne faudra pas tenir compte des dates saisies la veuille et donc les conserver et surtout pas les modifier. On est d'accord?
4- Si dans la colonne D on n'a pas de date, est ce que la cellule est forcément vide?
5- on commence la boucle sur la colonne A à partir de qu'elle ligne? la 1ère? la 2ème? la 12ème?
6- Peux t'on se fier à la saisie de "Envoyé" dans la colonne A ou doit on se méfier des fautes d'orthographe et de saisie?
Exemple :
Envoyé
Envoye
Envoi
Envoyer
etc...
Cordialement,
Franck P
0
1- nom de la feuille : feuil1
2-elle n'a pas de cellule vide
3-la macro va prendre la date inscrite en B et la comparer avec aujourd'hui, donc si ca dépasse pas 3jours, pas de mail. La date en B ne doit pas être modifiée.
4-Ca serait bien qu'en D si la date est dépassée de 3jours et que le mail a été envoyé, la valeur de la cellule associé à la même ligne soit : "Mail envoyé"
5-on commence a la ligne 2
-Oui on peut se fier à la saisie, c'est un menu déroulant.

Merci de votre aide.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
19 août 2011 à 15:23
Bon on avance bien non?
Pour terminer, et c'est là le plus délicat car je ne sais pas le faire ET je ne peux pas tester..., quel est le logiciel utilisé pour l'envoie des mails? Outlook? Lotus? autre? lequel...
0
Oui ! Outlook
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
19 août 2011 à 16:06
Alors malheureusement, je ne connais pas de code d'envoi mail par outlook, mais ça se trouve facilement sur Internet...
Trouve le et reviens dès que tu l'as.
Sinon, pour le reste :
Dans un module standard (sous VBE : Insertion/Module) copie-colle ces codes :
Sub Ecrire_Date_En_B_Si_Envoye_En_A()
Dim DerLig As Long, Lign As Long

With Sheets("Feuil1")
    DerLig = .Range("A" & Rows.Count).End(xlUp).Row
    For Lign = 1 To DerLig
        If .Cells(Lign, 1) = "Envoyé" And .Cells(Lign, 2) = "" Then
            .Cells(Lign, 2) = CDate(Date)
        End If
    Next
End With
End Sub

Sub EnvoiMail()
MsgBox "Mail à envoyer"
End Sub

Et dans le module de ThisWorkbook :
Private Sub Workbook_Open()
Dim DerLig As Long, Lign As Long

Call Ecrire_Date_En_B_Si_Envoye_En_A
With Sheets("Feuil1")
    DerLig = .Range("A" & Rows.Count).End(xlUp).Row
    For Lign = 1 To DerLig
        If CDate(.Cells(Lign, 2)) = CDate(Date - 3) Then
            Call EnvoiMail
        End If
    Next
End With
End Sub

Reviens dès que tu as trouvé un code d'envoi de mail.
je serais vraisemblablement absent ce week end, mais je reviens dès lundi.
0
Merci bcp a toi je vais testé cela
0