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

VBA Outlook Discussion :

[OUTLOOK 2013/2010] Envoyer automatiquement un mail à deux utilisateurs liés


Sujet :

VBA Outlook

  1. #1
    Membre du Club
    Avatar de Roln1k
    Homme Profil pro
    Etudiant en Ingénierie Réseau
    Inscrit en
    Novembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant en Ingénierie Réseau

    Informations forums :
    Inscription : Novembre 2013
    Messages : 53
    Points : 61
    Points
    61
    Billets dans le blog
    1
    Par défaut [OUTLOOK 2013/2010] Envoyer automatiquement un mail à deux utilisateurs liés
    Bonjour,

    Je souhaiterais savoir s'il existait un script outlook qui permettrait de réaliser la chose suivante :

    Lorsqu'un technicien envoie un mail à machin@exemple.com, le commercial en lien avec machin est automatiquement mis en copie

    Le technicien ne connait pas nécessairement le commercial en rapport avec le client, rajouter le commercial manuellement en copie n'est pas vraiment une option. Je sais qu'il existe des règles à mettre en place sur outlook du genre (si envoie de mail à X, mettre Y en copie), mais il faudrait faire une règle par client (ou plutot par domaine, tel qu'@exemple) et exporter ces règles sur chaque postes, et les refaire pour chaque technicien. Je me demandais donc s'il existait un solution plus simple que les règles, comme un script, permettant une utilisation plus rapide et simple à mettre en oeuvre que les règles outlook.

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    Si tu as une table de correspondance (fichier excel, csv,txt ...), tu peux le faire aisément en adaptant cette macro
    http://outlook.developpez.com/faq/?p...mp_rempli_auto

    Ce qu'il faudra ensuite c'est déployé la solution sur tous les postes concernés !

  3. #3
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Si le lien existe entre les 2 personnes, dans Exchange on peut aussi le récupérer de là!

  4. #4
    Membre du Club
    Avatar de Roln1k
    Homme Profil pro
    Etudiant en Ingénierie Réseau
    Inscrit en
    Novembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant en Ingénierie Réseau

    Informations forums :
    Inscription : Novembre 2013
    Messages : 53
    Points : 61
    Points
    61
    Billets dans le blog
    1
    Par défaut
    Merci beaucoup, je vais tenter de me baser sur ce tutoriel pour résoudre mon problème.

  5. #5
    Membre du Club
    Avatar de Roln1k
    Homme Profil pro
    Etudiant en Ingénierie Réseau
    Inscrit en
    Novembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant en Ingénierie Réseau

    Informations forums :
    Inscription : Novembre 2013
    Messages : 53
    Points : 61
    Points
    61
    Billets dans le blog
    1
    Par défaut
    Salut, j'ai essayé de me pencher sur le script, n'ayant pas envie de saisir les règles sur chaque poste, et ai commencé à vouloir adapter le script que tu m'as fourni (j’espère avoir le droit de tutoyer ) et y ai ajouté un switch afin que selon l'adresse mail renseignée pour le destinataire, le commercial adéquat soit mis en copie.

    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
    Private Sub Application_ItemSend(ByVal Item As Object, _
     
                                     Cancel As Boolean)
     
    'By Oliv' 29/06/2007 pour Outlook 2003
    'Modifié par D. Schneider le 30/03/2015
     
        Dim myRecipient As Outlook.Recipient
     
        If Not Item.Class = olMail Then GoTo fin
     
        Dim prompt As String
     
        '########################correspondance CC selon destinataire##############################
     
     
    	Dim destinataire As Outlook.Recipient
     
            'insérer fonction pour récupérer domane du destinataire
     
    	Select Case domaine_destinataire
    		Case "@exemple1.fr"
    			cci = "commercialA@emetteur.fr"
    		Case "@exemple2.fr"
    			cci = "commercialB@emetteur.fr"
    		Case "@exemple2.fr"
    			cci = "commercialC@emetteur.fr"
    		Case Else
    			GoTo fin
    	End Select
     
    	'########################Option CC##############################
     
        prompt = "Ajouter le cc " & cci & " à " & Item.Subject & "?"
     
        If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbYes Then
     
            Set myRecipient = Item.Recipients.Add(cci)
     
            myRecipient.Type = olCC
     
            myRecipient.Resolve
     
            If myRecipient.Resolved = False Then
     
                MsgBox "L'adresse Email n'est pas correcte !", vbCritical, "Erreur"
     
                Cancel = True
            End If
     
        End If
     
        '#######################FIN#####################################
     
    fin:
     
    End Sub
    Dans la pratique, je vais donc récupérer le destinataire du mail , récupérer le domaine du destinataire (@exemple1.fr par exemple) et la fonction switch va mettre en copie le correspondant commercial assigné à ce client (commercial1@emetteur.fr) , mais je ne sais pas comment faire pour récupérer uniquement la partie post @.

    Avec le peu de souvenirs de code me restant je suppose que l'on peut convertir en string, et ne retenir que la partie après un certain char, en l'occurence le @ mais je ne trouve pas vraiment de manière de faire celà. Y'a-t-il éventuellement un fonction outlook pour n'avoir que le domaine du destinataire ?

  6. #6
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Le tutoiement bien sur !
    Utilise split avec comme séparateur @

  7. #7
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Par contre, comme le déploiement des macros n'est pas des plus simple, il est préférable d'utiliser un fichier txt où tu mettras tes équivalences, comme cela lorsqu'il y a des changements tu ne modifies que le fichier texte.

    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
    Public MyArray()
     
    Sub Test_Get_Cial()
    Call Alimente_Liste
        MsgBox Get_Cial("exemple1.fr")
    End Sub
     
    Sub Alimente_Liste()
        Dim intFic As Integer
        Dim strLigne As String
        intFic = FreeFile
        Open "C:\temp\Domaine-Cial.txt" For Input As intFic
        i = 0
        While Not EOF(intFic)
            Line Input #intFic, strLigne
            ReDim Preserve MyArray(i)
            MyArray(i) = strLigne
            i = i + 1
        Wend
        Close intFic
    End Sub
     
     
    Function Get_Cial(Email) As String
        Get_Cial = ""
        For i = 0 To UBound(MyArray)
            If Split(MyArray(i), ";", , vbTextCompare)(0) = Email Then
                Get_Cial = Split(MyArray(i), ";", , vbTextCompare)(1)
                Exit For
            End If
        Next i
    End Function

  8. #8
    Membre du Club
    Avatar de Roln1k
    Homme Profil pro
    Etudiant en Ingénierie Réseau
    Inscrit en
    Novembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant en Ingénierie Réseau

    Informations forums :
    Inscription : Novembre 2013
    Messages : 53
    Points : 61
    Points
    61
    Billets dans le blog
    1
    Par défaut
    Salut, j'ai donc continué en me basant sur le split, pour obtenir le résultat suivant :

    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
    Dim destinataire As Outlook.Recipient
    	Dim sDomain As String
    	Dim arTemp As Array
     
    	arTemp = Split(destinataire, "@")
    	sDomain = arTemp(1)
     
    	Select Case sDomain
    		Case "@hotmail.fr"
    			cci = "******@*****.fr"
    		Case "@exemple2.fr"
    			cci = "commercialB@emetteur.fr"
    		Case "@exemple2.fr"
    			cci = "commercialC@emetteur.fr"
    		Case Else
    			GoTo fin
    	End Select
    Si j'ai bien compris, arTemp = Split(destinataire, "@") va diviser l'adresse en deux string qu'elle met dans un tableau (ici arTemp) et je récupère la deuxieme partie (c'est à dire le domaine) avec sDomain = arTemp(1) qui va récupérer la chaine en deuxieme position du tableau.

    J'ai aussi vu cette écriture mais malgré mais recherches sur le net , je n'arrive pas à saisir ce que fait le ubound dans cette ligne.
    arTemp = Split(destinataire, "@")
    sDomain = arTemp(UBound(arTemp))


    On m'a également conseillé cette méthode un peu plus "bidouille"
    Right("martin@fontstuff.com", Len("martin@fontstuff.com") - InStr("martin@fontstuff.com", "@"))

    Je vais déja testé ça (une fois que j'aurais compris comment charger et tester mon fichier .vb sur outlook ) et vais me pencher sur le fichier de correspondance, car si je peux le mettre sur le serveur, ça pourra me faire un fichier généralisé et offrira un bon gain de temps

  9. #9
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    SAlut,

    Si tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    arTemp = Split(destinataire, "@", , vbTextCompare)
    	sDomain = arTemp(1)
    vbTextCompare c'est pour ne pas tenir compte des majuscules/minuscules

    la fonction split te crée une variable tableau, Ubound sert à voir combien d'éléments il y a dans ton tableau

    dans une adresse Email, il n'y a qu'une fois @ donc tu n'auras au mieux que 2 éléments arTemp(0) et arTemp(1) (ca commence à zéro par défaut)

    tu auras donc arTemp(0)=toto et arTemp(1)=hotmail.fr

    le @ est supprimé.

    Sinon tu peux aussi faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if InStr(1, destinataire, "@hotmail.fr", vbTextCompare)>0 then "match"
    ici on verifie à quel endroit commence la séquence "@hotmail.fr" dans l'adresse du destinataire comme "toto@hotmail.fr"

  10. #10
    Membre du Club
    Avatar de Roln1k
    Homme Profil pro
    Etudiant en Ingénierie Réseau
    Inscrit en
    Novembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant en Ingénierie Réseau

    Informations forums :
    Inscription : Novembre 2013
    Messages : 53
    Points : 61
    Points
    61
    Billets dans le blog
    1
    Par défaut
    Une partie de mon code ressemble à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Dim destinataire As Outlook.Recipient
        Dim sDomain As String
        Dim arTemp As Variant
        
        arTemp = Split(destinataire, "@", , vbTextCompare)
        sDomain = arTemp(1)
    Et lorsque je cherche à envoyer un mail pour tester l'ensemble du code, je reçois le message suivant :
    Erreur 91, variable d'objet ou variable de bloc with non définie
    En lançant le débogage, la ligne en jaune ci-dessus apparait en surlignée. Et en positionnant ma souris sur la variable destinataire, je constate qu'elle n'a pas de valeurs. Je soupçonne que peut-être la premiere ligne de code ne récupère pas l'adresse et pose soucis, ou peut-etre c'est une cause tout autre

  11. #11
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    C'est normal !
    tu as déclaré ta variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim destinataire As Outlook.Recipient
    mais pas initialisée (elle est vide quoi)

    tu dois avoir un truc comme (ici je prend le premier destinataire):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set destinataire=item.recipients(1)
    et ensuite plutôt

    arTemp = Split(destinataire.address, "@", , vbTextCompare)

  12. #12
    Membre du Club
    Avatar de Roln1k
    Homme Profil pro
    Etudiant en Ingénierie Réseau
    Inscrit en
    Novembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant en Ingénierie Réseau

    Informations forums :
    Inscription : Novembre 2013
    Messages : 53
    Points : 61
    Points
    61
    Billets dans le blog
    1
    Par défaut
    ah okay, je croyais que la ligne "Dim destinataire As Outlook.Recipient" initialisait déjà la variable, mea culpa

    J'ai donc cette partie de code que je souhaitais tester, mais cett fois-ci j'ai une erreur d'incompatibilité de type 13 et le débogage renvoie à la ligne ici bas en orange. Mais j'ai du mal à comprendre pourquoi la variable recip est du mauvais type :/

    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
    Dim recip As Outlook.Recipients
        Dim sDomain As String
        Dim arTemp As Variant
        
        Set recip = Item.Recipients(1)
        arTemp = Split(recip.Address, "@", , vbTextCompare)
        sDomain = arTemp(1)
        
        Select Case sDomain
            Case "hotmail.fr"
                cci = "*******@*****.fr"
            Case "exemple2.fr"
                cci = "commercialB@emetteur.fr"
            Case "exemple2.fr"
                cci = "commercialC@emetteur.fr"
            Case Else
                GoTo fin
        End Select

  13. #13
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,

    il faut déclarer en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim recip As Outlook.Recipient
    .Recipients c'est tous les destinataires
    .Recipient c'est 1 destinataire (=.Recipients(1))

    Dans la plupart des cas quand tu ne sais pas tu mets juste
    mais tu n'as pas l'autocompletion des propriétés/méthodes...

  14. #14
    Membre du Club
    Avatar de Roln1k
    Homme Profil pro
    Etudiant en Ingénierie Réseau
    Inscrit en
    Novembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant en Ingénierie Réseau

    Informations forums :
    Inscription : Novembre 2013
    Messages : 53
    Points : 61
    Points
    61
    Billets dans le blog
    1
    Par défaut
    Hourra ! Cette partie est fonctionelle grâce à toi ! Je n'ai plus qu'a rajouter l'autre partie qui permettra de se baser sur un fichier excel ou .txt plutot qu'un switch

  15. #15
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    ça je l'ai déjà fait plus haut

    ps: le fichier txt doit contenir les correspondances comme cela

    domaine1.fr;cial1.test.fr
    domaine2.fr;cial2.test.fr

  16. #16
    Membre du Club
    Avatar de Roln1k
    Homme Profil pro
    Etudiant en Ingénierie Réseau
    Inscrit en
    Novembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant en Ingénierie Réseau

    Informations forums :
    Inscription : Novembre 2013
    Messages : 53
    Points : 61
    Points
    61
    Billets dans le blog
    1
    Par défaut
    oui, je suis justement entrain d'essayer de chercher à le comprendre (et à comprendre comment faire en sorte qu'il s'execute). La programmation, c'est pas ma tasse de thé

    Voici comment je crois interpréter le code pour le moment
    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
    Public MyArray()
     
    Sub Test_Get_Cial()
    Call Alimente_Liste Ceci va faire appel à la fonction Alimente_liste ci dessous 
        MsgBox Get_Cial("exemple1.fr") ça je n'ai pas bien compris, ça va afficher "exemple1.fr"  ou va afficher le commercial 
    End Sub
     
    Sub Alimente_Liste()
        Dim intFic As Integer
        Dim strLigne As String
        intFic = FreeFile
        Open "C:\temp\Domaine-Cial.txt" For Input As intFic ouverture du fichier qui contient les correspondance
        i = 0
        While Not EOF(intFic) boucle qui va parcourir l'ensemble du fichier Domaine-Cial.txt.txt et remplir un tableau MyArray
            Line Input #intFic, strLigne
            ReDim Preserve MyArray(i) permet de conserver le format du tableau MyArray si on y rajoute une dimension 
            MyArray(i) = strLigne
            i = i + 1
        Wend
        Close intFic
    End Sub
     
     
    Function Get_Cial(Email) As String
        Get_Cial = ""
        For i = 0 To UBound(MyArray)
            If Split(MyArray(i), ";", , vbTextCompare)(0) = Email Then on va vérifier chaque ligne du fichier jusqu'à trouver le bon nom de domaine pour...
                Get_Cial = Split(MyArray(i), ";", , vbTextCompare)(1) ... returner le mail du commercial lié
                Exit For
            End If
        Next i
    End Function
    J'avouerais n'avoir pas tout à fait compris comment celà va me permettre d'insérer le cc. Devrais-je ensuite tourner le code ainsi
    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
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
     
    'By Oliv' 29/06/2007 pour Outlook 2003
    'Modifié par D. Schneider le 30/03/2015
     
        
        
        
        If Not Item.Class = olMail Then GoTo fin
     
        Dim prompt As String
     
        '########################correspondance CC selon destinataire##############################
     
     
        Dim recip As Outlook.Recipient
        Dim sDomain As String
        Dim arTemp As Variant
        
        Set recip = Item.Recipients(1)
        arTemp = Split(recip.Address, "@", , vbTextCompare)
        sDomain = arTemp(1)
        
       cci=MyArray.Get_cial(sDomain) 
        '########################Option CC##############################
     
        prompt = "Ajouter le cc " & cci & " à " & Item.Subject & "?"
     
        If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbYes Then
     
            Set myRecipient = Item.Recipients.Add(cci)
     
            myRecipient.Type = olCC
     
            myRecipient.Resolve
     
            If myRecipient.Resolved = False Then
     
                MsgBox "L'adresse Email n'est pas correcte !", vbCritical, "Erreur"
     
                Cancel = True
            End If
     
        End If
     
        '#######################FIN#####################################
     
    fin:
     
    End Function

  17. #17
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Ton analyse est presque entièrement bonne.
    c'est jour pour tester un message où on affiche le cial pour un domaine donné.

    La première partie, il faut tout copier dans un MODULE
    dans la seconde tu remplaces juste

    cci=MyArray.Get_cial(sDomain)

    par
    cci=Get_cial(sDomain)

  18. #18
    Membre du Club
    Avatar de Roln1k
    Homme Profil pro
    Etudiant en Ingénierie Réseau
    Inscrit en
    Novembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant en Ingénierie Réseau

    Informations forums :
    Inscription : Novembre 2013
    Messages : 53
    Points : 61
    Points
    61
    Billets dans le blog
    1
    Par défaut
    On y est presque !

    mon code ressemble donc à ça :

    ThisOutlookSession
    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
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
     
    'By Oliv' 29/06/2007 pour Outlook 2003
        
        
        If Not Item.Class = olMail Then GoTo fin
     
        Dim prompt As String
     
        '########################correspondance CC selon destinataire##############################
     
     
        Dim recip As Outlook.Recipient
        Dim sDomain As String
        Dim arTemp As Variant
        
        Set recip = Item.Recipients(1)
        arTemp = Split(recip.Address, "@", , vbTextCompare)
        sDomain = arTemp(1)
        
        cci = Get_Cial(sDomain)
     
        '########################Option CC##############################
     
        prompt = "Ajouter le cc " & cci & " à " & Item.Subject & "?"
     
        If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbYes Then
     
            Set myRecipient = Item.Recipients.Add(cci)
     
            myRecipient.Type = olCC
     
            myRecipient.Resolve
     
            If myRecipient.Resolved = False Then
     
                MsgBox "L'adresse Email n'est pas correcte !", vbCritical, "Erreur"
     
                Cancel = True
            End If
     
        End If
     
        '#######################FIN#####################################
     
    fin:
     
    End Function 'en ecrivant End Sub ici, je recois une erreur d'execution 9, l'indice n'appartient pas à la selection et le debogage surligne For i = 0 To UBound(MyArray)
    Module1
    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
    Public MyArray()
     
    Sub Test_Get_Cial()
    Call Alimente_Liste
        MsgBox Get_Cial("exemple1.fr")
    End Sub
     
    Sub Alimente_Liste()
        Dim intFic As Integer
        Dim strLigne As String
        intFic = FreeFile
        Open "C:\Users\***\Domaine-Cial.txt" For Input As intFic
        i = 0
        While Not EOF(intFic)
            Line Input #intFic, strLigne
            ReDim Preserve MyArray(i)
            MyArray(i) = strLigne
            i = i + 1
        Wend
        Close intFic
    End Sub
    J'ai une erreur me disant qu'il manque un 'end sub' quelquepart. J'ai ssayé d'en rajouter à différents endroits mais n'ai obtenu qu'erreurs sur erreurs.

    PS : mon fichier texte ressemble à ça, est-ce bien le bon format ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    domain1.fr;pierre.dupond@exemple.fr
    domain2.fr;jesuisunexemple@hotmail.fr

  19. #19
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,
    le "quelque part" tu l'as trouvé c'est évidemment à la place du end function dans Application_ItemSend

    A priori il manque la fonction Get_Cial et c'est dans cette fonction que dois survenir ton erreur ?
    c'est sans doute que ton fichier txt n'est pas au bon endroit ...

    le plus simple c'est que tu copies ici tout ton code et pas des morceaux

  20. #20
    Membre du Club
    Avatar de Roln1k
    Homme Profil pro
    Etudiant en Ingénierie Réseau
    Inscrit en
    Novembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant en Ingénierie Réseau

    Informations forums :
    Inscription : Novembre 2013
    Messages : 53
    Points : 61
    Points
    61
    Billets dans le blog
    1
    Par défaut
    Salut,

    Quand je passe mon curseur sur cette ligne (qui est bien dans la fonction Get_cial), le message <UBound(MyArray) n'appartient pas à la selection> s'affiche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 0 To UBound(MyArray)
    Dans mon projet1 je dispose de deux fichiers,
    ThisOutlookSession avec le code suivant :
    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
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
     
    'By Oliv' 29/06/2007 pour Outlook 2003
    'Modifié par D. Schneider le 30/03/2015
     
        If Not Item.Class = olMail Then GoTo fin
     
        Dim prompt As String
     
        '########################correspondance CC selon destinataire##############################
     
     
        Dim recip As Outlook.Recipient
        Dim sDomain As String
        Dim arTemp As Variant
     
        Set recip = Item.Recipients(1)
        arTemp = Split(recip.Address, "@", , vbTextCompare)
        sDomain = arTemp(1)
     
        cci = Get_Cial(sDomain)
     
        '########################Option CC##############################
     
        prompt = "Ajouter le cc " & cci & " à " & Item.Subject & "?"
     
        If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbYes Then
     
            Set myRecipient = Item.Recipients.Add(cci)
     
            myRecipient.Type = olCC
     
            myRecipient.Resolve
     
            If myRecipient.Resolved = False Then
     
                MsgBox "L'adresse Email n'est pas correcte !", vbCritical, "Erreur"
     
                Cancel = True
            End If
     
        End If
     
        '#######################FIN#####################################
     
    fin:
     
    End Sub
    Et le Module1 :
    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
    Public MyArray()
     
    Sub Test_Get_Cial()
    Call Alimente_Liste
        MsgBox Get_Cial("exemple1.fr")
    End Sub
     
    Sub Alimente_Liste()
        Dim intFic As Integer
        Dim strLigne As String
        intFic = FreeFile
        Open "C:\Users\YKaratekin\Domaine-Cial.txt" For Input As intFic
        i = 0
        While Not EOF(intFic)
            Line Input #intFic, strLigne
            ReDim Preserve MyArray(i)
            MyArray(i) = strLigne
            i = i + 1
        Wend
        Close intFic
    End Sub
     
     
    Function Get_Cial(Email) As String
        Get_Cial = ""
        For i = 0 To UBound(MyArray)
            If Split(MyArray(i), ";", , vbTextCompare)(0) = Email Then
                Get_Cial = Split(MyArray(i), ";", , vbTextCompare)(1)
                Exit For
            End If
        Next i
     
    End Function
    C'est tout le code dont je dispose. Le fichier texte est bien à l'endroit renseigné dans mon code.

    Ps: Tu as rensigné que le fichier texte devait reseembler à ça :
    domaine1.fr;cial1.test.fr
    domaine2.fr;cial2.test.fr

    est-ce normal qu'il n'y ait pas d'@ dans les adresses mail ?

    UPDATE : voici deux capture d'écrans , peut-être que ça peut aider http://i.imgur.com/zWo7rGP.png http://i.imgur.com/m59ix43.png

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [OL-2003] Déplacer/trier automatiquement les mails sortants
    Par Nono40 dans le forum VBA Outlook
    Réponses: 41
    Dernier message: 14/10/2017, 11h32
  2. [OL-2013] Envoi de mail automatique avec PJ sous outlook 2013
    Par Jwinner dans le forum VBA Outlook
    Réponses: 10
    Dernier message: 21/01/2015, 10h48
  3. [AC-2007] Envoyer automatiquement 2 mails ?
    Par gsacre dans le forum Access
    Réponses: 2
    Dernier message: 06/07/2011, 00h15
  4. Réponses: 4
    Dernier message: 13/07/2006, 10h33
  5. Sauvegarder automatiquement un mail envoyé par asp
    Par Immobilis dans le forum ASP
    Réponses: 7
    Dernier message: 27/10/2004, 14h11

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