Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 !
 

Yücel

XLDnaute Junior
Dranreb,

Pourriez-vous svp voir la discussion #5 car le code fonctionne mais elle le résultat n’apparaît pas sur le tableau. il doit peut être y avoir une petite ligne à ajouter ?? qu'en pensez-vous ?

Merci.
 

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
247
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…