Copier coller des ligne de cellule (VBA je pense)

Bonjour,
je m'explique feuille 1 Je dispose de plusieurs cellules en version horizontale ( Numéro devis, client,facture, type, etc … ) avec toujours au début le numéro devis qui des fois peut être le même, j'aimerais avoir un bouton pour copier toutes les cellules avec le numéro devis que j'aurais choisi dans mon tableau et les coller dans un autre tableau déjà existant à la suite des lignes déjà entrée dans mon tableau sur la feuille 2, mais à partir de la colonne B.

Je ne sais pas si ces très clair :)
merci d'avance

Bonjour,
Merci de joindre un fichier pour une aide adapatée du forum.
Tu en profiteras pour mettre la version Excel utilisée dans ton profil. 😉
Cdlt.

desolé voici le fichier

Sub CopierColler()
     With Range("bLignesdevis")
          Set c1 = .Offset(, 1).Resize(, .Columns.Count - 1)     'plage à copier
     End With

     With Range("bLignesFactures").ListObject.ListRows.Add.Range.Resize(c1.Rows.Count)     'nouvelle ligne "factures
          .Columns(1).Value = "x"            'colonne numéro factures
          c1.Copy                            'copier plage
          .Cells(2).PasteSpecial xlValues    'coller les valeurs
          .Columns(1).ClearContents          'RAZ première colonne
     End With
End Sub

Bonjour,

ça m'a tout l'air intéressant, mais je ne peux choisir quelle référence de devis je veux copier en facture avec ton code actuel.

J'aimerai aussi copier que les cellule ( client date facture type date debut date fin lieu ligne facture code article libellé quantité prix unitaire montant taux tva montant ttc ) correspondante a mon numero de devis choisis ou du moins choisir lesquels je veux copier et je rechangerai dans le code contrairement à la pop-up pour le numéro de devis à copier il faudrait que ça copie toutes les références qui ont le même nom que j'ai indiqué dans la pop-up.

re,

cette macro copie&colle seulement les lignes visible, colonnes B:I et K

Sub CopierColler()
     Dim i     As Integer
     Set c = Range("bLignesdevis").Offset(, 1)
     On Error Resume Next
     i = c.Columns(1).SpecialCells(xlVisible).Count
     'Set c1 = .Offset(, 1).Resize(, .Columns.Count - 1).SpecialCells(xlVisible)     'plage à copier = les lignes visibles
     On Error GoTo 0
     If i = 0 Then MsgBox "rien à copier": Exit Sub

     With Range("bLignesFactures").ListObject.ListRows.Add.Range.Resize(i)     'nouvelle ligne "factures
          .Columns(1).Value = "x"            'colonne numéro factures
          c.Columns("A:H").SpecialCells(xlVisible).Copy     'copier plage, 8 colonnes, sans formules
          .Cells(2).PasteSpecial xlValues    'coller les valeurs
          c.Columns("J").SpecialCells(xlVisible).Copy     'copier colonne sans formules
          .Cells(1, "K").PasteSpecial xlValues     'coller les valeurs
          .Columns(1).ClearContents          'RAZ première colonne
     End With
End Sub

Ok merci, je vais essayer ça et il n'aurait pas moyen qu'il y est un genre de message box ou autre pour que je note juste le numéro de devis et que ça copie toutes les lignes avec ce numéro ?

Sub CopierColler()
     Dim i As Integer, s As String
     With Range("bLignesdevis").ListObject
          .Range.AutoFilter 1
          .Range.AutoFilter
          s = Application.InputBox("Numéro du devis", "Copier vers Factures", Type:=2)
          If Len(s) = 0 Then Exit Sub
          .Range.AutoFilter 1, s
          i = .Range.Columns(1).SpecialCells(xlVisible).Count - 1
          Set c = .DataBodyRange.Offset(, 1).Resize(, .ListColumns.Count - 1)
     End With

     If i = 0 Then MsgBox "rien à copier": GoTo 1
     With Range("bLignesFactures").ListObject.ListRows.Add.Range.Resize(i)     'nouvelle ligne "factures
          .Columns(1).Value = "x"            'colonne numéro factures
          c.Columns("A:H").SpecialCells(xlVisible).Copy     'copier plage, 8 colonnes, sans formules
          .Cells(2).PasteSpecial xlValues    'coller les valeurs
          c.Columns("J").SpecialCells(xlVisible).Copy     'copier colonne sans formules
          .Cells(1, "K").PasteSpecial xlValues     'coller les valeurs
          .Columns(1).ClearContents          'RAZ première colonne
     End With

1:
     c.ListObject.Range.AutoFilter           'supprimer le filtre
End Sub

Ok ça commence à bien m'allez dernier petit truc que je n'avais pas prévu dans ma feuille ligne facture j'ai rajouté une colonne numéro devis juste après numéro facture en colonne B j'aimerais que ça copie aussi le numéro de devis comment je rajoute ça au code ?

Merci en tout cas pour ce que tu as déja fait !

Sub CopierColler()
     Dim i As Integer, s As String
     With Range("bLignesdevis").ListObject
          .Range.AutoFilter 1
          .Range.AutoFilter
          s = Application.InputBox("Numéro du devis", "Copier vers Factures", Type:=2)
          If Len(s) = 0 Then Exit Sub
          .Range.AutoFilter 1, s
          i = .Range.Columns(1).SpecialCells(xlVisible).Count - 1
          Set c = .DataBodyRange
     End With

     If i = 0 Then MsgBox "rien à copier": GoTo 1
     With Range("bLignesFactures").ListObject.ListRows.Add.Range.Resize(i)     'nouvelle ligne "factures
          .Columns(1).Value = "x"            'colonne numéro factures
          c.Columns("A:I").SpecialCells(xlVisible).Copy     'copier plage, 8 colonnes, sans formules
          .Cells(2).PasteSpecial xlValues    'coller les valeurs
          c.Columns("K").SpecialCells(xlVisible).Copy     'copier colonne Quantité, sans formules
          .Cells(1, "L").PasteSpecial xlValues     'coller les valeurs
          .Columns(1).ClearContents          'RAZ première colonne
     End With

1:
     c.ListObject.Range.AutoFilter           'supprimer le filtre
End Sub

Merci beaucoup ça fait le taff :) ! si j'ai d'autre question je reviendrais vers toi !

Rechercher des sujets similaires à "copier coller ligne vba pense"