Envoi de mail via VBA et fonction SI

Bonjour à tous,

Régulièrement sur le forum en sous-marin en cas de besoin, cette fois je ne m'en sors pas. Je parcours le net depuis 2 jours et en raison d'un manque d'expérience, les solutions que je trouve sont pour moi incomplètes ou non fonctionnelles.

Voici mon problème : je suis en train de bâtir un outil de type "fiche contact" qui fait suite à un appel téléphonique. Dans ce formulaire sont renseignés différents champs dont le service destinataire du mail, qui est choisi par un menu déroulant.

En fonction du service affiché, l'adresse mail de destination change. Il peut également y en avoir deux en fonction du référent, plus la mienne qui doit apparaître systématiquement en copie.

J'ai donc raisonné (peut-être à tort), de la façon suivante :

  • Si dans la case "Secteur" apparaît le secteur "X", alors telle cellule imprime l'adresse mail ".....@......".
  • S'il y a un référent ou un besoin de destinataire en copie, la cellule "Y" imprime l'adresse "......@......".
  • La cellule "Z" pour sa part imprimera toujours la même adresse, la mienne.

Et une macro envoie un mail à la plage d'adresse "X, Y, Z".

Le premier problème qui se pose est que j'ai environ 9 destinataires pour chacune des 2 premières cellules, et que je suis donc limité à 7 fois la fonction "SI".

Un autre problème est que pour un service qui ne possède qu'un destinataire, avec moi en copie ça fait deux. Or, la macro dans laquelle j'ai défini la plage "X,Y, Z" ne fonctionne pas si une des 3 cellules est vide. Du coup, en bricolant (il n'y a pas d'autre mot, j'ai déterminé que si la case est vide alors c'est mon adresse qui s'affiche à nouveau. Je ne reçois le mail qu'une fois au moins ça fonctionne. En boîtant, cependant.

Enfin, mon formulaire indique des conditions. Si par exemple, le mois est pair, c'est tel destinataire. S'il est impair, c'est son collègue.

Bref, je trouve que c'est compliqué mais surtout je ne parviens pas à ordonner tout ceci.

Si encore je savais écrire une macro qui dit "si la cellule "X" est remplie, alors cette adresse est la principale. Si la cellule "Y" est remplie, alors cette adresse est en copie. Et dans tous les cas, la "Z" est en copie.

Là, je pourrai utiliser plusieurs cellules pour pallier le nombre de conditions SI. Mais du coup, je suis bloqué. Peut-être devrais-je utiliser un tableau qui recenserait toutes les adresses courriel utilisables, et définir une fonction qui irait chercher telle adresse dans tel cas ?

Je joins mon fichier en copie, voici les cellules qui déterminent les appels :

D12 = Service destinataire

M12, M13, M16 = adresses courriel dans les fonctions "SI"

A dispo le plus rapidement possible pour toute question, je remercie par avance ceux qui prendront le temps de se pencher sur mon cas.

Bonjour,

Je me permets un petit "UP".

Merci encore !

Un nouveau petit "up"

Bonjour

une solution pour le si....

dans le fichier joint il y aune macro dans la feuille fiche contact. cette macro se lance automatiquement au changement de valeur de votre liste déroulante positionnée en D12

et j'ai commencé ,je vous laisse faire la suite,

lorsque c'est ASS qui est sélectionné dans la cellule M11 il ya le mail de arnaud......

lorsque c'est médical c'est le mail de christelle......

cela pourra certainement palier a votre 1er problème

vous pouvez utiliser aussi un tableau pour lister les mails comme vous dites... cela permetrait de pouvoir changer une adresse mail plus facilement peut-etre

fred

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    'http://support.microsoft.com/kb/213612/fr

    ' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Range("D12")

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
        Select Case Range("D12").Value
        Case "Médical"
        Range("M11") = "christelle@Toto.fr"
        Case "ASS"
        Range("M11") = "arnaud@Toto.fr"
        End Select
    End If
End Sub

Bonsoir Fred,

Merci pour votre réponse. J'essaie cela dès que possible et reviens vers vous.

Bonne nuit !

Rechercher des sujets similaires à "envoi mail via vba fonction"