Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème d'outil Référence "outlook"

6 réponses
Avatar
alex-m
Bonjour =E0 tous,

J'ai un fichier Excel g=E9r=E9 avec plusieurs macros, dont une qui g=E9n=E8=
re
la cr=E9ation d'un nouveau classeur avec la copie de deux onglets du
fichier d'orignie et l'adresse =E0 un destinataire via outlook. Jusque
l=E0 tout va bien.

Le destinataire re=E7oit le fichier avec les deux onglets, l'un des deux
onglets poss=E8de des boutons permettant diff=E9rentes fonctions (j'ai
donc mis mes macros non pas sur un module mais sur la feuille
adress=E9e).

Mon probl=E8me se trouve pour le retour du fichier au destinataire (par
clic sur un bouton dans l'une des feuilles du classeur joint). En
effet, la feuille ne semble pas prendre en consid=E9ration
l'installation sur le fichier d'origine de l'outil r=E9f=E9rence "outlook"
pr=E9alabelement install=E9 sur le fichier d'origine.

Comment puis je faire pour mettre en automatique les outils r=E9f=E9rence
sur le nouveau classeur cr=E9er par ma macro ?

Merci par avance de vos r=E9ponses.

Cordialement.
Alex

6 réponses

Avatar
Daniel.C
Bonjour.
Il est souvant possible de se passer de la référence à Outlook. Poste
ton code pour plus de précision.
Cordialement.
Daniel

Bonjour à tous,

J'ai un fichier Excel géré avec plusieurs macros, dont une qui génère
la création d'un nouveau classeur avec la copie de deux onglets du
fichier d'orignie et l'adresse à un destinataire via outlook. Jusque
là tout va bien.

Le destinataire reçoit le fichier avec les deux onglets, l'un des deux
onglets possède des boutons permettant différentes fonctions (j'ai
donc mis mes macros non pas sur un module mais sur la feuille
adressée).

Mon problème se trouve pour le retour du fichier au destinataire (par
clic sur un bouton dans l'une des feuilles du classeur joint). En
effet, la feuille ne semble pas prendre en considération
l'installation sur le fichier d'origine de l'outil référence "outlook"
préalabelement installé sur le fichier d'origine.

Comment puis je faire pour mettre en automatique les outils référence
sur le nouveau classeur créer par ma macro ?

Merci par avance de vos réponses.

Cordialement.
Alex
Avatar
michdenis
Bonjour,

Essaie ceci :
'-----------------------------------
Sub test()

Dim Wk As Workbook
'Ajout d'un nouveau classeur
Set Wk = Workbooks.Add
'Ajoute la référence Microsoft Outlook à ton nouveau classeur
Wk.VBProject.References.AddFromGuid _
"{00062FFF-0000-0000-C000-000000000046}", 9, 3

'Le reste de ton code en utilisant Wk la
'variable objet représentant le classeur ajouté.

End Sub
'-----------------------------------



a écrit dans le message de groupe de discussion :

Bonjour à tous,

J'ai un fichier Excel géré avec plusieurs macros, dont une qui génère
la création d'un nouveau classeur avec la copie de deux onglets du
fichier d'orignie et l'adresse à un destinataire via outlook. Jusque
là tout va bien.

Le destinataire reçoit le fichier avec les deux onglets, l'un des deux
onglets possède des boutons permettant différentes fonctions (j'ai
donc mis mes macros non pas sur un module mais sur la feuille
adressée).

Mon problème se trouve pour le retour du fichier au destinataire (par
clic sur un bouton dans l'une des feuilles du classeur joint). En
effet, la feuille ne semble pas prendre en considération
l'installation sur le fichier d'origine de l'outil référence "outlook"
préalabelement installé sur le fichier d'origine.

Comment puis je faire pour mettre en automatique les outils référence
sur le nouveau classeur créer par ma macro ?

Merci par avance de vos réponses.

Cordialement.
Alex
Avatar
alex-m
Bonjour à tous,

Merci de vos réponses.

Denis, j'ai tenté d'ajouter tes lignes de commandes mais cela beug sur
Wk.VBProject.References.AddFromGuid _
"{00062FFF-0000-0000-C000-000000000046}", 9, 3

Mes lignes de commandes sur le fichier origine (la ou je creai le
nouveau classeur depuis un userform) sont :

Private Sub BtnReedEtude_Click()

Dim i As Long
i = ActiveCell.Row
Sheets("FICHE ETUDE DE VENTE").Visible = True
Sheets("VC-VT").Select
Range("A" & i & ":BA" & i).Select
Selection.Copy
Sheets("FICHE ETUDE DE VENTE").Select
Range("Q113").Select
Selection.PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
Sheets("FICHE ETUDE DE VENTE").Select
ActiveWindow.SelectedSheets.PrintOut
Copies:=1, Collate:=True
Dim Q1 As Integer

Q1 = MsgBox("Voulez-vous adresser à L L par e-mail cette fiche d'Etude
de vente ?", vbYesNo, "Demande d'Information")
If Q1 = vbYes Then
'''ICI J'AVAIS AJOUTE TES LIGNES POUR TEST EN F8'''
'Dim Wk As Workbook
''Ajout d'un nouveau classeur
'Set Wk = Workbooks.Add
''Ajoute la référence Microsoft Outlook à ton nouveau classeur
'Wk.VBProject.References.AddFromGuid _
"{00062FFF-0000-0000-C000-000000000046}", 9, 3

Sheets("Signature").Visible = True
'Sheets("FICHE ETUDE DE VENTE").Visible = True
Sheets(Array("Signature", "FICHE ETUDE DE VENTE")).Select
Sheets("Signature").Activate
Sheets(Array("Signature", "FICHE ETUDE DE VENTE")).Copy
Sheets("Signature").Select
ActiveWindow.SelectedSheets.Visible = False

ActiveWorkbook.SaveAs Filename:= _
"L:GRPORGImmeubleJuridiqueVentesVenteAnneeencoursETAT
EtudeVente", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="",
ReadOnlyRecommended:úlse _
, CreateBackup:úlse
ActiveWorkbook.Close

Sheets("Signature").Visible = False
Sheets("FICHE ETUDE DE VENTE").Visible = False

Sheets("VC-VT").Select


Dim appoutlook As Outlook.Application
Dim message As Outlook.MailItem
Dim text As Object
'
Set appoutlook = CreateObject("outlook.application")
Set message = appoutlook.CreateItem(olMailItem)
With message

.Recipients.Add ("M Alexandre")
.Subject = "VALIDATION FICHE ETUDE DE VENTE"
.Body = "Bonjour," & Chr(13) & Chr(13) & "Veuillez trouver ci-
joint une fiche d'Etude de vente, pour validation." _
& Chr(13) & "Merci de bien vouloir me retourner celle-ci signée,
ou le cas échéant avec les modifications que vous voulez apporter." &
Chr(13) & "Cordialement" & Chr(13) & Chr(13) & "Secrétariat
Commercial"
.Attachments.Add "L:GRPORGImmeubleJuridiqueVentes
VenteAnneeencoursETATEtudeVente.xls"
.Send
End With


ActiveWorkbook.Save

Kill "L:GRPORGImmeubleJuridiqueVentesVenteAnneeencoursETAT
EtudeVente.xls"

Else

Sheets("FICHE ETUDE DE VENTE").Visible = False
Sheets("VC-VT").Select
Range("A" & i & ":BA" & i).Select

Application.ScreenUpdating = True
End If


Sur mon second classeur créer , avec un Bouton sur la feuille, j'ai la
macro suivante (Demande de mot de passe dans input box puis renvoie
par mail), mes lignes sont :

Dim MDP As String

MDP = InputBox("Veuillez saisir votre mot de passe, SVP",
"Instuction")
If MDP <> "Alex" Then
MsgBox "Mot de passe invalide. Fin de la procédure de signature
électronique", , "Information"
Else
Sheets("Signature").Visible = True
Sheets("Signature").Select
ActiveSheet.Unprotect "1234"



Sheets("Signature").Shapes("Image 2").Copy
Sheets("FICHE ETUDE DE VENTE").Select
'ActiveSheet.Unprotect
Sheets("FICHE ETUDE DE VENTE").Range("B88").PasteSpecial

Sheets("Signature").Select
Sheets("Signature").Protect Password:="1234", _
DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowFiltering:=True
Sheets("Signature").Visible = False
Sheets("FICHE ETUDE DE VENTE").Select
Range("B87:G87").Select
Selection.Font.ColorIndex = 1
With Selection.Font
.Name = "Monotype Corsiva"
.Size = 14
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1
End With
Range("A87").Select


Dim appoutlook As Outlook.Application
Dim message As Outlook.MailItem
Dim text As Object
'
Set appoutlook = CreateObject("outlook.application")
Set message = appoutlook.CreateItem(olMailItem)
With message

.Recipients.Add ("M Alexandre")
.Subject = "VALIDATION FICHE ETUDE DE VENTE"
.Body = "Bonjour," & Chr(13) & Chr(13) & "Veuillez trouver ci-
joint une fiche d'Etude de vente dûment signée par mes soins
(Signature electroniue), pour Signature." _
& Chr(13) & "Merci de bien vouloir retourner celle-ci signée au
secrétariat , ou le cas échéant avec les modifications que vous voule z
apporter." & Chr(13) & "Cordialement" & Chr(13) & Chr(13) &
"Secrétariat Commercial"
.Attachments.Add ThisWorkbook.Path & "" & ThisWorkbook.Name
.Send
End With

End If

Ma premiere macro fonctionne car dans le fichier d'envoi j'ai bien le
module outlook. le fichier se crée et il adresse bien le mail. Mais
sur le second y a plus le module alors ca beug.

Merci de votre aide.
Alex
Avatar
Daniel.C
Bonjour.
Remplace :
Dim appoutlook As Outlook.Application
Dim message As Outlook.MailItem
par
Dim appoutlook As Object
Dim message As Object

Cordialement.
Daniel

Bonjour à tous,

Merci de vos réponses.

Denis, j'ai tenté d'ajouter tes lignes de commandes mais cela beug sur
Wk.VBProject.References.AddFromGuid _
"{00062FFF-0000-0000-C000-000000000046}", 9, 3

Mes lignes de commandes sur le fichier origine (la ou je creai le
nouveau classeur depuis un userform) sont :

Private Sub BtnReedEtude_Click()

Dim i As Long
i = ActiveCell.Row
Sheets("FICHE ETUDE DE VENTE").Visible = True
Sheets("VC-VT").Select
Range("A" & i & ":BA" & i).Select
Selection.Copy
Sheets("FICHE ETUDE DE VENTE").Select
Range("Q113").Select
Selection.PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
Sheets("FICHE ETUDE DE VENTE").Select
ActiveWindow.SelectedSheets.PrintOut
Copies:=1, Collate:=True
Dim Q1 As Integer

Q1 = MsgBox("Voulez-vous adresser à L L par e-mail cette fiche d'Etude
de vente ?", vbYesNo, "Demande d'Information")
If Q1 = vbYes Then
'''ICI J'AVAIS AJOUTE TES LIGNES POUR TEST EN F8'''
'Dim Wk As Workbook
''Ajout d'un nouveau classeur
'Set Wk = Workbooks.Add
''Ajoute la référence Microsoft Outlook à ton nouveau classeur
'Wk.VBProject.References.AddFromGuid _
"{00062FFF-0000-0000-C000-000000000046}", 9, 3

Sheets("Signature").Visible = True
'Sheets("FICHE ETUDE DE VENTE").Visible = True
Sheets(Array("Signature", "FICHE ETUDE DE VENTE")).Select
Sheets("Signature").Activate
Sheets(Array("Signature", "FICHE ETUDE DE VENTE")).Copy
Sheets("Signature").Select
ActiveWindow.SelectedSheets.Visible = False

ActiveWorkbook.SaveAs Filename:= _
"L:GRPORGImmeubleJuridiqueVentesVenteAnneeencoursETAT
EtudeVente", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="",
ReadOnlyRecommended:úlse _
, CreateBackup:úlse
ActiveWorkbook.Close

Sheets("Signature").Visible = False
Sheets("FICHE ETUDE DE VENTE").Visible = False

Sheets("VC-VT").Select


Dim appoutlook As Outlook.Application
Dim message As Outlook.MailItem
Dim text As Object
'
Set appoutlook = CreateObject("outlook.application")
Set message = appoutlook.CreateItem(olMailItem)
With message

.Recipients.Add ("M Alexandre")
.Subject = "VALIDATION FICHE ETUDE DE VENTE"
.Body = "Bonjour," & Chr(13) & Chr(13) & "Veuillez trouver ci-
joint une fiche d'Etude de vente, pour validation." _
& Chr(13) & "Merci de bien vouloir me retourner celle-ci signée,
ou le cas échéant avec les modifications que vous voulez apporter." &
Chr(13) & "Cordialement" & Chr(13) & Chr(13) & "Secrétariat
Commercial"
.Attachments.Add "L:GRPORGImmeubleJuridiqueVentes
VenteAnneeencoursETATEtudeVente.xls"
.Send
End With


ActiveWorkbook.Save

Kill "L:GRPORGImmeubleJuridiqueVentesVenteAnneeencoursETAT
EtudeVente.xls"

Else

Sheets("FICHE ETUDE DE VENTE").Visible = False
Sheets("VC-VT").Select
Range("A" & i & ":BA" & i).Select

Application.ScreenUpdating = True
End If


Sur mon second classeur créer , avec un Bouton sur la feuille, j'ai la
macro suivante (Demande de mot de passe dans input box puis renvoie
par mail), mes lignes sont :

Dim MDP As String

MDP = InputBox("Veuillez saisir votre mot de passe, SVP",
"Instuction")
If MDP <> "Alex" Then
MsgBox "Mot de passe invalide. Fin de la procédure de signature
électronique", , "Information"
Else
Sheets("Signature").Visible = True
Sheets("Signature").Select
ActiveSheet.Unprotect "1234"



Sheets("Signature").Shapes("Image 2").Copy
Sheets("FICHE ETUDE DE VENTE").Select
'ActiveSheet.Unprotect
Sheets("FICHE ETUDE DE VENTE").Range("B88").PasteSpecial

Sheets("Signature").Select
Sheets("Signature").Protect Password:="1234", _
DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowFiltering:=True
Sheets("Signature").Visible = False
Sheets("FICHE ETUDE DE VENTE").Select
Range("B87:G87").Select
Selection.Font.ColorIndex = 1
With Selection.Font
.Name = "Monotype Corsiva"
.Size = 14
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1
End With
Range("A87").Select


Dim appoutlook As Outlook.Application
Dim message As Outlook.MailItem
Dim text As Object
'
Set appoutlook = CreateObject("outlook.application")
Set message = appoutlook.CreateItem(olMailItem)
With message

.Recipients.Add ("M Alexandre")
.Subject = "VALIDATION FICHE ETUDE DE VENTE"
.Body = "Bonjour," & Chr(13) & Chr(13) & "Veuillez trouver ci-
joint une fiche d'Etude de vente dûment signée par mes soins
(Signature electroniue), pour Signature." _
& Chr(13) & "Merci de bien vouloir retourner celle-ci signée au
secrétariat , ou le cas échéant avec les modifications que vous voulez
apporter." & Chr(13) & "Cordialement" & Chr(13) & Chr(13) &
"Secrétariat Commercial"
.Attachments.Add ThisWorkbook.Path & "" & ThisWorkbook.Name
.Send
End With

End If

Ma premiere macro fonctionne car dans le fichier d'envoi j'ai bien le
module outlook. le fichier se crée et il adresse bien le mail. Mais
sur le second y a plus le module alors ca beug.

Merci de votre aide.
Alex
Avatar
michdenis
Dim Wk As Workbook
'Ajout d'un nouveau classeur
Set Wk = Workbooks.Add
'Ajoute la référence Microsoft Outlook à ton nouveau classeur
Wk.VBProject.References.AddFromGuid _
"{00062FFF-0000-0000-C000-000000000046}", 9, 3

Le code précédent ajoute la référence "Microsoft Outlook" au fichier.
SAUF si tu appliques ce bout de code dans un classeur qui a déjà la
référence Outlook de charger, tu vas obtenir une erreur. Tu ne peux
pas ajouter une SECONDE FOIS la même référence dans le classeur.
Pour ce faire, tu ajoutes juste devant la ligne de code
On Error Resume Next.

Dans ta question, tu disais que c'était un nouveau classeur créé, comme
mon exemple le démontre Set Wk = Workbooks.Add , il n'y a pas de
raison que l'ajout de la référence pose problème. Encore faut-il que
Microsoft Outlook soit installé sur la machine !





a écrit dans le message de groupe de discussion :

Bonjour à tous,

Merci de vos réponses.

Denis, j'ai tenté d'ajouter tes lignes de commandes mais cela beug sur
Wk.VBProject.References.AddFromGuid _
"{00062FFF-0000-0000-C000-000000000046}", 9, 3

Mes lignes de commandes sur le fichier origine (la ou je creai le
nouveau classeur depuis un userform) sont :

Private Sub BtnReedEtude_Click()

Dim i As Long
i = ActiveCell.Row
Sheets("FICHE ETUDE DE VENTE").Visible = True
Sheets("VC-VT").Select
Range("A" & i & ":BA" & i).Select
Selection.Copy
Sheets("FICHE ETUDE DE VENTE").Select
Range("Q113").Select
Selection.PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
Sheets("FICHE ETUDE DE VENTE").Select
ActiveWindow.SelectedSheets.PrintOut
Copies:=1, Collate:=True
Dim Q1 As Integer

Q1 = MsgBox("Voulez-vous adresser à L L par e-mail cette fiche d'Etude
de vente ?", vbYesNo, "Demande d'Information")
If Q1 = vbYes Then
'''ICI J'AVAIS AJOUTE TES LIGNES POUR TEST EN F8'''
'Dim Wk As Workbook
''Ajout d'un nouveau classeur
'Set Wk = Workbooks.Add
''Ajoute la référence Microsoft Outlook à ton nouveau classeur
'Wk.VBProject.References.AddFromGuid _
"{00062FFF-0000-0000-C000-000000000046}", 9, 3

Sheets("Signature").Visible = True
'Sheets("FICHE ETUDE DE VENTE").Visible = True
Sheets(Array("Signature", "FICHE ETUDE DE VENTE")).Select
Sheets("Signature").Activate
Sheets(Array("Signature", "FICHE ETUDE DE VENTE")).Copy
Sheets("Signature").Select
ActiveWindow.SelectedSheets.Visible = False

ActiveWorkbook.SaveAs Filename:= _
"L:GRPORGImmeubleJuridiqueVentesVenteAnneeencoursETAT
EtudeVente", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="",
ReadOnlyRecommended:úlse _
, CreateBackup:úlse
ActiveWorkbook.Close

Sheets("Signature").Visible = False
Sheets("FICHE ETUDE DE VENTE").Visible = False

Sheets("VC-VT").Select


Dim appoutlook As Outlook.Application
Dim message As Outlook.MailItem
Dim text As Object
'
Set appoutlook = CreateObject("outlook.application")
Set message = appoutlook.CreateItem(olMailItem)
With message

.Recipients.Add ("M Alexandre")
.Subject = "VALIDATION FICHE ETUDE DE VENTE"
.Body = "Bonjour," & Chr(13) & Chr(13) & "Veuillez trouver ci-
joint une fiche d'Etude de vente, pour validation." _
& Chr(13) & "Merci de bien vouloir me retourner celle-ci signée,
ou le cas échéant avec les modifications que vous voulez apporter." &
Chr(13) & "Cordialement" & Chr(13) & Chr(13) & "Secrétariat
Commercial"
.Attachments.Add "L:GRPORGImmeubleJuridiqueVentes
VenteAnneeencoursETATEtudeVente.xls"
.Send
End With


ActiveWorkbook.Save

Kill "L:GRPORGImmeubleJuridiqueVentesVenteAnneeencoursETAT
EtudeVente.xls"

Else

Sheets("FICHE ETUDE DE VENTE").Visible = False
Sheets("VC-VT").Select
Range("A" & i & ":BA" & i).Select

Application.ScreenUpdating = True
End If


Sur mon second classeur créer , avec un Bouton sur la feuille, j'ai la
macro suivante (Demande de mot de passe dans input box puis renvoie
par mail), mes lignes sont :

Dim MDP As String

MDP = InputBox("Veuillez saisir votre mot de passe, SVP",
"Instuction")
If MDP <> "Alex" Then
MsgBox "Mot de passe invalide. Fin de la procédure de signature
électronique", , "Information"
Else
Sheets("Signature").Visible = True
Sheets("Signature").Select
ActiveSheet.Unprotect "1234"



Sheets("Signature").Shapes("Image 2").Copy
Sheets("FICHE ETUDE DE VENTE").Select
'ActiveSheet.Unprotect
Sheets("FICHE ETUDE DE VENTE").Range("B88").PasteSpecial

Sheets("Signature").Select
Sheets("Signature").Protect Password:="1234", _
DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowFiltering:=True
Sheets("Signature").Visible = False
Sheets("FICHE ETUDE DE VENTE").Select
Range("B87:G87").Select
Selection.Font.ColorIndex = 1
With Selection.Font
.Name = "Monotype Corsiva"
.Size = 14
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1
End With
Range("A87").Select


Dim appoutlook As Outlook.Application
Dim message As Outlook.MailItem
Dim text As Object
'
Set appoutlook = CreateObject("outlook.application")
Set message = appoutlook.CreateItem(olMailItem)
With message

.Recipients.Add ("M Alexandre")
.Subject = "VALIDATION FICHE ETUDE DE VENTE"
.Body = "Bonjour," & Chr(13) & Chr(13) & "Veuillez trouver ci-
joint une fiche d'Etude de vente dûment signée par mes soins
(Signature electroniue), pour Signature." _
& Chr(13) & "Merci de bien vouloir retourner celle-ci signée au
secrétariat , ou le cas échéant avec les modifications que vous voulez
apporter." & Chr(13) & "Cordialement" & Chr(13) & Chr(13) &
"Secrétariat Commercial"
.Attachments.Add ThisWorkbook.Path & "" & ThisWorkbook.Name
.Send
End With

End If

Ma premiere macro fonctionne car dans le fichier d'envoi j'ai bien le
module outlook. le fichier se crée et il adresse bien le mail. Mais
sur le second y a plus le module alors ca beug.

Merci de votre aide.
Alex
Avatar
alex-m
Merci Daniel ca marche, je vais comme meme tester sur plusieurs poste
pour voir si cela fonctionne tout aussi bien
Cordialement.
Alex