Autres Plusieurs adresses mail d'une feuille Excel

FOUQUET Yves

XLDnaute Occasionnel
Bonjour,

J'ai dans un tableau les adresses mail de quelques personnes.
Feuille "Aides3" et Colonne M3 à Mx... (cela peut s'allonger en fonction d'inscription)

J'ai créé un Userform pour envoyer en pièces jointes deux tableaux Excel à ces destinataires.
Bouton valide = on créé les fichiers et on les envoie via Outlook.

Je ne trouve pas l'astuce pour aller récupérer ces adresses mail et les mettre automatiquement dans la ligne: .To

VB:
Option Explicit  'Activation de la déclaration explicite des variables
Dim Ws As Worksheet  'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de cet UserForm
Dim compt_bon_date As Integer
Dim Rng As Range
'=================================================
'Correspond au programme du bouton QUITTER
Private Sub CommandButton1_Click()
Unload Me
End Sub
'=================================================
Private Sub CommandButton2_Click() '-------------- VALIDER

[B]' Là j'aimerai bien que les deux feuilles soient dans le même tableur "trans_effect" avec  feuille1 = "recept_adhe, feuille2 = recept_arch  en lieu et place de deux fichiers Excel, mais bon on verra plus tard.[/B]
'--- création des fichiers Excel ---
Worksheets("Effectif").Copy
ActiveWorkbook.SaveAs "D:\Gestion AHI\transfer\recept_adhe.xlsx"
ActiveWorkbook.Close True
Worksheets("Adh_arch").Copy
ActiveWorkbook.SaveAs "D:\Gestion AHI\transfer\recept_arch.xlsx"
ActiveWorkbook.Close True

  
  fich1 = "D:\Gestion AHI\transfer\recept_adhe.xlsx"
  fich2 = "D:\Gestion AHI\transfer\recept_arch.xlsx"
  With CreateObject("Outlook.Application").CreateItem(0)
        
    .Attachments.Add "D:\Gestion AHI\transfer\recept_adhe.xlsx"  '--- si on veut mettre le fichier en piéce jointe ----
    .Attachments.Add "D:\Gestion AHI\transfer\recept_arch.xlsx"  '--- si on veut mettre le fichier en piéce jointe ----
    
[B]'Et c'est là que je ne sais comment faire pour intégrer automatiquement toutes les adresses de la colonne M de ma feuille "Aides3"!
'Pour l'instant il y a 6 adresses mail[/B]
  
    .To = "yves.fouquetxxxxx@gmail.com" & ";yves.fouquet@xxxx.fr"   '--- essai pour voir si cela fonctionne et les adresses tapées directement fonctionnent
   
    .Subject = " Transmission fichier A.H.I Effectifs "
    .Display
    .Send

'Attendre 5
'Outlook.Quit
End Sub

Je soumets mon problème...
merci de vos éventuelles réponses.
Yves
 

Staple1600

XLDnaute Barbatruc
Bonjour

Yves
Même réponse que dans un tes autres fils ;)
Voir dans les discussions similaires ;)

Normalement, tu devrais y trouver ce genre de syntaxe ;)
VB:
Sub alterne()
Dim dl&, courriels
dl = Cells(Rows.Count, "M").End(3).Row
courriels = Application.Transpose(Range("M3:M" & dl).Value)
MsgBox Join(courriels, ";")
End Sub
 
Dernière édition:

FOUQUET Yves

XLDnaute Occasionnel
Pour ton code j'ai essayé de comprendre .
Tu vas lire dans la feuille "Aides3" (que j'ai identifié par sheets, les adresses mail que tu ranges dans "courriels"?
Après j'ai essayé ça mais sans succès.
.To = courriels
il manque un truc car dans le message "msgbox" les adresses sont bonnes. Je traite "courriels" comme une variable ordinaire mais apparament ce n'est pas cela.
 

Staple1600

XLDnaute Barbatruc
Re

Tu y étais presque ;)
VB:
Sub limation()
Dim dl&, courriels, Destinataires$
dl = Cells(Rows.Count, "M").End(3).Row
courriels = Application.Transpose(Range("M3:M" & dl).Value)
Destinataires = Join(courriels, ";")
'.To=Destinataires
End Sub
 

