Problème exécution macro sur PC professionnel
Salut à tous
J'espère que la journée s'est bien déroulée.
J'ai un soucis avec le cvode ci-dessous. En effet, il me permet d'envoyer un mail avec fichier joint.
Avec mon PC personnel pas de soucis. Dès que j'exécute la macro, le message est parti avec le fichier joint définit.
J'ai copié le même code sur le même fichier de mon PC de service. Lorsque j'exécute la macro, pas de débogage mais pas d'envoi non plus.
Je sais pas ou sa cloche. Quelqu'un peut-il me secourir?
Bon dimanche à tous
Sub Mail_MONETIQUE()
' Works in Excel 2000, Excel 2002, Excel 2003, Excel 2007, Excel 2010, Outlook 2000, Outlook 2002, Outlook 2003, Outlook 2007, Outlook 2010.
' This example sends the last saved version of the Activeworkbook object .
Dim OutApp As Object
Dim OutMail As Object
Dim texte As String
Dim I As String
Dim Rng As String
' Copier la feuille dans un nouveau classeur
Sheets("STATSESAME").Copy
' Avec la feuille actuelle
With ActiveSheet
' récupérer la dernière cellule utilisée
Rng = .Cells.SpecialCells(xlCellTypeLastCell).Address
' Remplacer les formules par des valeurs
.Range("A1:" & Rng) = .Range("A1:" & Rng).Value
End With
' Enregistrer le nouveau classeur en temporaire
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\DEMANDE SESAME SIEGE.xls"
ActiveWorkbook.Close
'
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
I = Range("B29").Value
texte = texte & "Bonjour" & vbCrLf
texte = texte & " Merci de trouver ci-joint un état recap" & vbCrLf
On Error Resume Next
With OutMail
.To = Range("b29").Value
.CC = ""
.BCC = ""
.Subject = "Bienvenue dans votre"
.Body = texte
' You can add other files by uncommenting the following line.
.Attachments.Add ThisWorkbook.Path & "\DEMANDE SESAME .xls"
' In place of the following statement, you can use ".Display" to
' display the mail.
.Send
End With
On Error GoTo 0
' Supprimer le fichier temporaire
Kill ThisWorkbook.Path & "\DEMANDE SESAME .xls"
' Effacer les vairable objet
Set OutMail = Nothing
Set OutApp = Nothing
End SubBonjour Zombe
As-tu des OS identiques sur les 2 PC ?
As-tu Outlook sur les 2 PC ?
a+
Salut BrunoM45
Merci pour ton feedback.
J'utilise outlook 2007 sur les 2 PC.
J'ai un autre code presque semblable à celui déjà envoyé qui permet d'envoyer des mails et ces code fonctionne bien des 2 côtés.
Le voici pour comparaison:
Sub Mail_Workbook1()
' Works in Excel 2000, Excel 2002, Excel 2003, Excel 2007, Excel 2010, Outlook 2000, Outlook 2002, Outlook 2003, Outlook 2007, Outlook 2010.
' This example sends the last saved version of the Activeworkbook object .
Dim OutApp As Object
Dim OutMail As Object
Dim texte As String
Dim I As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
I = Range("B29").Value
texte = texte & Range("B39").Value & " le, " & Range("E17").Value & vbCrLf & vbCrLf
texte = texte & "A" & vbCrLf
texte = texte & Range("B7").Value & " " & Range("B13").Value & vbCrLf
texte = texte & Range("B26").Value & vbCrLf
texte = texte & Range("B27").Value & vbCrLf & vbCrLf & vbCrLf
texte = texte & "Objet : Bienvenue" & vbCrLf & vbCrLf
On Error Resume Next
With OutMail
.To = Range("b29").Value
.CC = ""
.BCC = ""
.Subject = "Bienvenue dans votre"
.Body = texte
.Attachments.Add ("C:\Documents and Settings\PL0234\bureau\SGIIOC\conditions générales.pdf")
' You can add other files by uncommenting the following line.
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End SubBonjour tous,
zombe a écrit :J'ai copié le même code sur le même fichier de mon PC de service.
Avec ton PC de service tu ne serrais pas en réseau ? et Outlook sur le serveur ?
A+
Salut à tous
Merci de vous être interessé à mon sujet.
J'utilise XP sur mon PC professionnel et SEVEN sur mon PC personnel.
Au service, nous utilisons l'intranet mais je ne pense pas que ce soit lié au reseau et comme je l'ai dis, un autre code presque similaire fonctionne à merveille sur les 2 PC.
J'ai remarqué que sur le PC de service ca crée un fichier occasionnel nommé classeur 1 mais après pas d'envoi.
Cordialement
Enlève le On Error Resume Next
Je pense que tu a une erreur dans le nom du classeur, un espace entre le nom et l’extension.
A+
Conseil : Quand tu a un code qui ne fonctionne pas met des apostrophes devant tout les On Error..
En règle générale les On Error ne sont mis que quand l'utilisateur risque de mettre une donnée erronée.
Merci pour les conseils.
J'ai essayé d'apporter les corrections données mais quand j'exécute la macro ca signale débogage sur le code suivant :
Rng = .Cells.SpecialCells(xlCellTypeLastCell).Address. Qu'est ce qui coince?
Je n'ai pas trouver le moyen d'activer cette feuille, probablement parce qu'Excel ne sait pas laquel prendre, j'ai contourner avec...
Dim F As Worksheet
' Copier la feuille dans un nouveau classeur
Set F = Sheets("STATSESAME")
F.Copy
' Avec la nouvelle feuille
With F
' récupérer la dernière cellule utilisée
Rng = .Cells.SpecialCells(xlCellTypeLastCell).Address
' Remplacer les formules par des valeurs
.Range("A1:" & Rng) = .Range("A1:" & Rng).Value
End WithA tester.
Bonjour Lermitte, Zombe
Je ne comprends pas l'erreur, puisque logiquement et ça fonctionne chez moi
' Copier la feuille dans un nouveau classeur
Sheets("STATSESAME").CopyLa feuille est copiée dans un nouveau classeur
' Avec la feuille actuelle
With ActiveSheetPuisque le nouveau classeur est actif et donc la feuille avec
A+
Bonjour Bruno,
Faut croire que tu a plus de chance que Zombe et moi, parce que, dans les mêmes conditions, chez moi ça plante aussi.
A+
Re
Désolé, mais en utilisant des variables pour le chemin et le fichier temporaire (évite les erreurs de saisie)
Sub Mail_MONETIQUE()
' Works in Excel 2000, Excel 2002, Excel 2003, Excel 2007, Excel 2010, Outlook 2000, Outlook 2002, Outlook 2003, Outlook 2007, Outlook 2010.
' This example sends the last saved version of the Activeworkbook object .
Dim OutApp As Object
Dim OutMail As Object
Dim texte As String
Dim I As String
Dim Rng As String
Dim FicTmp As String, sPath As String
' Définir le chemin de sauvegarde
sPath = ThisWorkbook.Path & "\"
' Définir le nom du fichier temporaire
FicTmp = "DEMANDE SESAME SIEGE.xls"
' Copier la feuille dans un nouveau classeur
Sheets("STATSESAME").Copy
' Avec la feuille actuelle
With ActiveSheet
' récupérer la dernière cellule utilisée
Rng = .Cells.SpecialCells(xlCellTypeLastCell).Address
' Remplacer les formules par des valeurs
.Range("A1:" & Rng) = .Range("A1:" & Rng).Value
End With
' Enregistrer le nouveau classeur en temporaire
ActiveWorkbook.SaveAs sPath & FicTmp
ActiveWorkbook.Close
'
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
I = Range("B29").Value
texte = texte & "Bonjour" & vbCrLf
texte = texte & " Merci de trouver ci-joint un état recap" & vbCrLf
On Error Resume Next
With OutMail
.To = Range("b29").Value
.CC = ""
.BCC = ""
.Subject = "Bienvenue dans votre"
.Body = texte
' You can add other files by uncommenting the following line.
.Attachments.Add sPath & FicTmp
' In place of the following statement, you can use ".Display" to
' display the mail.
.display
'.Send
End With
On Error GoTo 0
' Supprimer le fichier temporaire
Kill sPath & FicTmp
' Effacer les vairable objet
Set OutMail = Nothing
Set OutApp = Nothing
End SubJe n'ai aucun problème mon code fonctionne, en revanche je travaille sur le "D:\"
A+
Re,
y a toujours quéquchose qui m'échappe, avec ton code j'ai toujours erreur 40036 sur la ligne
Rng = .Cells.SpecialCells(xlCellTypeLastCell).AddressErreur définie par l'application ou par l'objet.
Cordialement
--> BrunoM45
Met toi en situation réelle, ouvre un classeur existant, ajoute un module et copie ton code, remplace "STATSESAME" par le nom d'une de ses feuilles.
Et lance ta macro... qui fonctionne !!
Re
Ok.. ok...
SITUATION RELLE ... la feuille est remplie
Copie et colle mon code et lance le code qui FONCTIONNNE
a+
Pour tester met ton classeur à disposition !
Je dois reconnaître que ton classeur fonctionne, je pense que le problème vient de la version d'Excel.
Tu est en =>2007 vu l'extension du fichier
Quand je fais exactement le même chose mais avec un classeur xls (qui ne provient pas d'un xlsm) ça plante comme le dis Zombe.
Peut-être encore un mystère d'Excel.
Désolé..
A+
Re,
lermite a écrit :Je dois reconnaître que ton classeur fonctionne, je pense que le problème vient de la version d'Excel.
Tu est en =>2007 vu l'extension du fichier
Quand je fais exactement le même chose mais avec un classeur xls (qui ne provient pas d'un xlsm) ça plante comme le dis Zombe.
Peut-être encore un mystère d'Excel.
Désolé..
A+
No soucy
En revanche tu as un gros soucis avec ton PC
Testé avec la version 2003 (car je teste tous mes codes) pas de problème non plus !?
A+
Moi aussi je teste tous mes codes.
Essaye ce classeur, c'est une copie d'un classeur que j'ai posté un peu plus tôt.
La macro est dans Module 1
Tu dis,..
Cdlt
Salut Lermite et BrunoM45
merci pour les échanges enrichissant que vous accordez à mon sujet.
Suis actuemllemnt hors de mon service.
Je test les code de Bruno et vous donne mes appréciations.
Encore merci.