Exécution sans ouvrir le fichier

Bonjour,

alors voici mon problème : je souhaiterais tester des cellules excel avec des dates (exemple dates de A1 à A20) et en fonction de la date et celle de aujourd'hui (je compare les 2 dates) , il faudrait envoyer un mail avec en entête le nom du chantier (exemple en B1 à B20).

L'idée est de créer un alerter automatique des tâches à réaliser en fonction d'une date butoir (A1 à A20) et si on est en retard ou échéance sous 15 jours (A1-15 jours, ...) cela envoie un mail à une adresse spécifique.

Le problème est que pour éviter les loupés, je voudrais que ce soit réaliser sans intervention humaine (il ne faut pas devoir ouvrir le fichier pour que cela s'exécute), car si j'oubli de lancer le fichier cela n'aura servit à rien, il faut automatiser, par exemple tous les 2 jours à 8h00.

Un stagiaire en informatique m'avait dit que c'était impossible sous Excel mais possible via googlesheet...

Est-ce faisable ?

Merci d'avance

Bonjour,

C'est faisable selon la procédure suivante :

1- développer dans un classeur nommé par exemple "Alerte_chantiers.xlsm" une macro déclenchant l'envoi d'un mail si la date d'alerte est atteinte

2- développer un script VBS exécutant la macro du classeur ""Alerte_chantiers.xlsm"

3- créer dans le planificateur de tâches Windows une tâche s'exécutant tous les 2 jours à 8h00, ayant pour action le script VBS.

Merci Thev pour ta réponse.

As-tu une idée de la macro VBA et du script VBS ? Je n'y connais pas grand chose, désolé.

David

Bonjour,

As-tu une idée de la macro VBA et du script VBS ? Je n'y connais pas grand chose, désolé.

Fournis déjà avec un classeur, un exemple documenté de ce que tu veux faire. Cela dit, sans un minimum de connaissance VBA, ça ne sera pas facile. Mieux vaut peut-être alors déléguer à quelqu'un de plus féru sur le sujet.

Alors disons que je ne suis pas féru mais j'ai quelques notions, j'arrive un peu à comprendre comment fonctionne les macros.

Mais de là à déterminer le code nécessaire, alors là Joker...

Je joins un fichier type, plusieurs colonnes avec des dates à tester...

J'espère que c'est faisable, ce serait génial.

Merci d'avance.

David

13essai-chantier.xlsx (14.62 Ko)

je joins un fichier type, plusieurs colonnes avec des dates à tester...

Vous ne précisez pas ce qu'il faut tester et un certain nombre de dates sont en erreur (#VALEUR).

Par ailleurs, si vous voulez envoyer un mail d'alerte, quel doit être son contenu et qui est destinataire ?

Il manque la définition de ce qui est à faire ! . Si vous voulez avoir une réponse appropriée, c'est par là qu'il faut commencer.

L'adresse mail est dans l'onglet paramètre, cellule B2.

Quand je vérifie, je n'ai pas de dates en erreur, de laquelle parlez vous ?

L'idée est de tester uniquement (j'ai simplifié) la colonne X, l'idéal serait 2 alertes différentes : date dépassée ou alors date entre aujourd'hui et aujourd'hui+30 jours.

En objet ce serait : "Alerte échéance (& complété du nom de chantier correspondant en colonne B)"

Le corps du message on peut faire simple : "Attention, un date arrive à échéance ou est dépassée pour le chantier (& complété du nom de chantier correspondant en colonne B)"

Voilà dans les grandes lignes.

David

17essai-chantier.xlsx (19.57 Ko)

Je viens de réussir à tester la date et en fonction du résultat à envoyer un mail.

Par contre, le mail que je reçois est en hiéroglyphes...

Voici le code et le screen du mail que je reçois

Sub Envoyer_Mail_Outlook()

Dim chantier

chantier = Sheets("Suivi").Range("AE3").Value

If Sheets("Suivi").Range("AD3") <> "" Then

Set ObjOutlook = New Outlook.Application

Set oBjMail = ObjOutlook.CreateItem(olMailItem)

'---------------------------------------------------------

'Déclaration des adresses

Mail = "ajouté à la création"

copie = "ajouté à la création"

'--------------------------------------------------------

With oBjMail

'détermination des destinataire

' le destinataire

.To = Mail

'les copies

.CC = copie

' l'objet du mail

.Subject = "Problème échéance sur le chantier " & chantier

'le contenu

.Body = "Une date est dépassée sur le chantier " & chantier

.Send

End With

'ObjOutlook.Quit

End If

Set oBjMail = Nothing

Set ObjOutlook = Nothing

End Sub

mail

Bonsoir,

Je vous ferai une proposition demain.

Merci,

l'envoi de mail avec le test de la date ça marche, mais la mise en forme à la réception change complètement et je ne peux laisser des accents dans le sujet et/ou corps du mail sinon c'est pire.

