[VBA] valeur cellule sous condition

marcel77 -  
 marcel77 -
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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. marcel77
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    2. marcel77
       
      Oui ! Outlook
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    4. marcel77
       
      Merci bcp a toi je vais testé cela
      0