[Résolu] [Base] gestion envoi courriel à une date précise

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
ced1807
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 28 févr. 2018 16:47

[Résolu] [Base] gestion envoi courriel à une date précise

Message par ced1807 »


La modération vous a écrit: Titre modifié : mail est une allée arborée en français.

Bonjour,

Je souhaite savoir si je suis sur la bonne voie avec mes macros, j'ai commencé la semaine dernière donc je suis débutant.
J'ai une base de donnés qui va gérer la relation entre des entreprise, un service de la com de com et toutes les entreprises environnantes (partenaires) ainsi qu'avec les autres services des territoires (associations, Pole emploi, les Chambres de commerce).

Sur le formulaire FORMVISITE j'ai une date alerte qui, quand elle est atteinte (date du jour) devrait envoyé un mail au responsable de service. Là par contre je patauge, J'ai tenté la macro AlertMail qui doit vérifié si la date d'alerte et égale à la date du jour et si oui alors on déclenche la macro EnvoyerMail
J'ai une erreur dès le début : Erreur d'exécution BASIC. Propriété ou méthode non trouvée : Text. Sur la ligne
Code :

Code : Tout sélectionner

TEnt = Form.getByName("txtNomEnt").Text
J'espère que quelqu'un pourra me comprendre et surtout m'aider.

Merci d'avance
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Oukcha le 08 mars 2018 16:55, modifié 1 fois.
Raison : Balisage
LibreOffice 5.0.5.2 sous Windows 7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] gestion envoi de mail à une date précise

Message par Dude »

Salut,
ced1807 a écrit :J'ai une erreur dès le début : Erreur d'exécution BASIC. Propriété ou méthode non trouvée : Text.
Aucun rapport avec le titre.
Tu utilises un contrôle "zone de liste" dont la propriété Text n'existe pas.
Sers-toi de XRay pour voir comment accéder à l'enregistrement sélectionné.
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] gestion envoi de mail à une date précise

Message par Piaf »

Bonjour

Code : Tout sélectionner

Sub AlertMail()
Dim DateAlerte as Date
Dim TEnt as string, Form as Object
	Form = ThisComponent.DrawPage.Forms.getByIndex(0)
	TEnt = Form.getByName("txtNomEnt").CurrentValue
	DateAlerte = CDateFromUnoDate(Form.getByName("datDate alerte").Date)
	If DateAlerte = Date Then
		EnvoyerMail(TEnt)
	End If	
End Sub
Devrait le faire.
leMail a écrit :Attachement []string <empty> (get,set)
BccRecipient []string <empty> (get,set)
Body string "Date Alerte pour l'entreprise : '%ProG%'est atteinte" attribute
CcRecipient []string <empty> (get,set)
ElementNames []string (get), read-only
ElementType type (get), read-only
ImplementationId []byte <empty> (get), read-only
Originator string "epn-pernes@ternoiscom.fr" (get,set)
Recipient string "epn-pernes@ternoiscom.fr" (get,set)
Subject string "Alerte" (get,set)
Types
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
ced1807
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 28 févr. 2018 16:47

Re: [Base] gestion envoi courriel à une date précise

Message par ced1807 »

Merci beaucoup Piaf.

Mais après correction, j'ai un problème dans la macro " EnvoyerMail " qui est appelée :
l'erreur porte sur cette ligne :

Code : Tout sélectionner

unMail = serviceMail.querySimpleMailClient()
J'ai comme message d'erreur :
Valeur d'objet non Définie.

J'avoue ne pas maîtriser cette partie.
LibreOffice 5.0.5.2 sous Windows 7
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Base] gestion envoi courriel à une date précise

Message par DLE »

Bonjour,

Il y a une erreur de saisie dans cet ordre

Code : Tout sélectionner

createUnoService("com.sun.star,system.SimpleSystemMail")
remplacer la virgule par un point après star.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
ced1807
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 28 févr. 2018 16:47

Re: [Base] gestion envoi courriel à une date précise

Message par ced1807 »

Bien vue, merci.

Par contre cela m'ouvre le client mail donc il faut cliquer sur Envoyer.
J'aurai souhaité que cette macro s’exécute à l'ouverture de la base de données, créé les mails et les envois automatiquement, mais du coup il faudrait que je revois le début de ma macro en y intégrant l'ouverture de la table et faire la vérification sur chaque enregistrement et non sur le formulaire...
Je vais réfléchir à tout sa et je reviendrais quand cela sera plus claire dans ma tête.
Merci
LibreOffice 5.0.5.2 sous Windows 7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] gestion envoi courriel à une date précise

Message par Dude »

ced1807 a écrit :J'aurai souhaité que cette macro s’exécute à l'ouverture de la base de données
Et dans ce cas, il suffit de brancher ta macro sur l'événement "Ouvrir un document".
ced1807 a écrit :créé les mails et les envois automatiquement
Lire le suprême de code concerné : https://forum.openoffice.org/fr/forum/v ... 15&t=39844
En ayant à l'esprit la limitation du dérivé par rapport à OpenOffice.
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] gestion envoi courriel à une date précise

Message par Piaf »

Bonjour
Dude a écrit :Et dans ce cas, il suffit de brancher ta macro sur l'événement "Ouvrir un document".

Code : Tout sélectionner

Sub AlertMail()
Dim maConnexion as Object, maRequete as Object, Resultat as Object
Dim strSQL as String
	thisDatabaseDocument.CurrentController.connect("","")
	maConnexion = thisDatabaseDocument.CurrentController.ActiveConnection
	maRequete = maConnexion.createStatement()
	strSQL = "SELECT ""Entreprise"" FROM ""VISITE"" WHERE ""Date alerte"" = CURRENT_DATE"
	Resultat = maRequete.executeQuery(strSQL)
	While Resultat.Next
		EnvoyerMail(Resultat.Columns(0).String)
	Wend		
End Sub
Par exemple.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
ced1807
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 28 févr. 2018 16:47

Re: [Base] gestion envoi courriel à une date précise

Message par ced1807 »

Merci Dude et Piaf,

Après réflexion, je pense que le mieux serait une Msgbox à l'ouverture du fichier.
J'ai donc réalisé cette macro grâce à Piaf :

Code : Tout sélectionner

Sub Alert2()
Dim maConnexion as Object, maRequete as Object, Resultat as Object
Dim strSQL as String
   thisDatabaseDocument.CurrentController.connect("","")
   maConnexion = thisDatabaseDocument.CurrentController.ActiveConnection
   maRequete = maConnexion.createStatement()
   strSQL = "SELECT ""Entreprise"" FROM ""VISITE"" WHERE ""Date alerte"" = CURRENT_DATE"
   Resultat = maRequete.executeQuery(strSQL)
   While Resultat.Next
      MsgBox("L'entreprise "+ Resultat.Columns(0).String +"est en alerte.", 1)
   Wend      
End Sub
Mais j'ai une erreur sur la première ligne "thisdatabase..." j'ai le message Variable d'objet non définie.
LibreOffice 5.0.5.2 sous Windows 7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] gestion envoi courriel à une date précise

Message par Dude »

ced1807 a écrit :Mais j'ai une erreur sur la première ligne "thisdatabase..." j'ai le message Variable d'objet non définie.
En l'absence d'un ODB permettant de voir ce que tu boutiques, je te propose d'aller sur voyance.com.
ced1807
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 28 févr. 2018 16:47

Re: [Base] gestion envoi courriel à une date précise

Message par ced1807 »

Je suis désolé, c'est vrai qu'il a quelque peut évolué...
Je vous le joint
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 5.0.5.2 sous Windows 7
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 669
Inscription : 20 déc. 2017 14:45

Re: [Base] gestion envoi courriel à une date précise

Message par rollmops »

