Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Ouais, j'ai bien cherché dans ce vaste domaine mais les solutions vues, se traduisent par un nombre de lignes trop compliquées pour moi...
En dernier recours je mettrais toutes les adresses en dur...
 

Staple1600

XLDnaute Barbatruc
Re

Relis mon précédent message, cela t'évitera de taper dans le dur

PS: Tu es sur qu'un oeil humain ne dévinera pas quelle est ton adresse mail.
C'est de l'anonymisation "premier prix", non ...
 

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
Sauf qu'à ma naissance je n'avais pas l'informatique infuse...
C'était juste un clin d'oeil à "camarade" Jean Ferrat "que serais je sans toi" Aragon...

Une question: l'informatique est ton métier ou juste une passion ?
 

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
Bonjour le fil,

Yves
Non, il fallait mettre
Set Ws = Sheets("Aides3") 'Avec la feuille "Aides3" fait.... dl = WS.Cells(Rows.Count, "Q").End(3).Row

Faut croire que mes macros exemples n'étaient pas assez didactiques...
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…