FOUQUET Yves

XLDnaute Occasionnel
Yesssssss!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Grand MERCI maître!
Je me lance dans un truc de oufs. Comme nous sommes plusieurs (autant que d'adresses mail - 6) et à distance, a utiliser mon module, il faut faire en sorte que nous ayons tous la même version du tableur. Une collègue travaille sur les effectifs et moi sur la gestion. Les autres ne font que consulter...
Ma solution est de créer une procédure d'extraction des trois feuilles (2 pour les effectifs et 1 pour la gestion) du classeur Excel concernées dans un répertoire et ensuite les envoyer aux personnes concernées. (grâce à toi cette procédure fonctionne) A chacune d'elles "à travers une procédure qu'il reste à écrire" de les intégrer en remplacement des feuilles anciennes dans leur tableur. Dans mon menu j'ai un bouton "extraire les données" et un bouton "intégrer les données". Et c'est là que d'avoir des noms et mot de passe me permettra d'activer les boutons de chacun.
Ainsi régulièrement nous serons tous à jour.
Bon demain je me lance dans la procédure d'intégration une fois les fichiers reçus.
STP reste à l'écoute... lol!

Bonne soirée et encore merci.
Camarade, que serais-je sans toi...
 

FOUQUET Yves

XLDnaute Occasionnel
Grrrrr, tout à l'heure cela fonctionnait parfaitement et là plus d'adresse mail dans .To !
Cela fait 1h que je cherche et je ne comprends pas! HELP!!!!!

VB:
Option Explicit  'Activation de la déclaration explicite des variables
Dim Ws As Worksheet  'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de cet UserForm

Dim dl&, courriels, destinataires$
'-------------------------------------------------------
'Correspond au programme du bouton QUITTER
Private Sub CommandButton1_Click()
Unload Me
Application.DisplayAlerts = False   'supprime l'alerte
End Sub
'--------------------------------------------------------------
Private Sub CommandButton2_Click() 'VALIDER

Application.DisplayAlerts = False
Worksheets("Effectif").Copy
ActiveWorkbook.SaveAs "D:\Gestion AHI\transfer\recept_adhe.xlsx"
ActiveWorkbook.Close True
Worksheets("Adh_arch").Copy
ActiveWorkbook.SaveAs "D:\Gestion AHI\transfer\recept_arch.xlsx"
ActiveWorkbook.Close True
Application.DisplayAlerts = True
'----------------------------
Set Ws = Sheets("Aides3")               'Avec la feuille "Aides3"  fait....
dl = Cells(Rows.Count, "Q").End(3).Row
courriels = Application.Transpose(Range("Q3:Q" & dl).Value)  ' -- Q est la colonne des adresses ----
MsgBox Join(courriels, "; ")                                                        ' --- affiche les adresses collectées dans la feuille ----
destinataires = Join(courriels, "; ")

  With CreateObject("Outlook.Application").CreateItem(0)
        
    .Attachments.Add "D:\Gestion AHI\transfer\recept_adhe.xlsx"  '--- si on veut mettre le fichier en piéce jointe ----
    .Attachments.Add "D:\Gestion AHI\transfer\recept_arch.xlsx"  '--- si on veut mettre le fichier en piéce jointe ----
    
    .To = destinataires
    .Subject = " Transmission fichier A.H.I Effectifs "
    .Display
    '.Send
  End With

End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Parce que je pensais que tu aurais complété de toi-même
courriels = Application.Transpose(WS.Range("Q3:Q" & dl).Value)

Si on spécifie WS comme étant Sheets("Aide3"), il faut utiliser WS dans le code quand cela est nécessaire.

C'était la vocation de mes macros exemples
Te faire comprendre l'emploi de Dim WS... Set WS=...
Apparemment, j'ai échoué.

NB: Pour mémoire, je mets le lien vers ces macros exemples.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA