VBA windows vers MAC

Bonjour,

Merci à tous pour vos contributions.

J'ai crée un code sur Excel avec la version Windows et j'aimerais traduire ce code pour qu'il fonctionne sur MAC.

Il s'agit d'une préparation et d'un envoi automatisé de mail à différents prestataire selectionnés.

Est-ce que vous pensez pouvoir m'aider?

je vous remercie.

Cordialement,

Samuel

Option Explicit

Private Sub CommandButton1_Click()

Dim LeMail As Variant

Dim ligne As Integer

Dim CC As String

Set LeMail = CreateObject("Outlook.Application") 'création d'un objet outlouk

For ligne = 31 To 36

If Range("d" & ligne) <> "" Then

With LeMail.CreateItem(olMailItem) ' informe le programme que nous voulons envoyer un mail.

.Subject = "CONSULTATION - " & Range("B14") & Range("b" & ligne) 'le sujet + le nom

.To = Range("E" & ligne) 'placer l'adresse mail de la ligne

.CC = Range("J9") & _

Range("J8") & _

Range("J10")

.Body = "Consultation à destination de la société " & Range("d" & ligne) & " " _

& Range("B77")

.Display 'afficher le mail avant de l'envoyer sinon placer send pour envoyer

End With

End If

Next ligne

End Sub

Bonsoir

J'ai crée un code sur Excel avec la version Windows et j'aimerais traduire ce code pour qu'il fonctionne sur MAC.

Avec quel programme sous MAC ??

Cordialement

Bonjour,

Merci pour votre réponse.

Je n'ai pas bien saisi la question. S'il s'agit du programme d'ouverture, Outlook également.

Sinon je reste disponible pour vous donner les informations.

Cordialement.

Bonjour

Je voulais savoir si vous utilisiez également Outlook sous mac ou un autre type de messagerie comme Mail par exemple

Mais vous avez répondu à la question et je vais regarder pour vous proposer quelque chose.

Cordialement

Un grand Merci !!

En fait, j'ai plusieurs utilisateurs.

Certains utilisent actuellement Thunderbird mais afin de me faciliter la tâche, je leur demande d'utiliser Outlook.

Cordialement.

Bonsoir

Votre code est certainement placé dans la feuille.

Vous devez au préalable :

1. Supprimer ce code qui est placé dans une feuille je pense

2. Refaire votre bouton via Inserer -> controle de formulaire car actuellement vous avez probablement créé un bouton via Inserer -> activeX. Les activeX sont propres à Windows et ne fonctionne pas sur MAC. Vous pouvez aussi créer un bouton via insertion -> Formes

3. Mettre le code ci-dessous dans un module

4. Comme précisé au début du code ci dessous, allez dans l'éditeur VBA.

5. Faire Menu / outils / Reference / Cocher "Microsoft Outlook Library"

6. Click droite sur le bouton puis choisissez "Affecter à une macro"

Le code:

Sub SendMail_Outlook()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library"
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim ligne As Byte

Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)

For ligne = 31 To 36
    If Range("d" & ligne) <> "" Then

        With olmail
            .To = Range("E" & ligne) 'placer l'adresse mail de la ligne
            .CC = Range("J9") & Range("J8") & Range("J10")
            .Subject = "CONSULTATION - " & Range("B14") & Range("b" & ligne) 'le sujet + le nom
            .Body = "Consultation à destination de la société " & Range("d" & ligne) & " " & Range("B77")
            '.Attachments.Add ThisWorkbook.Path & "\" & ThisWorkbook.Name
            .Display 'afficher le mail avant de l'envoyer sinon placer send pour envoyer
        End With

    End If
Next ligne
End Sub

Je n'ai pas testé mais cela devrait fonctionner sous windows ou sous MAC

Un peu de lecture si vous voulez --> https://forum.excel-pratique.com/viewtopic.php?f=2&t=16935

Oubliez pas de cloturer le fil si ok (click sur le petit v en haut à droite...)

Cordialement

Bonjour,

Merci beaucoup pour avoir pris le temps pour cela.

J'ai testé sur WINDOWS, ça fonctionne très bien sauf qu'il ne crée qu'un seul mail au lieu de plusieurs mail à chaque prestataire.

La forme est également différente mais je pense pouvoir modifier ça.

Sur MAC, ça ne fonctionne pas.

En effet, il me met "Microsoft Outlook Library" en manquant. Dans "référence", il n'y a pas ce choix en selection.

erreur sur la zone : outlook.application.

L'application outlook est bien installée.

je mets le fichier en PJ.

Merci.

55fm-modele1.xlsm (187.74 Ko)

Re

J'ai testé sur WINDOWS, ça fonctionne très bien sauf qu'il ne crée qu'un seul mail au lieu de plusieurs mail à chaque prestataire.La forme est également différente mais je pense pouvoir modifier ça.

Que voulez vous dire par un seul mail ?

Ce que vous voulez faire c'est envoyer un seul mail avec tous les destinataires se trouvant entre les lignes 31 à 36 (dans votre code...) mais sur la feuille je vois de 33 à 37 ou un mail à chaque destinataire séparément ?

