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 :

Envoyer un email selon la langue [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2018
    Messages : 8
    Par défaut Envoyer un email selon la langue
    Bonjour,

    Je dois envoyer un email soit en allemand, soit en français suivant la valeur d'une cellule (FR ou DE).
    j'ai voulu utiliser un If... then... mais il ne me reconnaît pas le bloc.

    Quelqu'un a une idée svp?

    Voici mon 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
    Sub Envoyer()
     
    Dim Chemin As Variant
    Dim myApp As Object, myitem As Object, signature As String
    Dim Langue As String
     
    Dim sFind
    Dim nSearch2 As String
    nSearch2 = Range("e3").Value
    Langue = "DE"
    Chemin = Worksheets("EnvoiDocs").Range("sCS").Offset(0, 3).Value
     
    Set sFind = Sheets("EnvoiDocs").Columns(8).Find(nSearch2, LookIn:=xlValues, MatchCase:=False)
        If Not sFind Is Nothing Then
           Range(sFind.Address).Name = "sCS"
           Range("sCS").Select
        End If
     
     
    If Range("sCS").Offset(0, 3).Value = Langue Then GoTo mailDE
    End If
     
    Set myApp = CreateObject("Outlook.Application")
    Set myitem = myApp.CreateItem(olMailItem)
    With myitem
        .Display
        End With
            signature = myitem.body
     
    With myitem
    myitem.Subject = "Envoi d'informations " & Worksheets("EnvoiDocs").Range("sCS").Offset(0, 1).Value
    myitem.body = "Bonjour," & _
    vbNewLine & signature
     
     
    myitem.Attachments.Add Chemin
    myitem.to = "xxxx.xxxx@xxxx.com"
    End With
     
    End Sub

  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,

    Si tu mets au bout de ton bloc If--Then l'instruction à exécuter, il ne faut pas mettre de End If en dessous, juste comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Range("sCS").Offset(0, 3).Value = Langue Then GoTo mailDE
    et si tu as besoin d'un Else, c'est comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Range("sCS").Offset(0, 3).Value = Langue Then GoTo mailDE Else GoTo mailFR
    mais je te conseille de ne pas utiliser GoTo, mets test instructions à l'intérieur des blocs If--Then--Else--End If

  3. #3
    Membre averti
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2018
    Messages : 8
    Par défaut En enlevant les GoTo, ça marche
    Merci pour ton Conseil, j'ai enlever les Goto et j'ai modifié mon code comme tu m'as dis. Ca m'a quand même demandé un Endif que j'ai rajouté au-dessus du Endsud et ça marche parfaitement.
    Je redonne mon code modifié, pour ceux qui voudraient s'en inspirer. merci encore pour le coup de main, je bloquais depuis ce matin dessus!


    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
    Sub Envoyer()
     
    Dim Chemin As Variant
    Dim myApp As Object, myitem As Object, signature As String
    Dim Langue As String
    Dim sFind
    Dim nSearch2 As String
    nSearch2 = Range("e3").Value
     
    Chemin = Worksheets("EnvoiDocs").Range("sCS").Offset(0, 3).Value
     
    Set sFind = Sheets("EnvoiDocs").Columns(8).Find(nSearch2, LookIn:=xlValues, MatchCase:=False)
        If Not sFind Is Nothing Then
           Range(sFind.Address).Name = "sCS"
           Range("sCS").Select
        End If
    Langue = "DE"
     
     
    If Range("sCS").Offset(0, 2).Value = Langue Then
    Set myApp = CreateObject("Outlook.Application")
    Set myitem = myApp.CreateItem(olMailItem)
        With myitem
        .Display
        End With
            signature = myitem.body
     
    With myitem
    myitem.Subject = "Unterlagen " & Worksheets("EnvoiDocs").Range("sCS").Offset(0, 1).Value
    myitem.body = "Guten tag," & _
    vbNewLine & signature
    myitem.Attachments.Add Chemin
    myitem.to = "xxx.xxx@xxx.com"
    End With
     
    Else
    Set myApp = CreateObject("Outlook.Application")
    Set myitem = myApp.CreateItem(olMailItem)
        With myitem
        .Display
        End With
            signature = myitem.body
     
    With myitem
    myitem.Subject = "Envoi d'informations " & Worksheets("EnvoiDocs").Range("sCS").Offset(0, 1).Value
    myitem.body = "Bonjour," & vbCrLf & vbCrLf & "Je vous remercie pour notre conversation au téléphone." & vbCrLf & _
    vbCrLf & vbCrLf & "Cordialement," & _
    vbNewLine & signature
    myitem.Attachments.Add Chemin
    myitem.to = "xxxx.xxxx@xxx.com
    End With
    End If
     
    End Sub

  4. #4
    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,

    La bonne pratique veut qu'on indente le code comme ci-dessous et de cette façon, tu aurais pu voir qu'il te manquait le End If. Si tu utilises un jour VB.Net, cette indentation est faite automatiquement mais malheureusement, pas dans VBA.
    Quand tu entre un If Then, passe tout de suite à la ligne suivante et entre le End If de façon à ne pas l'oublier, faire de même pour les instruction similaire comme Select Case en End Select, With End With, etc...
    Personnellement, je rajoute une ligne vide pour aérer le code mais beaucoup préfèrent que les lignes soient collées les unes au autres, chacun sa façon de voir !
    Quand tu utilises With End With c'est pour éviter la répétition donc, quant tu fais "With myitem", myitem ne devrait plus apparaître, à quelques exceptions près, dans le bloc With End With :
    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
     
    Sub Envoyer()
     
        Dim Chemin As Variant
        Dim myApp As Object, myitem As Object, signature As String
        Dim Langue As String
        Dim sFind
        Dim nSearch2 As String
     
        nSearch2 = Range("e3").Value
     
        Chemin = Worksheets("EnvoiDocs").Range("sCS").Offset(0, 3).Value
     
        Set sFind = Sheets("EnvoiDocs").Columns(8).Find(nSearch2, LookIn:=xlValues, MatchCase:=False)
     
        If Not sFind Is Nothing Then
     
            Range(sFind.Address).Name = "sCS"
            Range("sCS").Select
     
        End If
     
        Langue = "DE"
     
        If Range("sCS").Offset(0, 2).Value = Langue Then
     
            Set myApp = CreateObject("Outlook.Application")
            Set myitem = myApp.CreateItem(olMailItem)
     
            With myitem
     
                signature = .body
                Display
                .Subject = "Unterlagen " & Worksheets("EnvoiDocs").Range("sCS").Offset(0, 1).Value
                .body = "Guten tag," & _
                vbNewLine & signature
                .Attachments.Add Chemin
                .to = "xxx.xxx@xxx.com"
     
            End With
     
        Else
     
            Set myApp = CreateObject("Outlook.Application")
            Set myitem = myApp.CreateItem(olMailItem)
     
            With myitem
     
                signature = .body
                .Display
                .Subject = "Envoi d'informations " & Worksheets("EnvoiDocs").Range("sCS").Offset(0, 1).Value
                .body = "Bonjour," & vbCrLf & vbCrLf & "Je vous remercie pour notre conversation au téléphone." & vbCrLf & _
                vbCrLf & vbCrLf & "Cordialement," & _
                vbNewLine & signature
                .Attachments.Add Chemin
                .to = "xxxx.xxxx@xxx.com"
     
            End With
     
        End If
     
    End Sub

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/01/2016, 16h17
  2. Script envoyant des emails
    Par pl14 dans le forum Réseau/Web
    Réponses: 10
    Dernier message: 03/05/2006, 16h27
  3. Réponses: 4
    Dernier message: 29/09/2005, 18h29
  4. Envoyer un email
    Par Gourouni dans le forum ASP
    Réponses: 7
    Dernier message: 17/01/2005, 16h39
  5. Pb pour envoyer un email
    Par Décibel dans le forum Flash
    Réponses: 2
    Dernier message: 15/11/2003, 09h54

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