Copie cellule non vide dans un mail

Bonjour à Tous

Je viens vous solliciter pour une petite aide.

J'aimerais pouvoir copier le contenue de toutes les cellules non vide d'une colonne dans un mails

je m'explique dans une colonne de mon fichier (Colonne Q) j'ai des données à partir de la cellule Q7 est jusqu'à la cellule Qxxx que

Je voudrais copier dans le corps de message d'un mail (sachant que dans la colonne il peux y avoir des cellule vide que je ne veux pas récupérer).

Voilà j’espère avoir été suffisamment clair

Bonne journée à tous

lasource06

Bonjour

Function texteQx()

textQx = ""
sep = vbCrLf ' ou = "<BR>" si html
For i = 7 To Range("Q" & Rows.Count).End(xlUp).Row
    If Cells(i, "Q") <> "" Then texteQx = texteQx & Cells(i, "Q") & sep
Next

End Function

je suppose que pour le reste (mail) tu sais faire ?

13textqx.xlsm (14.61 Ko)

Bonjour steelson

Merci pour ta réponse

Je pensais pourvoir m'en sortir mais apparemment je n'arrive pas à tous faire tourner correctement

Pourrais-tu pousser ta gentillesse à finaliser le bout de code avec envoi de mail

voilà se que j'ai comme code en adaptant le tien et le mail je pense ne pas avoir combiner les code correctement

Sheets(2).Activate
ListeNum = ""
sep = vbCrLf ' ou = "<BR>" si html
For i = 7 To Range("Q" & Rows.Count).End(xlUp).Row
     If Cells(i, "Q") <> "" Then ListeNum = ListeNum & Cells(i, "Q") & sep

Corps = "test" & "<br>" & "<br>" & ListeNum
Dest = "a@a.com"

Set objMail = CreateObject("outlook.application") 'démarre Outlook s'il n'est pas démarré
Set ObjPVMail = objMail.CreateItem(olMailItem)

 'Construction structure Mail
     With ObjPVMail
         .To = Dest
         .CC = Copie
         .Subject = Sujet
         .BodyFormat = olFormatHTML 'Format du corps de message pour Outlook
         .HTMLBody = Corps  'Corps du message outlook
         .Display 'Affiche pour relecture, pas d'envoi
     '   .send 'Commande t'envoi mail à activer si souhaité
     End With

Next
End Sub

Lasource06

N'ayant pas tout le code, je me pose des questions ...

1- as-tu déjà un mail prêt à partir qui s'affiche dans outlook ?

2- mets sep="<BR>" car tu es en html

3- est-ce que copie et sujet sont bien définis ?

4- la colonne Q est-elle bien celle de la Sheets(2) ?

5- tu as oublié le next !!!! c'est sans doute cela

For i = 7 To Range("Q" & Rows.Count).End(xlUp).Row
     If Cells(i, "Q") <> "" Then ListeNum = ListeNum & Cells(i, "Q") & sep
Next

Re:

Juste pour te répondre sur une partie de ton message

tous ce qui concerne l'envoi de mail fonctionne et tous et bien défini

1- as-tu déjà un mail prêt à partir qui s'affiche dans outlook ? --> oui le message s'ouvre correctement

2- mets sep="<BR>" car tu es en html --> oui ok

3- est-ce que copie et sujet sont bien définis ?--> oui

4- la colonne Q est-elle bien celle de la Sheets(2) ? --> oui

La macro tourne bien le mail s'ouvre (j'ai mis un texte dans le coprs du messagepour voir)

Corps = "test" & "<br>" & "<br>" & ListeNum

J'ai bien le destinataire le sujet le corps du message mais je ne récupère pas les cellule de ma feuil2

Je te mets tous le code j'ai peut être pas fait les bonne déclaration / Il y peut être encore des cochonnerie dedans car j'ai fait plusieur test avant de demander de l'aide

Option Explicit

Sub NumeroSerie()

Dim WbRME As Workbook
Dim ListeNum As String
Dim Notif As String, Cel As Range
Dim i As Integer
Dim sep As String

'mail
Dim objMail As Object
'Dim ObjPVMail As Object
Dim ObjPVMail As MailItem
Dim Corps As String
Dim Sujet As String
Dim Dest As String
Dim Copie As String
Dim Choix As String

Set WbRME = ActiveWorkbook
Sheets(2).Activate

ListeNum = ""
sep = "<BR>" ' ou = "<BR>" si html
For i = 7 To Range("Q" & Rows.Count).End(xlUp).Row

     If Cells(i, "Q") <> "" Then ListeNum = ListeNum & Cells(i, "Q")
Next

Corps = "test" & "<br>" & "<br>" & ListeNum
Sujet = "Numéro de série"
Dest = "a@a.com"

Set objMail = CreateObject("outlook.application") 'démarre Outlook s'il n'est pas démarré
Set ObjPVMail = objMail.CreateItem(olMailItem)

 'Construction structure Mail
     With ObjPVMail
         .To = Dest
         .CC = Copie
         .Subject = Sujet
         .BodyFormat = olFormatHTML 'Format du corps de message pour Outlook
         .HTMLBody = Corps  'Corps du message outlook
         .Display 'Affiche pour relecture, pas d'envoi
     '   .send 'Commande t'envoi mail à activer si souhaité
     End With

End Sub

Merci

Lasource06

Sheets(2) n'est pas forcément égal à Feuil2 !!!!

Remplace donc

Sheets(2).Activate

par

Sheets("Feuil2").select

ou

Sheets("Feuil2").Activate

Tu peux aussi vérifier en mettant une ligne

Sub NumeroSerie()
MsgBox Sheets(2).Name

RE

Ok j'ai pris note mais je n'ai toujours pas le contenue de mes cellules dans le corps du message

"ListeNum" est toujours vide ??

Lasource06


Re

Pour info je viens de la faire fonctionner je ne comprend pas trop pourquoi donc je vais faire des essais et si tous et OK je posterais le résultat

Merci de ton aide , mais ne part pas trop loin on ne sais jamais :d

Lasource06

Lasource06 a écrit :

Merci de ton aide , mais ne part pas trop loin on ne sais jamais :d

Lasource06

OK

je ne pars pas en vacances avant ta réponse !

Bonjour Steelson

Alors concernant le fonctionnement de la macro.

Le code fonctionne très bien lorsqu'il est placé dans un module , mais si je le place dans la feuille pour qu'il fonctionne sur le changement d'une cellule la macro se lance bien au changement de la cellule tout se passe sans erreur mais je ne récupère pas le contenu des cellules???.

Voilà pourquoi je n'arrivais pas à le faire fonctionner correctement.

Pourrais-tu me dire quel est le souci

Merci et bonne journée

Lasource06

La macro insérée dans une feuille ne peut sans doute qu'accéder à cette feuille et pas aux autres.

Mets la dans un module et fais appel à la macro par celle que tu as enregistrée sur la feuille.

Je ne sais pas si je suis bien clair ?

En résumé

Dans la feuille : macro1, fait appel / déclenche à macro2

Dans un module : macro2,

tu peux éventuellement faire passer un paramètre entre les 2, comme target.value ....


S tu veux un exemple sur le principe je peux le faire en fin de matinée.

Re:

Merci Beaucoup Steelson

Tous fonctionne parfaitement bien maintenant comme je le souhaitais.

Je joint le fichier test dans lequel la macro fonctionne trés bien (dans le module) avec action bouton sur la feuille

Merci encore Steelson

32textqx-1.xlsm (19.14 Ko)
Rechercher des sujets similaires à "copie vide mail"