Pour le MAC, essayez en remplaçant :

Set olmail = ol.CreateItem(olMailItem)

par

Set olmail = ol.CreateItem(0)

Re bonjour,

A l'initial, je n'avais pas réussi avec 1 seul mail avec tout les destinataires.

Mais je souhaite l'une des 2 solutions avec la priorité sur la 1ere :

  • 1 mail avec tout les prestataires en CCI (copie cachée) de la ligne 33 à 37 (oui, j'ai modifié le fichier entre temps d'où l'écart de ligne)
  • 1 mail par prestataire de la ligne 33 à 37.
Une nouvelle fois merci !!

Re

1 mail avec tout les prestataires en CCI (copie cachée) de la ligne 33 à 37 (oui, j'ai modifié le fichier entre temps d'où l'écart de ligne)

Ok si on fait une seul mail, il faudra enlever l'info de la colonne D (Range D & ligne) dans l'item BODY

Ok pour cela ?

Ok parfait !

Bonjour,

Je suis presque arrivé à obtenir ce que je veux sur windows déjà.

Il "n’attrape" qu'une seule ligne des 4 mails de la colonne E, soit la ligne 36.

J'aimerais qu'il mette en CCI tout les mails des lignes 33 à 37.

Le code me semble correct mais rien n'y fait.

Je m'attaquerai à MAC après

Je te remercie.

7fm-modele1.xlsm (187.57 Ko)

Bonjour

Je n'ai pas regardé votre dernier fichier mais voici le code que j'ai réalisé hier soir

Sub SendMail_Outlook()
'Avant de lancer cette macro, Dans l'éditeur VBA:
'Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library"
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim ligne As Byte
Dim MailAd As String, MailAd1 As String

Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
'Set olmail = ol.CreateItem(0) --> pour test sous MAC

For ligne = 33 To 37
    If Range("d" & ligne) <> "" Then
        MailAd = Range("E" & ligne) & ";"
        MailAd1 = MailAd & MailAd1
    End If
Next ligne

With olmail
    .BCC = MailAd1 'Range("E" & ligne) 'placer l'adresse mail de la ligne
    .To = Range("J9") & Range("J8") & Range("J10")
    .Subject = "CONSULTATION - " & Range("B14") & Range("b" & ligne) 'le sujet + le nom
    .Body = "Consultation à destination de la société " & Range("B77")
    '.Attachments.Add ThisWorkbook.Path & "\" & ThisWorkbook.Name
    .Display 'afficher le mail avant de l'envoyer sinon placer send pour envoyer
End With

End Sub

J'ai testé sous Outlook Windows, cela fonctionne. Voyez de votre coté puis on adaptera pour le MAC ensuite

Cordialement

C’est parfait, j’ai pu avoir exactement ce que je voulais sur Windows. J’ai fait un mix entre le dernier code et l’ancien merci beaucoup beaucoup. Après l’avoir testé sur Mac ça ne fonctionne pas.

Re

Sous Mac vous avez bien remplacé

Set olmail = ol.CreateItem(olMailItem)

par

Set olmail = ol.CreateItem(0)

Vous devez aussi changer cette ligne

MailAd = Range("E" & ligne)

par

MailAd = Range("E" & ligne & ":F" & ligne))

Si oui, dites moi sur quelle ligne de code cela ne fonctionne pas

Cordialement

Bonjour,

j'ai tenté de remplacer mais j'ai une anomalie :

MailAd = Range("E" & ligne ) & ";"

en

MailAd = Range("E" & ligne & ":F" & ligne))

message : erreur de compilation.

ci-dessous le code actuel :

Sub SendMail_Outlook()
'Avant de lancer cette macro, Dans l'éditeur VBA:
'Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library"
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim ligne As Byte
Dim MailAd As String, MailAd1 As String

Set ol = New Outlook.Application
Set olmail = ol.CreateItem(0)
'Set olmail = ol.CreateItem(0) --> pour test sous MAC

For ligne = 33 To 37
    If Range("d" & ligne) <> "" Then
        MailAd = Range("E" & ligne) & ";"
        MailAd1 = MailAd & MailAd1
    End If
Next ligne

With olmail
    .BCC = MailAd1 'Range("E" & ligne) 'placer l'adresse mail de la ligne
    .To = Range("J9")
    .CC = Range("J8") & Range("J10")
    .Subject = "CONSULTATION - " & Range("B16") 'le sujet + le nom
    .Body = "Consultation ayant pour objet - " & Range("B16") & Range("d" & ligne) & "  " _
            & Range("B79")

End Sub

Bonjour

Ok. Essayez sans mettre le ":F" & ligne mais cela m'étonnerait que ce message vienne de là

Dites sur quelle ligne le code vous renvoie le message

BOnjour,

Merci, en mode "débogage", cette ligne deviens jaune :

CC = Range("J8") & Range("J10")

que j’enlève le :F ou pas

Mes collègues sur MAC m'ont envoyés la copie d'écran des lignes concernées sur le code (Voir fichier joint).

28capture.pdf (445.01 Ko)
Rechercher des sujets similaires à "vba windows mac"