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 ?
destinataire = ""
For A = 16 To Range("J65536").End(xlUp).Row
If Range("N" & A).Font.ColorIndex = vbRed Then
destinataire = destinataire & ";" & Range("J" & A).Value
End If
Next A
Y a pas de débogage, mais quand il ouvre outlook il n'y a pas d'adresses mails malgré certains windings rouges.
Je pense que ça vient d'un problème de détection de couleurs non ?
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
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.