Voici le dernier script qui fonctionne pas trop mal mais qui me donne un mail reçu tout bof malgré un aperçu conforme (commande Display).

Script :

Sub Envoyer_Mail_Outlook_2()

Dim chantier, Mail, copie

Dim Sujet As String

chantier = Sheets(1).Range("AE3").Value

Sujet = "Une date est depassee"

If Sheets(1).Range("AD3") <> "" Then

' Set ObjOutlook = New Outlook.Application

' Set oBjMail = ObjOutlook.CreateItem(olMailItem)

Dim objOutApp As Object, objOutMail As Object

Set objOutApp = CreateObject("Outlook.Application")

Set objOutMail = objOutApp.CreateItem(0)

'---------------------------------------------------------

'Déclaration des adresses

Mail = "david.poly.37@gmail.com"

copie = "davidmotard37@gmail.com"

'--------------------------------------------------------

With objOutMail

'détermination des destinataire

' le destinataire

.To = Mail

'les copies

.CC = copie

' l'objet du mail

.Subject = "Probleme echeance sur le chantier " & chantier

'le contenu

.Body = Sujet

.Display

'.Send

End With

'ObjOutlook.Quit

End If

Set objOutMail = Nothing

Set objOutApp = Nothing

End Sub

Merci d'avance.

David

mail 2

Bonsoir,

ci-jointe une proposition intégrant l'addition d'un commentaire pour éviter la répétition des mails;

1- classeur ci-joint (Suivi_Chantier.xlsm)

2- ci-dessous script VBS à écrire via le bloc-notes et à enregistrer en .VBS

Ce script devra être placé dans le même répertoire que celui du classeur : Suivi_chantier.xlsm

    '// .......... Lancement macro alertes chantier  ..........

    'chemin où se trouve le fichier script vbs    
    CurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")

    'ouverture fichier 
    Set xl = CreateObject("Excel.application")
    Set wb = xl.Workbooks.Open(CurPath & "\Suivi_chantier.xlsm")

    'lancement macro
    xl.Run wb.Name & "!" & "envoi_alertes"

    'fermeture fichier avec validation mises à jour  et  fermeture application
    wb.close (True) 
    xl.quit

    '// .......... Fin macro ........................

3- Avec le planificateur de tâches, créer une nouvelle tâche :

  • onglet : Général, cocher "exécuter avec les autorisations maximales"
  • onglet : Déclencheurs, programmer l'horaire
  • onglet : Actions, paramétrer l'exécution du script
24suivi-chantier.xlsm (28.73 Ko)

Merci, ça semble marcher mais pas pour toutes les alertes, bizarre.

Voici ce que je reçois, un coup c'est bien écrit et un coup c'est le bazard.

David

mail 3

C'est bon, j'ai trouvé, cela venait du format d'écriture des noms de chantiers (parfois sur 2 lignes avec ALT+ENTRÉE), du coup j'ai modifié et les mails sont nickel.

Par contre le script VBS ne se lance pas malgré être intégré dans le planificateur des tâches.

Please Helppp

David

planif 1 planif 2

Par contre le script VBS ne se lance pas malgré être intégré dans le planificateur des tâches.

Où est la spécification d'exécution du script dans l'onglet "Actions" ?

Le voilà.

Ce qui est vraiment bizarre c'est qu'en lancement manuel le script fonctionne.

David

planif 3

Grrrr, ça vient obligatoirement du planificateur de tâches car lorsque je clique droit sur la tâche et fait "Exécuter" ben il se passe rien.

Foutu informatique lol

David.

Ce qui est vraiment bizarre c'est qu'en lancement manuel le script fonctionne.

1- du fait de l'ajout des commentaires dans le classeur, il faut les supprimer pour réobtenir les mails.

2- vérifier l'exécution du script sans la planification horaire : dans la liste des tâches, sélectionner la tâche Chantiers, clic droit de la souris, exécuter.

C'est fait et ça marche toujours pas.

J'ai modifié le script et ça marche nickel sauf en planif de tâches (y compris quand je fais exécuter sous le planif de tâches), par contre si je lance le script directement depuis l'explorateur, cela fonctionne à merveille.

Je suis perdu.

Script :

Set objExcel = CreateObject("Excel.Application" )

Set objWorkbook = objExcel.Workbooks.Open("D:\Suivi_Chantiers.xlsm")

objExcel.Visible = False

objExcel.run "Envoyer_Mail_Outlook"

objWorkbook.Save

objExcel.Quit

ça marche nickel sauf en planif de tâches

Regarder les onglets Conditions et Paramètres. Dans Paramètres, doit être coché exécuter la tâche à la demande.

Ou alors le compte utilisateur : Lenovo n'a pas les droits car il n'est pas de type administrateur.

Rechercher des sujets similaires à "execution ouvrir fichier"