Envoi automatique de mail, erreur d'éxécution '13
Bonjour,
Après avoir parcouru le forum je reste sans réponse face à mon problème, c'est pourquoi je me permet de créer une nouvelle discussion.
Je suis actuellement en alternance, et je dois réaliser une macro EXCEL pour mon projet en entreprise, mais je ne possède aucune expérience dans le domaine. Je dois envoyer automatiquement des mails lorsque certains dates dépassent une limite définie. J'ai réaliser un programme permettant de faire l'envoi de façon manuelle sans problème, l'e-mail s'envoi une fois que j'appuis sur le bouton éxecuter ma macro. J'ai réussi à réaliser le code VBA correspondant, jusque là aucun problème.
Cependant en essayant d'automatiser cela je rencontre un problème. Je possède deux dates différentes : le nombre de jours restants et la date d’expédition. Je dois envoyer un mail lorsque le nombre de jours restants est inférieur à 3 jours, et un deuxième mail lorsque la commande doit être expédiée dans 15 jours(les cases sont remplies grâce à des données extraites de ma page "DONNEES"). J'arrive à envoyer les deux mails manuellement mais pas automatiquement. Toute la partie concernant l'e-mail ne pose pas de problème, uniquement les conditions d'envoi m'en pose :
Voici la partie de mon code qui me pose problème, me renvoyant une erreur :
Sub ScanSheet_Mainprocess()
Dim oCell As Excel.Range
Worksheets("Commandes urgentes").Select
If OL_OK Then
For Each oCell In Worksheets("Commandes urgentes").UsedRange.Columns(cColJoursRestants).Cells
If oCell.Value <= cNbJoursRelance2 Then
If oCell.Offset(, cColMailEnvoi - cColJoursRestants).Value <> "Oui" Then
SendFollowUpMail Worksheets("Commandes urgentes"), oCell.Row
End If
End Sub
Je travail donc sur la page "Commandes urgentes" qui se remplie automatiquement en fonction des données que je rentre dans une autre page "DONNEES", et j'utilise la colonne des jours restants ainsi qu'une constante que j'ai défini auparavent :
Const cColJoursRestants = 15
Const cNbJoursRelance2 = 3
Le problème intervient sur la deuxième ligne de code, à savoir :
If oCell.Value <= cNbJoursRelance2 Then
Donc si le nombre de jours restants est <= à 3, la suite de mon programme s'effectue et mon mail s'envoi.
Même si une erreur apparaît, le mail s'envoi si je rempli la valeur de la colonne des jours restants manuellement, ce qui n'est pas le cas lorsque la case se rempli automatiquement grace aux données de mon autre page.
Enfin, afin d'envoyer le mail automatiquement j'ai créer une macro liée à la ma page "Commandes urgentes" :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 3 Then Exit Sub
If Not Application.Intersect(Range("O2:O350"), Target) Is Nothing Then
If IsNumeric(Target.Value) And Target.Value <= 3 Then
Call ScanSheet_Mainprocess
End If
End If
End Sub
Le problème est que je ne comprends pas très bien le fonctionnement de cette dernière (ni même de mon autre programme d'ailleurs je n'ai aucune experience en VBA je travail uniquement en adaptant des programmes existants
Pourriez-vous m'aider pour cette partie ?
Cordialement,
Aurélien
EDIT : Problème résolu !
Une des case contenait des erreurs, l'envoi des email fonctionne correctement, à un point près...
La macro fonctionne toujours uniquement si je rentre les valeurs manuellement... Si je rentre manuellement 2 dans ma case jours restants et que ma date d’expédition est inférieure à 15 jours, le mail est bien envoyé mais uniquement en manuel.
Je n'arrive pas très bien à expliquer mon problème, mais voici un exemple :
L'objectif de ma macro est qu'en fonction des valeurs dans ma feuille B ( où les cellules sont remplies automatiquement par des formules prenant les valeurs dans ma feuille A), les emails s'envoient automatiquement au fur est à mesure que je remplis ma page A.
Actuellement cela ne fonctionne pas, les valeurs automatiques affichées sur ma feuille B sont bien en dessous des seuils qui devraient déclencher les alarmes (mail), mais aucune action ne se produit. Il faut que je change le nombre de jours à 3 où moins manuellement pour qu'un mail soit envoyé.
Voilà ! Désolé j'ai un peu du mal à exprimer mon problème, j'espère que quelqu'un pourra m'aider.
Cordialement,
Aurélien