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 :

VBA, If...Then...Else [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 6
    Par défaut VBA, If...Then...Else
    Bonjour a tous,

    J'ai réussi à l'aide des conversations déjà existantes sur le forum à créer un module permettant lors de l'appui sur un bouton :
    -enregistrer le fichier excel
    -de forcer l'ouverture d'outlook puis d'envoyer un mail
    -de fermer excel

    Et ce pour un ordinateur en32bit et une autre version pour les 64bit.
    Pour associer la bonne exécution, selon la version de l'ordinateur, j'ai effectué une recherche pour retrouver le dossier permettant d'ouvrir outlook dans la version 64bit.
    Or ma fonction If ... Then ... Else ... End If ne fonctionne pas.

    C'est pourquoi je vous demande de l'aide.
    En espérant avoir été assez clair ^^
    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
    Private Sub CommandButton2_Click()
     
    ActiveWorkbook.Save
     
    If Dir("C:\Program Files (x86)\", vbDirectory) = "" Then
        Shell "C:\Program Files (x86)\Microsoft Office\Office12\outlook.exe"
     
     
     
        'Sub UseOutlook()
            Dim MonOutlook As Object
            Dim MonMessage As Object
            ' On crée une instance d'Outlook :
            Set MonOutlook = CreateObject("Outlook.Application")
            ' Et on crée un élément Outlook, qui sera un message E-Mail :
            Set MonMessage = MonOutlook.CreateItem(0)
            MonMessage.To = "xxxxx.xxxxx@xxxxx.fr"
            MonMessage.Subject = "Erreur DXF"
            MonMessage.body = "Des modifications ont été apportées"
            MonMessage.send
            Set MonOutlook = Nothing ' On ferme !
            ActiveWorkbook.Close
     
    Else
     
        Shell "C:\Program Files\Microsoft Office\Office12\OUTLOOK.EXE", 3
     
     
        'Sub UseOutlook()
            ' On crée une instance d'Outlook :
            Set MonOutlook = CreateObject("Outlook.Application")
            ' Et on crée un élément Outlook, qui sera un message E-Mail :
            Set MonMessage = MonOutlook.CreateItem(0)
            MonMessage.To = "xxxxx.xxxxx@xxxxx.fr"
            MonMessage.Subject = "Erreur DXF"
            MonMessage.body = "Des modifications ont été apportées"
            MonMessage.send
            Set MonOutlook = Nothing ' On ferme !
            ActiveWorkbook.Close
     
     
    End If
     
    End Sub
    Merci !

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Il n'est pas nécessaire d'utiliser "Shell", avec "CreateObject" le compilateur saura à quel logiciel faire appel.

    Hervé.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 6
    Par défaut
    Merci Hervé pour ta réponse, malheureusement mes connaissances étant limitées en VBA je n'ai pas tout compris..

    Mais, grâce à la chance du débutant, et en bidouillant avec la touche F8 (que je connais grâce à ce forum), j'ai réussi à modifier mon code ! Je le met en pièce jointe si jamais ça peut servir à d'autres.
    Je crois que le problème venait d'une inversion des codes après le Then et le Else..

    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
    Private Sub CommandButton2_Click()
     
    ActiveWorkbook.Save
     
    If Dir("C:\Program Files (x86)\", vbDirectory) = "" Then
    Shell "C:\Program Files\Microsoft Office\Office12\OUTLOOK.EXE", 3
     
        'Sub UseOutlook()
            Dim MonOutlook As Object
            Dim MonMessage As Object
            ' On crée une instance d'Outlook :
            Set MonOutlook = CreateObject("Outlook.Application")
            ' Et on crée un élément Outlook, qui sera un message E-Mail :
            Set MonMessage = MonOutlook.CreateItem(0)
            MonMessage.To = "xxxxx.xxxxxx@xxxxx.fr"
            MonMessage.Subject = "Erreur DXF"
            MonMessage.body = "Des modifications ont été apportées"
            MonMessage.send
            Set MonOutlook = Nothing ' On ferme !
            ActiveWorkbook.Close
     
    Else
    Shell "C:\Program Files (x86)\Microsoft Office\Office12\outlook.exe"
     
        'Sub UseOutlook()
            ' On crée une instance d'Outlook :
            Set MonOutlook = CreateObject("Outlook.Application")
            ' Et on crée un élément Outlook, qui sera un message E-Mail :
            Set MonMessage = MonOutlook.CreateItem(0)
            MonMessage.To = "xxxxx.xxxxxx@xxxxx.fr"
            MonMessage.Subject = "Erreur DXF"
            MonMessage.body = "Des modifications ont été apportées"
            MonMessage.send
            Set MonOutlook = Nothing ' On ferme !
            ActiveWorkbook.Close
     
    End If
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] if...then...else
    Par jive dans le forum ASP
    Réponses: 5
    Dernier message: 16/09/2005, 14h11
  2. [TagLib] Structure if then else
    Par mush_H dans le forum Taglibs
    Réponses: 5
    Dernier message: 19/07/2005, 15h31
  3. If Then Else
    Par Piout dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 24/02/2005, 16h09
  4. IF THEN ELSE imbriqués
    Par nuke_y dans le forum Oracle
    Réponses: 2
    Dernier message: 15/11/2004, 14h57
  5. [CR 7] [débutante] pb avec if then else
    Par xs_nady dans le forum Formules
    Réponses: 8
    Dernier message: 28/05/2004, 15h36

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