Bonjour,
Dude a écrit :Et dans ce cas, il suffit de brancher ta macro sur l'événement "Ouvrir un document".
Dans le fichier que tu as joint, je ne vois aucune macro sur cet événement.
Peux-tu fournir d'avantage d'explication sur comment arriver à l'erreur ?
OpenOffice 4.1.15 - Windows 10
ced1807
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 28 févr. 2018 16:47

Re: [Base] gestion envoi courriel à une date précise

Message par ced1807 »

ha oui en effet, j'ai dû copier ma macro dans Standard du logiciel, il ne m'affiche pas les macros intégrés à mon fichier.
Quand je vais dans Outils -> Macro -> Gérer les macros -> LIbre office Basic
Et ensuite je clique sur une macro -> Assigner -> je choisis l'événement Ouvrir le document -> Macro et là il ne m'affiche pas mes macros de mon fichier TCE.
LibreOffice 5.0.5.2 sous Windows 7
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 669
Inscription : 20 déc. 2017 14:45

Re: [Base] gestion envoi courriel à une date précise

Message par rollmops »

Si tu ne donnes pas un fichier exploitable, tu nous fais surtout perdre du temps. :?
OpenOffice 4.1.15 - Windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] gestion envoi courriel à une date précise

Message par Piaf »

Re
A tester
Personnaliser.png

Code : Tout sélectionner

Sub Alert2()
Dim maConnexion as Object, maRequete as Object, Resultat as Object
Dim strSQL as String, Reponse as Long
   thisDatabaseDocument.CurrentController.connect("","")
   maConnexion = thisDatabaseDocument.CurrentController.ActiveConnection
   maRequete = maConnexion.createStatement()
   strSQL = "SELECT ""Entreprise"" FROM ""VISITE"" WHERE ""Date alerte"" = CURRENT_DATE"
   Resultat = maRequete.executeQuery(strSQL)
   While Resultat.Next
     Reponse = MsgBox("L'entreprise " & Resultat.Columns(0).String & " est en alerte." & Chr(13) & "Voulez-vous envoyer le courriel ?", 4 + 48,"Message d'alerte")
     Select Case Reponse
     	Case 6
     		MsgBox("Oui Branchement éventuel sur Afficher alerte")
     	Case 7
     		MsgBox("Non donc on ne fait rien")
     End Select			
   Wend      
End Sub
Msg.png
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
ced1807
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 28 févr. 2018 16:47

Re: [Base] gestion envoi courriel à une date précise

Message par ced1807 »

Bonjour,
Merci Piaf;
J'ai testé cela fonctionne, mais comme mon besoin à évolué (les gens ne disent pas tout quand ils font des demandes)
J'ai modifié la requête pour sélectionner toutes les entreprises en alerte entre la date du jour moins 7jours et la date du jour +7jours.
et j'ai cette erreur :
erreur.png
Merci d'avance pour votre aide.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 5.0.5.2 sous Windows 7
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Base] gestion envoi courriel à une date précise

Message par DLE »

Bonjour,

La fonction DateADD n'est pas une fonction SQL, vous devez résoudre le calcul des dates avant de générer l'ordre SQL.
Une proposition de solution :

Code : Tout sélectionner

   DateM7 = DateAdd("d",-7,Date(Now))
   DateP7 = DateAdd("d",7,Date(Now))
   DateM7 =  right(DateM7,4) & "-" & mid(DateM7,4,2) & "-" & left(DateM7,2)
   DateP7 =  right(DateP7,4) & "-" & mid(DateP7,4,2) & "-" & left(DateP7,2)

   strSQL = "SELECT ""Entreprise"" FROM ""VISITE"" WHERE ""Date alerte"" >= " & "'" & DateM7 & "'" & " AND ""Date alerte""  <= " & "'" & DateP7 & "'"
A+
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
ced1807
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 28 févr. 2018 16:47

Re: [Base] gestion envoi courriel à une date précise

Message par ced1807 »

Nickel ! tout fonctionne, Merci beaucoup
Je mets en état résolu.
LibreOffice 5.0.5.2 sous Windows 7