envoyer un mail depuis excel

Sellig

XLDnaute Junior
Bonjour

J’ai à nouveau besoin de vos services.

J’ai un tableau tout simple avec des dates d’anniversaires.

Lorsqu’un anniversaire tombe à la date du jour mon tableau affiche ‘’Aujourd’hui’’ dans la colonne ‘’S’’

A partir de là, j’ai installé cette macro qui m’envoie un mail sur Outlook. (Macro trouvée en partie sur internet)

Sub mail_outlook_COULEUR()
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
For ligne = 3 To 20
If Range("S" & ligne) = "Aujourd'hui" Then
With OutMail 'début de la boucle
.To = "glefort@live.fr"
.Subject = "Anniversaire"
.HTMLBody = "<FONT COLOR=RED> Il y a un anniversaire à souhaiter aujourd'hui </FONT>" & "<br>" & _
.HTMLBody
.Send
'.Display 'affiche le mail avant d'envoyer
End With
End If
Next ligne
Set OutMail = Nothing 'nettoie la mémoire en nettoyant les variables
Set OutApp = Nothing 'nettoie la mémoire en nettoyant les variables

End Sub


Pour que ce tableau s’actualise à chaque ouverture du PC, j’ai un fichier Excel qui est installé dans shell:startup avec cette macro : (Macro trouvée en partie sur internet)

Sub ModifierFichier()
' Partie à modifier
NomFichier = "D:\DOSSIER GILLES\DIVERS\Dates anniversaires"
Feuille = "Feuil1" ' Modifiez la feuille à modifier
Addresse = "A1" ' Modifiez l'Adresse de la cellule à modifier
Valeur = 123 ' Modifiez Valeur à écrire
Application.ScreenUpdating = False ' Fige l'écran
Workbooks.Open NomFichier ' Ouvre le fichier
ActiveWorkbook.Sheets(Feuille).Range(Addresse) = Valeur ' Ecrit la valeur à l'adresse indiquée
'ActiveWorkbook.Close SaveChanges:=True ' Ferme le fichier en enregistrant.
ActiveWorkbook.Save
Application.Quit
End Sub


Jusque-là tout fonctionne correctement, même si ce n’est pas conventionnel à vos yeux. (J’accepte d’ailleurs toutes améliorations)

Mon objectif, consiste à insérer le prénom qui se trouve à gauche de la ligne ‘’Aujourd’hui’’ dans l’objet du mail.

Exemple : Subject = Anniversaire Laure.

J’arrive à sélectionner le nom à l’aide de cette macro mais je n’arrive pas à l’intégrer dans l’objet du mail.

Sub SelectNom()
Dim R As Range
Set R = ActiveSheet.Cells.Find("Aujourd'hui", , xlValues, xlWhole)
If Not R Is Nothing Then R.Select
Selection.Offset(0, -18).Select

End Sub


Si vous pouviez m’aider ce serait formidable.

Merci par avance

Bien cordialement

PS : ce n’est pas très urgent
 

TooFatBoy

XLDnaute Barbatruc
Je ne vois pas en quoi la majuscule évite les fautes de frappe. Au contraire une déclaration avec majuscule forcera VBE à en mettre une d'office dans la suite du code. On évite au moins d'appuyer sur la touche MAJ.
C'est exactement ce que je dis : si VBE ne met pas la majuscule, c'est que tu t'as gouré.
Option Explicit n'est donc pas utile pour ça. ;)


Tout ceux ici qui croient que "Option Explicit" est utile semblent croire que si on n'utilise pas Option Explicit alors on n'a pas le droit de déclarer les variables... 🙃 🤪 🤯
 

mapomme

XLDnaute Barbatruc
Supporter XLD
si VBE ne met pas la majuscule, c'est que tu t'as gouré.
C'est faux. VBE se fiche de la majuscule si pas de déclaration.
Tout ceux ici qui croient que "Option Explicit" est utile semblent croire que si on n'utilise pas Option Explicit alors on n'a pas le droit de déclarer les variables...
Personne n'a jamais dit cela. Donc on ne met pas option explicit mais on déclare malgré tout toutes les variables (en espérant ne pas faire de faute de frappe part la suite). Bon arrêtons les polémiques stériles ! Le sujet est clos pour moi.
 

TooFatBoy

XLDnaute Barbatruc
La citation que j'ai faite était celle-ci :
mapomme à dit:
une déclaration avec majuscule forcera VBE à en mettre une d'office dans la suite du code.
donc quand j'ajoute :
si VBE ne met pas la majuscule, c'est que tu t'as gouré.
et que tu réponds :
C'est faux. VBE se fiche de la majuscule si pas de déclaration.
ça semble pour le moins étrange cette réponse qui commence par "C'est faux." et qui continue en disant pourtant la même chose que moi. 🤔





