Bonjour,
Vois dans la FAQ.
Voici un autre moyen d'éviter :
Dans un module ceci :
Je ne comprends pas tout dans les API, je ne peux t'expliquer. Mais ça marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Declare Function EnumWindows Lib "User32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Private Declare Function GetWindowThreadProcessId Lib "User32" (ByVal hwnd As Long, _ lpdwprocessid As Long) As Long Private Declare Function PostMessage Lib "User32" Alias "PostMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Private Const WM_CLOSE = &H10 Private Const GWL_STYLE = (-16) Private Const WS_SYSMENU = &H80000 Private Function CloseWindow(ByVal hwnd As Long, ByVal hInstance As Long) As Long Dim idproc As Long idproc = 0 ' Reçoit dans idproc l'id du processus lié à cette fenêtre GetWindowThreadProcessId hwnd, idproc If (idproc = hInstance) And ((GetWindowLong(hwnd, GWL_STYLE) And WS_SYSMENU) = WS_SYSMENU) Then PostMessage hwnd, WM_CLOSE, 0, 0 End If ' Obligatoire pour qu'EnumWindows continue l'énumération CloseWindow = True End Function Public Sub KillApp(hInstance As Long) EnumWindows AddressOf CloseWindow, hInstance End Sub
Ensuite cette procédure à adapter à ton contexte :
N.B. Ajouter la référence "Microsoft Outlook XX.X Object Library"
Cette procédure ouvre une session Outlook, envoie le message et referme la session.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Public Sub EnvoyerMessage() Dim Reponse As Integer Dim objOutlook As Outlook.Application Dim MonMessage As Object Dim ret As Integer 'ouvrir OutLook ret = Shell("c:/Program Files (x86)/Microsoft Office/Office14/Outlook.exe ", vbHide) 'À adapter 'Assigner l'objet Outlook Set objOutlook = New Outlook.Application 'Composer le message Set MonMessage = objOutlook.CreateItem(0) 'ouvrir une structure de message MonMessage.To = "moliere@perelachaise.fr" 'À adapter MonMessage.Subject = "Objet" 'À adapter MonMessage.Body = "Message" 'À adapter MonMessage.Send 'Fermer Outlook Sleep 2000 ' 2 secondes pour laisser le temps d'envoyer KillApp (ret) 'Refermer la session OutLook 'Libérer la mémoire Set objOutlook = Nothing Set MonMessage = Nothing End Sub
je précise que j'utilise déjà une macro, déjà faites sur access pour mon envois de mail "EnvoyerObjetBaseDeDonnées" qui récupère une requête que j'ai déjà créer, donc je ne comprend pas vraiment ton code dsl
De mon côté, je ne dispose pas de Access2010.
La solution proposée dans la FAQ ne te convient pas ?
je ne s'est pas si sa peut aider mais j'ai transformer ma macro en code VB
je ne s'est pas si plus simple pour éliminer le message de confirmation
le code en question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 '------------------------------------------------------------ ' TEST ' '------------------------------------------------------------ Function TEST() On Error GoTo TEST_Err DoCmd.SendObject acQuery, "TEST", "ExcelWorkbook(*.xlsx)", "test@test.com", "", "", "Plan de prevention", "Plan de prevention depasé", False, "" TEST_Exit: Exit Function TEST_Err: MsgBox Error$ Resume TEST_Exit End Function
Bonjour,
As tu pris connaissance de la réponse de Claude dans sa réponse #2
Tout en bas de cette faq tu as la solution avec l’utilitaire indisqué clickyes...
Et pour éviter la demande d'Outlook qui indique qu'une application est en train d'envoyer un message, il y a une solution ici :
en http://www.express-soft.com/mailmate/clickyes.html
bonne suite
![]()
oui mais l’installation d'une autre application sur le réseau de ma société est impossible, de plus notre infra tourne sur win7 entreprise est ce logiciel ne tourne que sur win xp maxi si j'ai bien lu, s'est bien pour cela que j’essaie de passer par du code vb pour supprimer ce message.
Salut,
les deux solutions envisageables concernant ce point de sécurité restent :
- installation du petit utilitaire sur ton poste pour t'affranchir du problème
- demander à ton service informatique de désactiver la protection sur ton compte ou sur le poste qui servira de poste de production
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Migrer les applications VBA Access et VBA Excel vers la Power Platform
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Partager