Union range et sendmail ?

  • Initiateur de la discussion Initiateur de la discussion antiphot
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

antiphot

XLDnaute Occasionnel
Bonjour à toutes et à tous.

Voilà je suis confronté au pb suivant:

j'ai 2 plages variables distinctes en A et K. Les données de ces plages correspondent à des adresses email. J'aimerais envoyer le fichier en piece jointe à tous les destinaires des 2 plages. J'avais pensé que la méthode application.union(range......) irait mais apparement cela ne fonctionne pas ou alors il y a une connerie ds mon code que je ne vois pas ?

merci par avance pour vos conseils éclairés

Ci-joint le code:

Code:
If Bat = "A" And .Range("A65536").End(xlUp).Address <> "$A$1" And .Range("K65536").End(xlUp).Address <> "$K$1" Then
            
            Ligne = Sheets("feuil6").Range("A65536").End(xlUp).Row
            
            ActiveWorkbook.SendMail Application.Union(Range("A2:A" & Ligne), Range("K2:K" & Ligne)), "COMMANDE N°" & NumCommande  , AccuseReception
                If Err > o Then MsgBox "Adresse(s) incorrecte(s)"
                On Error GoTo 0
        End If
 
Re : Union range et sendmail ?

bonjour voisin

A tester

Code:
If Bat = "A" And .Range("A65536").End(xlUp).Address <> "$A$1" And .Range("K65536").End(xlUp).Address <> "$K$1" Then
 
            Ligne = Sheets("feuil6").Range("A65536").End(xlUp).Row
          [COLOR=blue]For each cel in   Application.Union(Range("A2:A" & Ligne), Range("K2:K" & Ligne))[/COLOR]
            ActiveWorkbook.SendMail [COLOR=blue]cel.value[/COLOR], "COMMANDE N°" & NumCommande  , AccuseReception
                If Err > o Then MsgBox "Adresse(s) incorrecte(s)"
                On Error GoTo 0
        [COLOR=blue]next cel[/COLOR]
        End If

Edit : Salut Minick
 
Re : Union range et sendmail ?

Bonjour Minik

Bonjour voisin

J'avais pensé à cette solution d'une boucle mais le pb c'est qu'au lieu d'un envoi groupé le programme va envoyé le classeur autant de fois que d'adresses. Dans certains cas cela représente un 10aine de personnes. Cela ne serait pas gênant en soit si ce n'est le charmant message de windows "Un programme essaie d'envoyer ......" qu'il faut cliquer à chaque fois.
 
Re : Union range et sendmail ?

Re

On va essayer en constituant un tableau

Code:
Dim tablo()
Redim tablo(0)
If Bat = "A" And .Range("A65536").End(xlUp).Address <> "$A$1" And .Range("K65536").End(xlUp).Address <> "$K$1" Then 
            Ligne = Sheets("feuil6").Range("A65536").End(xlUp).Row
for each cel in Application.Union(Range("A2:A" & Ligne), Range("K2:K" & Ligne))
   tablo(ubound(tablo))=cel.value
   redim preserve tablo(ubound(tablo)+1)
next cel 
redim preserve tablo(ubound(tablo)-1) 
ActiveWorkbook.SendMail tablo, Range("K2:K" & Ligne)), "COMMANDE N°" & NumCommande  , AccuseReception
                If Err > o Then MsgBox "Adresse(s) incorrecte(s)"
                On Error GoTo 0
 End If
 
Re : Union range et sendmail ?

Re,

A tester, j'ai fais ca en direct :

Code:
Dim eMails() As String
Dim Cpt As Integer
Dim PlageMails As Range, Cellule As Range

If Bat = "A" And .Range("A65536").End(xlUp).Address <> "$A$1" And .Range("K65536").End(xlUp).Address <> "$K$1" Then
            
    Ligne = Sheets("feuil6").Range("A65536").End(xlUp).Row
    
    Set PlageMails = Application.Union(Range("A2:A" & Ligne), Range("K2:K" & Ligne))
    
    For Each Cellule In PlageMails
        Cpt = Cpt + 1
        ReDim Preserve eMails(1 To Cpt)
        eMails(Cpt) = Cellule.Value
    Next Cellule
    
    ActiveWorkbook.SendMail eMails, "COMMANDE N°" & NumCommande, AccuseReception
        If Err > o Then MsgBox "Adresse(s) incorrecte(s)"
        On Error GoTo 0
End If
++
Minick

Edit : Salut pierrejean
 
Dernière édition:
Re : Union range et sendmail ?

Re

Voila une version qui fonctionne chez moi

Code:
Dim tablo()
ReDim tablo(0)
If Bat = "A" And .Range("A65536").End(xlUp).Address <> "$A$1" And .Range("K65536").End(xlUp).Address <> "$K$1" Then
            Ligne = Sheets("feuil1").Range("A65536").End(xlUp).Row
            MsgBox (Ligne)
For Each cel In Application.Union(Range("A2:A" & Ligne), Range("K2:K" & Ligne))
   tablo(UBound(tablo)) = cel.Value
   ReDim Preserve tablo(UBound(tablo) + 1)
Next cel
ReDim Preserve tablo(UBound(tablo) - 1)
ActiveWorkbook.SendMail tablo, "COMMANDE N°" & numCommande, AccuseReception
    If Err > o Then MsgBox "Adresse(s) incorrecte(s)"
    On Error GoTo 0
End If
 
Re : Union range et sendmail ?

Et bien ma fois je ne sais que penser ! car chez moi cela ne fonctionne pas. Petite précision J'utilise Outlook et non outlook express. Je vais essayer de faire un fichier exemple simplifié à partir de ton code pour comprendre d'ou provient le problème
 
Re : Union range et sendmail ?

Bon Sur un fichier simplifié cela fonctionne sans pb mais pas sur mon appli. En fait il semble qu'il me faille rajouter un select sur la feuille en question. Je n'en avais pas besoin sur mes autres conditions d'envoi du coup je n'y avais pas pensé.

Merci à vous deux pour votre aide et particulièrement à mon cher voisin

Philippe
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
994
B
  • Question Question
Réponses
3
Affichages
1 K
Retour