XL 2016 VBA copier ligne dans un tableau

Yücel

XLDnaute Junior
Bonjour,

Lorsque j'entre un numéro dans la cellule "C6" de l'onglet "Journal"et que je clique sur le bouton "Dupliquer", il doit aller sur l'onglet "Dupliquer" et copier
(de la colonne B à P) toutes les lignes (avec ce même numéro indiqué en "colonne A") puis me les coller en dessous du tableau en m'insérant des lignes.

Est-ce possible ?? merci pour votre aide !

Ci-joint le fichier.

Avec mes remerciements.

Bonne soirée.
 

Pièces jointes

  • Tuto 2.xlsm
    467.3 KB · Affichages: 25
Solution
Deuxième essai
VB:
Sub Dupliquer()
Dim ZoneToFilter As Range
With ActiveSheet
    Pièce = .Range("C6")
    FinJ = .Range("B" & .Rows.Count).End(xlUp).Row + 2
End With

With Sheets("Dupliquer")
    FinDup = .Range("A" & .Rows.Count).End(xlUp).Row
    Set ZoneToFilter = .Range("A1:P" & FinDup)
    ZoneToFilter.AutoFilter
    ZoneToFilter.AutoFilter Field:=1, Criteria1:=CStr(Pièce)
    'NbLignesFiltrée = ZoneToFilter.Resize(, 1).SpecialCells(xlCellTypeVisible).Count - 1
    ZoneToFilter.Offset(1, 1).SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("Journal").Range("B" & FinJ)
    
    
'    Set zone = .Range("A1:A" & FinDup).Find(Pièce)
'        If Not zone Is Nothing Then
'            FirstAd = zone.Address
'            Do
'...

Dranreb

XLDnaute Barbatruc
Peut être auriez vous meilleurs temps de reproduire par petit bout seulement les colonnes ne comportant pas de formule identique sur toutes les lignes. Celles ci sont en effet reconduites automatiquement sur les lignes ajoutées dans un tableau, alors il suffit de ne pas les écraser ensuite !
 

Dranreb

XLDnaute Barbatruc
Essayez ça, mais je ne garantit absolument rien, d'autant que vous dites qu'il n'apparait pas de bon résultat …
VB:
Private Sub Dupliquer_Click()
   Dim RngSrc As Range, RngCbl As Range
   With Me.ListObjects(1)
      .ListRows.Add
      Set RngCbl = .ListRows.Add.Range.Offset(-1).Resize(2)
      End With
   Set RngSrc = Feuil21.[B2:P3].Offset(3 * Me.[C6].Value)
   RngSrc.Copy Destination:=RngCbl
   End Sub
 

Dranreb

XLDnaute Barbatruc
Mais non, n'abandonnez pas, mais au lieu de copier tout ne copiez que les partie variables par petits bouts genre RngCbl.Columns(1).Resize(, 3).Value = RngSrc.Columns(1).Resize(, 3).Value etc. en respectant les formules communes à toutes les lignes qui ont déjà été reproduites par les .ListRows.Add.
 

Discussions similaires

Réponses
12
Affichages
217