Page 1 sur 1

(VBA)selectionner toutes les lignes visibles

Posté : 24 mai 2019, 17:21
par Rag02700
Hello,

Je voudrais envoyer par mail via outlook un Range après un filtre...
Jusque là pas de problème.
Le problème survient lorsque je fais un filtre sur une de mes colonnes ...
Mon programme ne me prend plus en compte la sélection mais la feuille entière ...

Auriez-vous une soluce ??? :) :) Merci.

Mon code + fichier exemple :
Sub Diffusion()
Dim Ligne_En_Tete_VIVIER As Byte
Dim Feuille_VIVIER As Worksheet
Dim Plage_De_Diffusion As Range
'Generer le mail sans cocher la référence OUTLOOK LIBRARY
Dim oAPP                       As Object
Dim oItem                      As Object
Const olMailItem               As Long = 0

'###########################################################################################
'~~~~~~~~~~~~~~~~ Variables à modifier si la structure change ~~~~~~~~~~~~~~~~~~~

'## Si la ligne de référence de l'en-tete du classeur VIVIER change, modifier cette variable ! ##
Ligne_En_Tete_VIVIER = 10
'## Si la feuille de référence de ce classeur change, modifier cette variable ! ##
Nom_Feuille_VIVIER = "TDB_VIVIER"

'On defitnit la feuille VIVIER
Set Feuille_VIVIER = ThisWorkbook.Sheets(Nom_Feuille_VIVIER)
Dim derlig As Integer
derlig = Feuille_VIVIER.Range("F65000").End(xlUp).Row '//choix de la dernière ligne
'For Each Ligne In Range("A10:L" & derlig).SpecialCells(xlCellTypeVisible).Rows
'Ligne.Select
'Next Ligne
Range("L" & derlig).Select '//choix de l'angle de sélection inférieur droit
Range(Selection, Selection.End(xlUp)).Select
Range(Selection, Selection.End(xlToLeft)).Select '//jusqu'à A1
Selection.SpecialCells(xlCellTypeVisible).Select '// sélectionne que les cellules visible


''On definit la Plage de diffusion
'Set Plage_De_Diffusion = Feuille_VIVIER.Cells(Ligne_En_Tete_VIVIER, 1).CurrentRegion.SpecialCells(xlVisible)
''Copie de la plage
'Plage_De_Diffusion.Select
'ActiveSheet.Range("A10:B15").Select ' la plage de cellules à envoyer
ActiveWorkbook.EnvelopeVisible = True
 
With ActiveSheet.MailEnvelope
    .Introduction = "Bonjour," & vbLf & "Vous trouverez ci-joint le VIVIER"
    .Item.To = ""
    .Item.Subject = "VIVIER RECRUTEMENT"
    .Item.Display
End With
End Sub

Re: (VBA)selectionner toutes les lignes visibles

Posté : 25 mai 2019, 06:17
par James007
Bonjour,

Ton instruction :
Selection.SpecialCells(xlCellTypeVisible).Select
permet effectivement de ne sélectionner que les lignes visibles ...

Au delà du fait que tu devrais éliminer tous les Select ... et toutes tes anciennes instructions que tu as placées en commentaires ...

quel problème a ton code ...?

Re: (VBA)selectionner toutes les lignes visibles

Posté : 25 mai 2019, 07:54
par Rag02700
Hello,

Le problème c'est qu'il ne me propose pas d'envoyer la sélection mais la feuille entière...

Si je n'applique pas de filtre, il me propose la sélection ...

R@g

Re: (VBA)selectionner toutes les lignes visibles

Posté : 25 mai 2019, 08:07
par James007
Bonjour,

Sans Outlook ... je ne peux pas faire de tests réels ... mais as-tu essayé :
With ActiveSheet.Selection.MailEnvelope
En espèrant que cela t'aide

Re: (VBA)selectionner toutes les lignes visibles

Posté : 25 mai 2019, 10:51
par Rag02700
Non j'ai pas essayé cette syntaxe.

Je vais essayer lundi.

Merci.