Envoi mail automatique, erreur '13' [Résolu/Fermé]

Signaler
-
 Aurlien57 -
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 :( ). Comment le programme sait que If Target.Cells.Count > 3 fait référence à ma colonne jours restants ? J'ai également défini une limite à savoir de la ligne O2 à O350, puis-je aller jusqu'à plusieurs milliers ou cela pose-t-il problème ?

Pourriez-vous m'aider pour cette partie ?

Cordialement,
Aurélie

1 réponse

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 [u]uniquement[/u] 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