Erreur Range sur bouton mail automatique

Bonsoir à tous,

Je continue mes essais avec VBA et j'y prends goût

Je bloque sur un problème dans le code ci-dessous :

Sub CommandButton1_Click()

Dim LeMail As Variant

Set LeMail = CreateObject("Outlook.Application")

With LeMail.CreateItem(olMailItem)
    .Subject = Range("A2")
    .To = "adresse mail ici"
    .Body = "Test N°1"
    .Display

End With

End Sub

J'ai l'erreur suivante qui apparait :

capture capture 2

Si je rentre un sujet comme "test 1", cela fonctionne parfaitement. Mais Excel, avec la commande Range("A2") ne trouve pas le texte que j'ai introduit dans la cellule A2. Je bug où?

D'avance merci et bonne soirée

Salutations

Bonjour,

Le code est dans le Module1 et .Subject = Range("A2") ne mentionne pas sur quelle feuille lire la Range("A2").

ric

Bonsoir,

ric, bonsoir,

en effet il n'y a pas d'indication de feuille, c'est pourquoi Excel prend en compte la feuille active au moment de l'exécution du code.

Donc il ne devrait pas y avoir de soucis, à moins que le bouton ne soit pas sur la bonne feuille.

Mais un objet de mail est-il obligatoire dans ce genre de procédure, car si A2="" cela devrait fonctionner, non ?

Moi lors du test j'ai une erreur de variable avec olMailItem, c'est une variable ou un paramètre ?

@ bientôt

LouReeD

Bonsoir,

chez moi en remplaçant :

With LeMail.CreateItem(olMailItem)

par :

With LeMail.CreateItem(0)

zéro, ça marche, et ce sans spécifier sur quelle feuille aller chercher le Range("A2").

Ceci dit ric a raison, il est fortement conseillé de spécifier la feuille, car cela peut être source d'erreur.

@ bientôt

LouReeD

Bonjour à tous,

Merci pour vos répondes rapides

J'ai essayé avec :

With LeMail.CreateItem(0)

Mais le problème reste identique. Je n'ai qu'1 seule feuille dans mon classeur.

Je mets le fichier en annexe

4mail11.xlsm (18.58 Ko)

Bonjour,

le fichier fourni fonctionne chez moi ...

Essayez de dimensionner Le Mail en objet plutôt qu'en variant...

là je ne sais quoi vous dire...

@ bientôt

LouReeD

Essayez ce code s'il vous plait :

Public Sub CommandButton1_Click()
    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Dim adresse As String
    Dim message As String
    Dim sujet As String
    'init des messages
    message = "test"
    sujet = [A2].Value
    adresse = "test@laposte.net"
    Set OutlookApp = CreateObject("outlook.application")
    Set OutlookMail = OutlookApp.createitem(0)
    With OutlookMail
        .Subject = sujet 'sujet du mail
        .To = adresse 'adresse mail destinataire
        .body = message 'corps du message
        .Display
        '.send 'on envoie le mail créé
    End With
End Sub

@ bientôt

LouReeD

C'est fou quand même

Avec votre nouveau code, cela fonctionne parfaitement, merci beaucoup

Par contre, entant novice, je ne comprends pas la différence. Il existe plusieurs manières de coder pour le même résultat`?

Encore merci

Peut être le problème de dimensionnement en Variant, ceci laisse VBA "choisir" le format de la variable lors de l'attribution de sa valeur... Alors fait-il le mauvais choix ?

Avez vous essayé votre code en typant votre variable en tant qu'objet et non pas variant ?

@ bientôt

LouReeD

Non, je n'ai pas essayé et comme mentionné plus haut, étant complétement novice dans VBA, je ne saurai faire

Bonjour,

au lieu de

Dim LeMail As Variant

typer votre variable en

Dim LeMail As Object

Mais si mon code fonctionne alors un copier coller suffit

@ bientôt

LouReeD

Rechercher des sujets similaires à "erreur range bouton mail automatique"