IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro OK office 2003, mais HS office 2010


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations forums :
    Inscription : Mai 2011
    Messages : 38
    Points : 16
    Points
    16
    Par défaut Macro OK office 2003, mais HS office 2010
    Bonjour à tous.

    je rencontre un petit problème concernant l'envoi des mails depuis un fichier excel.
    sous excel 2003, aucun problème.
    par contre, sous office 2010, cela ne fonctionne pas.

    Pouvez-vous m'aider?

    ci dessous le code

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    Option Explicit
     
    Dim rame As String
    Dim Nature As String
    Dim motrice As String
    Dim jour As String
    Dim Dasri As String
    Dim NomSvg As String
    Dim DestMail As String
    Dim CheminSauvegarde As String
    Dim ol As New Outlook.Application
    Dim olmail As MailItem
     
    Private Sub init()
        rame = Cells(15, 4)
        Nature = Cells(19, 4)
        motrice = Cells(17, 4)
        jour = Cells(13, 2)
        Dasri = Cells(21, 4)
    End Sub
     
    Sub Clic_Bouton()
        On Error GoTo ErreurRep
     
        init
     
        If (test = True) Then
     
            'SAUVEGARDE
            'Initie la variable du nom de chemin
            CheminSauvegarde = "\\chemin réseau"
     
            'renseigne les variables pour le nom du fichiers: incrémente les infos récupérées et affiche un message si enregistrement OK
            NomSvg = "nom du fichier avec date et heure".xls"
     
            'enregistre le fichier
            ThisWorkbook.SaveCopyAs Filename:=CheminSauvegarde & NomSvg
     
             'msg box pour l'tilisateur qui indique que le message a bien été sauvegardé
            MsgBox ("Le fichier a bien été sauvegardé")
     
            'ENVOYER UN MAIL POUR AVERTIR
            'renseigne la variable du destinataire du mail
             DestMail = "destinataire@societe.fr"
     
             'fonction envoie mail
     
                Set ol = New Outlook.Application
                Set olmail = ol.CreateItem(olMailItem)
                    With olmail
                        .To = DestMail
                        .Subject = "ALERTE Nouveau fichier choc généré"
                        .Body = "Un nouveau fichier choc a été généré. Le nom de ce fichier est " & NomSvg
                        .Send   
                    End With
     
     
        Else
            MsgBox (Application.UserName & "  Le fichier n'a pas été sauvegardé." & "-" & " Merci de complèter correctement le fichier !!")
        End If
     
        Exit Sub
     
    ErreurRep:
        MsgBox "Répertoire de destination invalide"
    End Sub
    Function test() As Boolean
        test = True
     
        If rame = "" Then
            MsgBox ("Vous n'avez pas saisi le numéro de la !!")
            test = False
            Exit Function
        End If
     
        If motrice = "" Then
            MsgBox ("Vous n'avez pas saisi le numéro de la !!")
            test = False
            Exit Function
        End If
     
        If Nature = "" Then
            MsgBox ("Vous n'avez pas saisi  !!")
            test = False
            Exit Function
        End If
     
        If jour = "" Then
            MsgBox ("Vous n'avez pas saisi les dates !!")
            test = False
            Exit Function
        End If
     
        If Dasri = "" Then
            MsgBox ("Avez-vous utilisé un container jaune ??")
            test = False
            Exit Function
        End If
    End Function
    sur excel 2010, la macro s'arrete ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set olmail = ol.CreateItem(olMailItem)
    d'avance merci (NB: j'ai supprimé les infos de certaines variables, mais rien concernant l'envoi des mails)

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    1) Vérifie que tu as la référence Bibliothèque d'objets : Microsoft Outlook 11.0
    2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim olmail As Outlook.MailItem
    Set olmail = ol.CreateItem(olMailItem)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations forums :
    Inscription : Mai 2011
    Messages : 38
    Points : 16
    Points
    16
    Par défaut
    Bonjour

    Effectivement, je n'ai pas la bibliothèque Microsoft Outlook 11.0
    Mais j'ai Microsoft Outlook 14.00, que j'ai bien évidemment coché!

    J'ai également coché toutes les bibliothèque contenant outlook, mais même problème!

    pour info:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set olmail = ol.CreateItem(olMailItem)
    me renvoie, avec le débug d'office 2010, avec l'infobulle lors du survol des variable:

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ol.CreateItem(olMailItem) = 0
    D'autres idées?
    Car là, je sèche.

    Aussi:lors de l'erreur:

    erreur d'execution 13'

    imcompatibilité de type

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Je suis perplexe..

    Essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ol = CreateObject("Outlook.Application")
    Sinon essaie de recharger tes dll et tes olb

    Demarer / Run et tu tappes:

    Regsvr32.exe "C:\tondossier\tonfichier.dll"

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations forums :
    Inscription : Mai 2011
    Messages : 38
    Points : 16
    Points
    16
    Par défaut
    Bonjour et merci pour ta patience!

    toujours la même chose avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'fonction envoie mail
     
                Set ol = CreateObject("Outlook.Application")
                Set olmail = ol.CreateItem(olMailItem)
                    With olmail
                        .To = DestMail
                        .Subject = "ALERTE Nouveau fichier choc généré"
                        .Body = "Un nouveau fichier choc a été généré. Le nom de ce fichier est " & NomSvg
                        .Send  
                    End With
    par contre: impossible d'executer

    Regsvr32.exe "C:\tondossier\tonfichier.dll"

    1. Je ne suis pas admin du PC
    2. cible impossible à trouver.


    bref, pas mieux

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    et bien... décoche recoche la référence Outlook.. et sinon... bah passe par un mail par CDO..

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations forums :
    Inscription : Mai 2011
    Messages : 38
    Points : 16
    Points
    16
    Par défaut
    Merci pour tes conseils

    Au niveau procédure: cdo fonctionne de la même manière?
    Je n'ai pas encore fait de recherche dessus.

    Qu'elle différence entre Outlook et cdo?
    Sachant qu'outlook express n'est pas installé sur les machines.
    Est ce gênant?

    Encore merci pour tout.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations forums :
    Inscription : Mai 2011
    Messages : 38
    Points : 16
    Points
    16
    Par défaut
    Merci pour tes conseils

    Au niveau procédure: cdo fonctionne de la même manière?
    Je n'ai pas encore fait de recherche dessus.

    Qu'elle différence entre Outlook et cdo?
    Sachant qu'outlook express (ou windows mail) n'est pas installé sur les machines.
    Est ce gênant?

    Encore merci pour tout.


    Un dernier détails que j'ai complètement oublié: les postes sous office 2003 fonctionne sous win xp et les postes avec office 2010 sous win 7

  9. #9
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    CDO Pousse directement les mails en se connectant au smtp en mode telnet.

    Rien besoin d'installer.

    T'as un exemple sur une discussion un peu plus bas:

    "Alerte par mail date expirée"

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations forums :
    Inscription : Mai 2011
    Messages : 38
    Points : 16
    Points
    16
    Par défaut
    Aie!
    Je suis sur un réseau d'entreprise et nous bossons avec exchange!
    Impossible de passer avec un smtp!

    Je vais continuer à creuser!

  11. #11
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Vaut le coup d'essayer:

    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
    33
    34
    35
    36
    37
    38
    ' Based on Ron de Bruin's code of Example 1
    ' from link http://www.rondebruin.nl/mail/folder2/mail1.htm
    Sub Mail_workbook_Outlook()
     
      Dim OutApp As Object, OutMail As Object
      Dim cmd As String, t As Single
     
      ' Try to GetObject
      On Error Resume Next
      Set OutApp = GetObject(, "Outlook.Application")
      If Err Then
        ' --> Simulate CreateObject("Outlook.Application")
        cmd = """" & Application.Path & "\OUTLOOK.EXE"""
        Shell cmd, vbHide
        t = Timer + 10  ' timeout = 10 seconds max
        While OutApp Is Nothing And Timer < t
          Set OutApp = GetObject(, "Outlook.Application")
        Wend
        ' <-- End of simulation
      End If
      Set OutMail = OutApp.CreateItem(0)
     
      With OutMail
        .To = "Please@DoNotMail.it"
        .CC = ""
        .BCC = ""
        .Subject = "This is the Subject line"
        .Body = "Hi there"
        .Attachments.Add ActiveWorkbook.FullName
        .Display   'or use .Send
      End With
      On Error GoTo 0
     
      Set OutMail = Nothing
      'OutApp.Quit
      Set OutApp = Nothing
     
    End Sub

Discussions similaires

  1. Compatibilité Macros Office 2003/2010
    Par Miaeln dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2013, 09h23
  2. Macro PP7.1 et Office 2003
    Par nicovbs dans le forum Cognos
    Réponses: 0
    Dernier message: 10/06/2009, 14h14
  3. Macros du Pack Office 2003
    Par Daejung dans le forum Excel
    Réponses: 6
    Dernier message: 29/10/2008, 20h06
  4. Installer office 2007 sans éffacer office 2003
    Par vg-matrix dans le forum Microsoft Office
    Réponses: 7
    Dernier message: 29/01/2008, 07h49
  5. Réponses: 2
    Dernier message: 19/10/2007, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo