XL 2013 Macro de mise en presse papier des lignes - colonnes qui ont été filtrées par une sélection dans le filtre

Renardy

XLDnaute Nouveau
Bonjour à tous, je souhaiterai pouvoir copier via une macro a créer les lignes/colonnes qui correspondent à une sélection que j'ai faite par une sélection dans le filtre et pouvoir faire "coller" ma sélection dans un autre programme qui n'est pas Microsoft. Il faut donc mettre en presse papier.
Par exemple en choisissant (fichier joint) Dupont Thierry par le filtre et en cliquant sur le bouton créé pour la macro on obtient toutes le lignes et colonnes copies en presse papier uniquement de DUPONT THIERRY.

Est ce possible ?
Merci à tous pour votre aide.

André
 

Pièces jointes

  • Listing.xlsx
    13.8 KB · Affichages: 21

Dudu2

XLDnaute Barbatruc
Bonjour,
VB:
Public Sub CopierLignesFiltrées()
    Dim DerLigFiltrée As Long
    Dim DerCol As Long
    Dim Rng As Range
    Const NoLigneTitre = 2
    Const NbColonnesAvantDonnées = 0
    
    DerCol = ActiveSheet.Cells(NoLigneTitre, Columns.Count).End(xlToLeft).Column
    DerLigFiltrée = ActiveSheet.Cells(Rows.Count, NbColonnesAvantDonnées + 1).End(xlUp).Row
    Set Rng = ActiveSheet.Cells(NoLigneTitre + 1, NbColonnesAvantDonnées + 1).Resize(DerLigFiltrée - NoLigneTitre, DerCol - NbColonnesAvantDonnées)
    'MsgBox Rng.Address
    Rng.SpecialCells(xlCellTypeVisible).Copy
End Sub
 

Renardy

XLDnaute Nouveau
Bonjour,
VB:
Public Sub CopierLignesFiltrées()
    Dim DerLigFiltrée As Long
    Dim DerCol As Long
    Dim Rng As Range
    Const NoLigneTitre = 2
    Const NbColonnesAvantDonnées = 0
   
    DerCol = ActiveSheet.Cells(NoLigneTitre, Columns.Count).End(xlToLeft).Column
    DerLigFiltrée = ActiveSheet.Cells(Rows.Count, NbColonnesAvantDonnées + 1).End(xlUp).Row
    Set Rng = ActiveSheet.Cells(NoLigneTitre + 1, NbColonnesAvantDonnées + 1).Resize(DerLigFiltrée - NoLigneTitre, DerCol - NbColonnesAvantDonnées)
    'MsgBox Rng.Address
    Rng.SpecialCells(xlCellTypeVisible).Copy
End Sub


Déjà grand merci à vous pour votre aide. je vais tester en journée.
merci.
André
 

Renardy

XLDnaute Nouveau
Déjà grand merci à vous pour votre aide. je vais tester en journée.
merci.
André

re-bonjour j'ai testé et ca marche super ! J 'ai juste une question, je vois qu'en ligne 5 ,de la macro (
Const NbColonnesAvantDonnées = 0) , vous donnez la possibilité de ne pas prendre une ou plusieurs premières colonnes
Serait il possible d'obtenir dans la macro un paramètre en plus du même style qui ligne 5 qui autorise à ne pas prendre aussi la dernière ou plusieures colonnes de la fin de table ?
déja grand merci pour votre aide.
André
 

Dudu2

XLDnaute Barbatruc
Bonjour
VB:
Public Sub CopierLignesFiltrées()
    Dim DerLigFiltrée As Long
    Dim Rng As Range
    Const NoLigneTitre = 2
    Const PremièreColonneACopier = 1
    Const DernièreColonneACopier = 10
    
    DerLigFiltrée = ActiveSheet.Cells(Rows.Count, PremièreColonneACopier).End(xlUp).Row
    Set Rng = ActiveSheet.Cells(NoLigneTitre + 1, PremièreColonneACopier) _
                         .Resize(DerLigFiltrée - NoLigneTitre, DernièreColonneACopier - PremièreColonneACopier + 1)
    'MsgBox Rng.Address
    Rng.SpecialCells(xlCellTypeVisible).Copy
End Sub
 

Renardy

XLDnaute Nouveau
Bonjour
VB:
Public Sub CopierLignesFiltrées()
    Dim DerLigFiltrée As Long
    Dim Rng As Range
    Const NoLigneTitre = 2
    Const PremièreColonneACopier = 1
    Const DernièreColonneACopier = 10
   
    DerLigFiltrée = ActiveSheet.Cells(Rows.Count, PremièreColonneACopier).End(xlUp).Row
    Set Rng = ActiveSheet.Cells(NoLigneTitre + 1, PremièreColonneACopier) _
                         .Resize(DerLigFiltrée - NoLigneTitre, DernièreColonneACopier - PremièreColonneACopier + 1)
    'MsgBox Rng.Address
    Rng.SpecialCells(xlCellTypeVisible).Copy
End Sub

Re bonjour et merci pour votre diligence, Encore grand merci à vous :)
 

Discussions similaires