Code VBA selction de cellules après un filtre
Bonjour je souhaite trouver un code me permettant de selectionner des cellules après un filtre.
Contexte: je suis sur un envoi automatique de mail.
Je filtre sur la colonne P via un bouton pour masquer les personnes non concernées par cet email.
Pour les destinataires "Item.To", je souhaite selectionner les adresses mail située en colonne K, après avoir effectué mon filtre qui masque les personnes non concernées par cet email.
Sachant que ma selection d'adresse commence en dessous de la ligne 7 et se termine par l'équivalent sur excel d'un fin fleche bas.
Pouvez-vous m'aider?
Bonjour et bienvenu(e)
Ton fichier serait utile
Le code pourrait ressembler à celui-ci
Sub test()
Dim Cel As Range
Dim Nblg As Long
Nblg = Range("A" & Rows.Count).End(xlUp).Row
Range("A7:P" & Nblg).AutoFilter field:=16, Criteria1:="ok"
If Application.Subtotal(103, Columns("K")) > 1 Then
For Each Cel In Range("K8:K" & Nblg).SpecialCells(xlCellTypeVisible)
MsgBox "Adresse mail " & Cel
Next Cel
Else
MsgBox "Aucune adresse mail"
End If
ActiveSheet.AutoFilterMode = False
End SubRe-Bonjour,
Effectivement avec le fichier ça sera plus simple à expliquer
Le premier bouton "anomalie photo" me permet de filter sur la colonne P (Je souhaite garder les lignes ou il y a des cellules vide dans cette colonne). Le code fonctionne.
Le bouton "envoyer mail anomalie photo" (module 3) me sert à faire un envoi automatique de mail.
Je bloque sur ces deux items.
Pour Item.To = je souhaite qu'il me selectionne les logins de la colonne J après le filtre du premier bouton. Début de la selection = Après la ligne 7 - fin flèche bas
Pour Item.CC = Même principe, sauf que je souhaite qu'il me selectionne les logins de la colonne K et L . Début de la selection = Après la ligne 7 - fin flèche bas
Outlook reconnait ensuite les logins et les transforme en adresse e-mail
Merci pour votre aide
Bonjour
Suis désolé mais je ne crois pas si je vais pouvoir t'aider
Je ne connais pas du tout ces instruction, quand je lance le programme il se plante sur ActiveWorkbook.EnvelopeVisible = True
Donc je ne sais pas ce que tu dois marquer pour .Item.To et Item.CC, est-ce que dois faire une boucle et à chaque fois marquer la cellule de la colonne J, et les cellules des colonnes K et L
Exemple
Private Sub CommandButton3_Click()
'Déclaration des variables
Dim Recap As String
Recap = "Recap Octobre"
Dim sujet As String
sujet = "Envoi photo " & ThisWorkbook.Sheets(Recap).Cells(1, 13).Value
Dim msg As String
msg = "Bonjour," & vbCrLf & vbCrLf
msg = msg & "WWWWWWWWWWWWWWWWWWWWWWW." & vbCrLf & vbCrLf
msg = msg & "WWWWWWWWWWWWWWWWWWWWWWWWW." & vbCrLf & vbCrLf
msg = msg & "Pour rappel, cette étape est primordiale." & vbCrLf & vbCrLf
msg = msg & "Cordialement," & vbCrLf & "WWWWW" & vbCrLf & vbCrLf
' Selection des codes clients.
ActiveWorkbook.EnvelopeVisible = True
Dim Cel As Range
For Each Cel In Range("J8:J" & Range("J" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
'Paramètre d'envoi
With ActiveSheet.MailEnvelope
.Introduction = msg
.Item.To = Cel ' Colonne J
.Item.CC = Cel.Offset(0, 1) & Cel.Offset(0, 2) ' Colonnes K et L
.Item.Subject = sujet
.Item.Send
End With
Next Cel
MsgBox "Mails envoyés"
End SubOu alors envoyer tout d'un seul coup
Exemple
Private Sub CommandButton3_Click()
'Déclaration des variables
Dim Recap As String
Recap = "Recap Octobre"
Dim sujet As String
sujet = "Envoi photo " & ThisWorkbook.Sheets(Recap).Cells(1, 13).Value
Dim msg As String
msg = "Bonjour," & vbCrLf & vbCrLf
msg = msg & "WWWWWWWWWWWWWWWWWWWWWWW." & vbCrLf & vbCrLf
msg = msg & "WWWWWWWWWWWWWWWWWWWWWWWWW." & vbCrLf & vbCrLf
msg = msg & "Pour rappel, cette étape est primordiale." & vbCrLf & vbCrLf
msg = msg & "Cordialement," & vbCrLf & "WWWWW" & vbCrLf & vbCrLf
' Selection des codes clients.
'ActiveSheet.Range("B7:F7").Select
'Range(Selection, Selection.End(xlDown)).Select
'Paramètre d'envoi
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
.Introduction = msg
.Item.To = Range(Range("J8:J" & Range("J" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Address)
.Item.CC = Range(Range("K8:L" & Range("K" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Address)
' .Item.To = Range("j8")
' .Item.CC = Range("k8")
.Item.Subject = sujet
.Item.Send
End With
MsgBox "Mails envoyés"
End SubMais je ne saurais dire
Si pas ça je te conseille de fermer ce post et d'en ouvrir un autre