Copier et coller une ligne d'un tableau avec filtre

Bonjour,

J'ai un tableau de données.

7test.xlsx (10.13 Ko)

Je fais un filtre dans ce tableau

Je souhaiterai copier le résultat de la première ligne filtrée dans un tableau d'un autre onglet et ce à partir de la première ligne vide

Merci pour votre aide

Cordialement

Philmaure

Bonjour philmaure,

Un copier/coller le fait, non ? Ou bien précisez ce que vous voulez ?

Bonjour,

Merci pour votre réponse

C'est bien entendu avec une macro que je souhaiterai faire cela. Le tableau originel est bien plus important

Bien cordialement

Philmaure

Bonjour,

C'est faisable par macro. Est-ce que tu es d'accord ?

Daniel

Re, bonjour à DanielC,

Essayez ce code un peu commenté :

Sub CopierVers()
Dim xrg As Range, yrg As Range
   With Sheets("Histo")
      If .FilterMode Then .ShowAllData                                           ' on affiche toutes les lignes de la feuille Histo
      Set xrg = Sheets("Feuil1").Columns("a:h").SpecialCells(xlCellTypeVisible)  ' on copie les cellules visibles de la colonne C de Feuil1
      If xrg.Areas(1).Rows.Count > 1 Then                                        ' si la première zone a au moins deux lignes
         Set yrg = xrg.Areas(1).Rows(2)                                          ' la ligne à copier est la 2ème ligne la 1ère zone
      Else
         Set yrg = xrg.Areas(2).Rows(1)                                          ' la ligne à copier est la première ligne de 2ème zone
      End If                                                                     '     (éventuellement vide)
      yrg.Copy .Cells(.Rows.Count, "a").End(xlUp).Offset(1)                      ' copie de la ligne
   End With
End Sub

Re bonjour et un grand merci pour la réponse.

Tout es ok. Je suis parvenu à adapter par rapport à mon fichier de travail

Bonne journée

Philmaure

@mafraise,

toute petite correction,

  • il ne faut par faire l'effort des areas ...,
  • par contre, "specialcells" provoquent un change_event "inattendu", donc si nécessaire, il faut faire un effort pour éviter cela.

Ce ne sont pas des tableaux structurés, donc il y aura toujours quelque chose à copier&coller, parce qu'on copie toujours la ligne vide après les données. Avec des TS, ce serait un peu, pas grand chose, plus difficile.

Sub CopierVers2()
     Dim xrg As Range, yrg As Range, bEE As Boolean
     With Sheets("Histo")
          If .FilterMode Then .ShowAllData   ' on affiche toutes les lignes de la feuille Histo

          bEE = Application.EnableEvents     'situation du "EnableEvents"
          If bEE Then Application.EnableEvents = False     'arrêter les événements
          Set xrg = Sheets("Feuil1").Range("A1").CurrentRegion.Resize(, 8).Offset(1).SpecialCells(xlCellTypeVisible)     ' on copie les cellules visibles de la colonne C de Feuil1, DECALE d'une ligne !!!!
          If bEE Then Application.EnableEvents = bEE     'situation comme avant

          xrg.Copy .Cells(Rows.Count, "a").End(xlUp).Offset(1)     ' copie de la ligne

     End With
End Sub

EDIT : faute dans ma version précédente

Bien vu BsAlv,

Juste un petit détail, Philmaure ne désire copier que la première ligne filtrée:

Philmaure a écrit:

Je souhaiterai copier le résultat de la première ligne filtrée dans un tableau d'un autre onglet et ce à partir de la première ligne vide

Il faudrait remplacer dans ton code xrg.Copy par xrg.Rows(1).Copy , non ?

Encore une fois .

re,

je suppose que cela est correcte (sans teste), s'il n'y a rien à copier, cela copiera une ligne vide, donc ce ne'est pas une erreur

autrement ".areas(1).rows(1)" mais ?????????

Bonjour,

Je relance ma demande pour savoir comment je dois modifier la macro pour que seules les valeurs soient recopiées et non pas les formules ?

J'ai essayé de placer à divers endroit : Selection.PasteSpecial Paste:=xlPasteValues mais sans succès

Merci pour votre aide

Philmaure

Bonjour,

Dans un code ou dans l'autre, il faut procéder en 2 étapes au lieu d'une :

Remplacez

yrg.Copy .Cells(.Rows.Count, "a").End(xlUp).Offset(1)

Par

yrg.Copy
.Cells(.Rows.Count, "a").End(xlUp).Offset(1).PasteSpecial xlPasteValues
Application.CutCopyMode = False ' cette instruction pour désactiver la zone de copie

meme principe dans le code de BsAlv

Super, un grand merci. tout est désormais ok

Bonne am

Philmaure

Bien, content d'avoir pu vous débloquer. N'oubliez pas de clôturer le fil en sélectionnant la/les réponses qui ont le mieux répondu à votre question initiale.

Bonne journée

Rechercher des sujets similaires à "copier coller ligne tableau filtre"