XL 2013 Avec un tableau croisé dynamique envoyer un mail seulement à une sélection

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 !

Estellepokis

XLDnaute Nouveau
Bonjour,

Je suis débutante en Excel, macro, VBA...

J'ai une question pour connaitre une procédure à un projet que j'ai.

J'ai un tableau croisé dynamique avec 3 filtres. A la sortie il va m'afficher le nom, prénom et adresse mail de différentes personnes.
Jusqu'à présent, on pouvait appuyer sur l'adresse mail d'une personne et grâce à une macro et VBA ça nous renvoyer sur outlook pour lui envoyer un mail.
Or, j'aimerais quand il m'affiche les différentes personnes en fonction du filtre que j'ai choisi, en sélectionner plusieurs (peut-être grâce à des cases à cocher ?) et leur envoyé un mail groupé en copie caché.

Je pensais pour ça, DANS MA BDD :
> Ajouter une colonne "MAIL" avec seulement une case à cocher dans chaque ligne correspondant à une personne
> Faire apparaître le champ "MAIL" dans mon tableau croisé dynamique
Mais je n'arrive pas à faire apparaître les cases à cocher dans le tableau dynamique ? Il y a écrit "vide" ?

Ensuite en cochant les cases, l'idée était d'appuyer sur un bouton "Envoyer mail" qui serait relié au case coché et voilà.

Mais je ne sais pas si j'ai la bonne procédure ? Avez-vous des indications pour une novice comme moi en Excel ?
 
Je peux t'envoyer un excel vide d'informations mais qui a la même forme si ça peut t'aider ?

Moi je cherche encore comment faire comprendre au bouton, qu'il garde en mémoire les adresses mails des Windings rouges ? Ensuite j'ouvrirai la boite outlook avec les adresses mails récoltées, mais ça, ça ira je pense !
 
Pour l'instant j'ai fait ce code qui me permet d'ouvrir Outlook avec tous les destinataires de la colonne J (là où il y a toutes les adresses mails) et de les mettre en copie caché.

Code:
Sub Bouton4_Cliquer()

Dim OutlookApp As Object
Dim OutlookMail As Object
Dim destinataire As String
Dim A As Integer

With Sheets("REPERTOIRE")
    For A = 16 To Range("J65536").End(xlUp).Row
        destinataire = destinataire & ";" & Range("J" & A).Value
    Next A
    
    Set OutlookApp = CreateObject("outlook.application")
    Set OutlookMail = OutlookApp.createitem(0)
        With OutlookMail
        .Subject = "" 'sujet du mail
        .BCC = destinataire 'adresse mail destinataire
        .Display 'affiche le mail
        End With

End With

End Sub

Il faut maintenant que j'arrive à sélectionner, seulement, les adresses de la ligne où le windings 254 (colonne N) est rouge.
Donc prendre les adresses mails (colonne J) où sur la même ligne à la colonne N la case est rouge ?
 
Erratum: (rgbRed au lieu de vbRed) et font.color au lieu de .colorindex (ma faute!)
Code:
    For A = 16 To Range("J65536").End(xlUp).Row
        If Range("N" & A).Font.Color= rgbRed Then
            destinataire = destinataire & ";" & Range("J" & A).Value
        End If
 
Super, ça marche !

J'ai encore une question!
Sur ce programme qui permettait de changer le windings de couleur quand on cliquait sur la cellule, comment je peux exempter une CASE de la macro ?
J'ai essayé plusieurs sol et ça ne marche pas...

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Column = 14 Then
    With Target.Font
        If .Color = rgbBlack Then .Color = rgbRed Else .Color = rgbBlack
    End With
End If

End Sub
 
Pour exclure (par exemple) les cases N16, N18 et N26 de la macro
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Column = 14 Then
    if Target.Row = 16 or Target.Row = 18 or Target.Row = 26 then exit sub
    With Target.Font
        If .Color = rgbBlack Then .Color = rgbRed Else .Color = rgbBlack
    End With
End If

End Sub
 
Bonsoir le fil

Juste pour varier la syntaxe
(avec emploi d'un Select Case et d'un IIF)
VB:
Private Sub Worksheet_SelectionChange(ByVal T As Range)
If T.Column = 14 Then
Select Case T.Row
Case 16, 18, 26: Exit Sub
Case Else: T.Font.Color = IIf(T.Font.Color = rgbBlack, rgbRed, rgbBlack)
End Select
End If
End Sub
PS: Je n'ai pas compris pourquoi il faut utiliser rgbRed plutôt que vbRed
Parce que sur mon Excel 2013
IIf(T.Font.Color = vbBlack, vbRed, vbBlack)
donne le même résultat.
 
- 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
18
Affichages
743
Retour