[VBA] valeur cellule sous condition

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

  1. Modérateur
    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
    1. 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.
      1. Modérateur
        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...
      2. Oui ! Outlook
      3. Modérateur
        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.
      4. Merci bcp a toi je vais testé cela