C'est faux. VBE se fiche de la majuscule si pas de déclaration.
Donc on ne met pas option explicit mais on déclare malgré tout toutes les variables (en espérant ne pas faire de faute de frappe part la suite).
Tu confirmes là par deux fois ce que je disais : il ne faut pas confondre "ne pas utiliser Option Explicit" et "ne pas déclarer ses variables" !

Il n'y a pas à "espérer ne pas faire de faute de frappe par la suite", il y a juste à regarder : si VBE ne met pas de majuscule, c'est que tu as fait une faute de frappe.


Option Explicit ne sert à rien, ça me semble évident, et le sujet était clos pour moi dès #9, mais devant tant de refus de cette évidence, j'ai été obligé de répondre pour donner des preuves de l'inutilité de ce truc.

Mais, encore une fois, c'est une option, donc on peut l'utiliser ou pas, selon ses croyances. 😁
(cest comme "Option Base 0")
 
Dernière édition:
C

Compte Supprimé 979

Guest
@TooFatBoy tu es également très contradictoire dans tes propos 🤔

"j'ai été obligé de répondre pour donner des preuves de l'inutilité de ce truc"
Il n'y a aucune preuve à apporter puisque pour toi c'est inutile...

"Mais, encore une fois, c'est une option, donc on peut l'utiliser ou pas, selon ses croyances"
Et les tiennes veulent tenir bon... serais-tu sectaire :rolleyes:

Nous avons compris que tu veux t'obstiner dans ton obscurantisme, que cela te tienne.
Mais tu ne peux pas nous empêcher, à moins d'être extrémiste, de penser le contraire :eek:

TooFatBoy... tu aurais dû te surnommer StretchedMind 😜😂

Aller "Ne plus suivre" est coché pour moi et cette conversation totalement inutile et futile
Bon amusement
 

TooFatBoy

XLDnaute Barbatruc
"j'ai été obligé de répondre pour donner des preuves de l'inutilité de ce truc"
Il n'y a aucune preuve à apporter puisque pour toi c'est inutile...
Hélas si, il semble utile de les apporter. 😔
Les preuves en question, ce sont juste des exemples qui démontrent le contraire de ce que disent ici les gens qui croient que cette option est utile (et j'ai d'autres exemples que je n'ai pas donnés).



"Mais, encore une fois, c'est une option, donc on peut l'utiliser ou pas, selon ses croyances"
Et les tiennes veulent tenir bon... serais-tu sectaire :rolleyes:
Le fait de dire que chacun fait comme il veut me place dans la catégorie des gens sectaires ?!? T'es sûr de ça ??? 😁



Nous avons compris que tu veux t'obstiner dans ton obscurantisme, que cela te tienne.
Mais tu ne peux pas nous empêcher, à moins d'être extrémiste, de penser le contraire :eek:
Non, je veux juste essayer de vous faire comprendre par l'exemple que tous les arguments que vous avez avancés jusque là ne tiennent pas la route pour défendre la prétendue utilité de cette option.
Bien sûr, si un argument démontrait l'utilité de la chose, je changerais d'opinion.



TooFatBoy... tu aurais dû te surnommer StretchedMind 😜😂
Si l'insulte est ton seul argument, ça ne va pas me convaincre. 😅




ps : cocher "ne plus suivre" ne suffit pas... je l'avais fait, mais j'ai tout de même eut une notification.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
aujourd'hui peut être , mais il y a 30 ans en 16 bits sur un 286 avec 256 Ko de mémoire ça l'était ...
Vu mon âge, je le sais bien. Mais le sujet était : doit-on en VBA utiliser "Option explicit" pour s'obliger à déclarer les variables ?
Aujourd'hui, ce n'est pas la taille de la mémoire qui est un gros frein, mais il faut plutôt se prémunir des fautes de frappe dans les variables (et sans un Option explicit rien ne nous en avertit) et aussi de nous forcer un peu à réfléchir sur ce qu'on fait.
Dans bien des langages, la déclaration est de toute façon obligatoire. VBA est permissif et flexible.

Après chacun est libre de faire comme bon il lui semble.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

[En passant subrepticement]
Si Microsoft a prévu cette case à cocher c'est qu'il doit y avoir une raison, non ?
[ ] Déclaration des variables obligatoires
Il semblerait même qui l'IA soit pro Option Explicit..:rolleyes:
[aparté]
Quid des réponses aux questions posées sur XLD auquel ChatGPT aura répondu ?
On laisse la pratique se développer ou comme sur certains forums anglophones, on n'autorise que la cervelle de bipède à station verticale (comme dirait Hubert) ;)
[/aparté]
Quand je pense qu'Office va intégrer de plus en plus d'IA, comme c'est déjà le cas dans Edge, m'en retourne dans Libre Office. ;)
Et pour le VBA, j'irai faire un tour non pas du côté de chez Swan, comme dirait Dave, mais un vieux Excel 2003 virtualisé ;)
[/En passant subrepticement]
Sur ce, Bonsoir chez vous, comme on disait à Portmeirion (6).

(6) réf pour ceux qui sont nés du temps de Valéry et Anne-Aymone, comme aurait pu dire Léon Z. ;)
 

TooFatBoy

XLDnaute Barbatruc
Bon, j'avoue, j'ai dit des conneries et il me paraît évident que c'est ChatGPT qui a raison : Option Explicit est indispensable car ça permet d'éviter les fautes de frappe, ça permet d'éviter les erreurs de logique, ça rend le code infiniment plus lisible, et surtout en utilisant cette béquille totalement inutile ça prouve aux autres que je sais ce que je fais !

OptionSuperExplicit.png




ps : patapay, c'est juste pour de rire ;)
( salut Staple 🖖)
 
Dernière édition:

Zon

XLDnaute Impliqué
Vu mon âge, je le sais bien. Mais le sujet était : doit-on en VBA utiliser "Option explicit" pour s'obliger à déclarer les variables ?
Aujourd'hui, ce n'est pas la taille de la mémoire qui est un gros frein, mais il faut plutôt se prémunir des fautes de frappe dans les variables (et sans un Option explicit rien ne nous en avertit) et aussi de nous forcer un peu à réfléchir sur ce qu'on fait.
Dans bien des langages, la déclaration est de toute façon obligatoire. VBA est permissif et flexible.

Après chacun est libre de faire comme bon il lui semble.
Quel débat pas trop explicite quand on le prend en cours....

Désolé de mettre écarter de la question, je suis un fan d'Option Explicit et d'accord avec ce que tu écris @mapomme .

toutefois dans VBA , il y a Basic , l'esprit de ce langage (assez simple pour un néophyte) date pas d'aujourd'hui ceux qui sont nés du temps de Valéry et Anne-Aymone, rappelez vous de la petite tortue à qui on lui faisait faire des carrés sur des terminaux BULL... Ensuite sur les calculatrices CASIO par exemple, puis VB/VBA ...


J'oubliais , la bise aux autres contributeurs du fil.
 

TooFatBoy

XLDnaute Barbatruc
toutefois dans VBA , il y a Basic , l'esprit de ce langage (assez simple pour un néophyte) date pas d'aujourd'hui ceux qui sont nés du temps de Valéry et Anne-Aymone, rappelez vous de la petite tortue à qui on lui faisait faire des carrés sur des terminaux BULL... Ensuite sur les calculatrices CASIO par exemple, puis VB/VBA ...
Micral, ZX80, Sharp PC-1211, etc.
 

Staple1600

XLDnaute Barbatruc
[En repassant]
J'ai encore la boite ;)
Mais mon Alice a grillé au début des années 2000
Comme ne disait pas Hannibal (*) ;)
"Je n'aime pas quand un plan se déroule sans accroc"
[/En repassant]
PS: j'ajoute à la liste: MSX et Atari ST (et son GFA Basic)
sans oublier le TRS-80 (que mon instit de primaire avait dans sa classe)
model1c.jpg

[/En repassant]

(*) réf pour ceux qui connaissent Looping et Futé.
 

Zon

XLDnaute Impliqué

[En repassant]
J'ai encore la boite ;)
Mais mon Alice a grillé au début des années 2000
Comme ne disait pas Hannibal (*) ;)
"Je n'aime pas quand un plan se déroule sans accroc"
[/En repassant]
PS: j'ajoute à la liste: MSX et Atari ST (et son GFA Basic)
sans oublier le TRS-80 (que mon instit de primaire avait dans sa classe)
model1c.jpg

[/En repassant]

(*) réf pour ceux qui connaissent Looping et Futé.
Merci pour ces souvenirs,

je croyais que c'était Bull qui avait produit les bécanes, à priori c'est Matra(d'où le M 05) , et Thomson avec son T07 .

Nous étions loin d'envoyer des emails ....


A+++
 

Discussions similaires

Réponses
6
Affichages
563

Statistiques des forums

Discussions
314 704
Messages
2 112 063
Membres
111 410
dernier inscrit
yomeiome