Copier/Coller
RésoluJSCH19 Messages postés 134 Statut Membre -
Bonjour le Forum,
je galere depuis un certain temps pour arriver a simplifier une formule de copier/coller d'une selection.
je veux copier des donnees d'une feuille A pour les coller sur une feuille B.les elements d'informations dont je veux copier est sur la forme de range("A2:B64") puis les coller sur la 4 colonnes du tableau de la Feuille B.
NB:Mon Tableau comporte 5 colonnes.
voila le code dont je veux simplifier:
Dim B As Long,C As Long, dl As Long, I As Long, I2 As Long
Dim tb As ListObject, tb1 As ListObject, rg As Range, rg1 As Range
dl = Sheet60.Range("A" & Rows.Count).End(xlUp).row
Set tb = Sheet61.ListObjects("Table61")
For I = 2 To dl
If Sheet60.cells(I, 1).Value <> Empty Then
Sheet60.cells(I, 1).Copy 'range("A2:B64")
Sheet61.Activate
B = Sheet61.Range("B1048575").End(xlUp).row
Set rg = tb.Range
Set rg = rg.Resize(rg.Rows.Count + 1)
tb.Resize Range(rg.Address)
Sheet61.cells(B + 1, 4).Select
Sheet61.PasteSpecial
End If
Next I
For I2 = 2 To dl
If Sheet60.cells(I2, 1).Value <> Empty Then
Sheet60.cells(I2, 2).Copy
Sheet61.Activate
C = Sheet61.Range("B1048575").End(xlUp).row
Set rg1 = tb1.Range
Set rg1 = rg1.Resize(rg1.Rows.Count + 1)
tb1.Resize Range(rg1.Address)
Sheet61.cells(B + 1, 5).Select
Sheet61.PasteSpecial
End If
Next I2
Voila ma proposition mais les donnees ont été multipliées ce qui change drastiquement le resultat escompté.
For I = 2 To dl
If Sheet60.cells(I, 1).Value <> Empty Then
Sheet60.Range("A2:B64").Copy 'cells(I, 1)
Sheet61.Activate
B = Sheet61.Range("B1048575").End(xlUp).row
Set rg = tb.Range
Set rg = rg.Resize(rg.Rows.Count + 1)
tb.Resize Range(rg.Address)
Sheet61.cells(B + 1, 4).Select
Sheet61.PasteSpecial
End If
Next I
- Copier/Coller
- Historique copier coller - Guide
- Copier-coller - Accueil - Informatique
- Copier coller pdf - Guide
- Style d'écriture a copier coller - Guide
- Symbole clavier copier coller - Guide
2 réponses
bonjour,
Ton code et ta description ne semblent pas correspondre.
Peux-tu expliquer plus précisément ce que tu veux faire? à tout hasard:
dim rgsource as range, rgdest as range, lgdest as long, dlsource as long
dim tb As ListObject, rgtb as range
dlsource = Sheet60.Range("A" & Rows.Count).End(xlUp).row
set rgsource = Sheet60.range(cells(2,"a"),cells(dlsource,"b"))
lgdest = Sheet61.Range("B1048575").End(xlUp).row + 1
set rgdest = Sheet61.cells(lgdest, 4)
Set tb = Sheet61.ListObjects("Table61")
Set rgtb = tb.Range
Set rgtb = rgtb.Resize(rgtb.Rows.Count + rgsource.Rows.Count)
tb.Resize rgtb
rgsource.copy rgdest
Bonjour yg_be,ce que je cherche a faire réellement c’est de copier des données d’une feuille A qui est sous la forme range(“A2:B6”) dans un tableau sur une feuille B. Je suis parvenu en copiant une colonne de la feuille A mais quand j’essaie avec une avec une colonne je parviens a le coller mais quand il s’agit de deux colonnes ca se colle dans le tableau mais se multiplie un bon nombre de fois. Qui change tout puisque il y a 63 lignes dans la feuilles A ce qui devrait etre 63 lignes collées dans la feuille B mais nn cela se multiplie jusqu’à a 4000.
ainsi:
Private Sub tyg()
Dim rgsource As Range, rgdest As Range, lgdest As Long, dlsource As Long
Dim tb As ListObject, rgtb As Range, flsource As Worksheet, fldest As Worksheet
Set flsource = Worksheets("Sheet1")
dlsource = flsource.Range("A" & flsource.Rows.Count).End(xlUp).Row
Set rgsource = flsource.Range(flsource.Cells(2, "a"), flsource.Cells(dlsource, "b"))
Set fldest = Worksheets("Sheet2")
lgdest = fldest.Range("B1048575").End(xlUp).Row + 1
Set rgdest = fldest.Cells(lgdest, 4)
Set tb = fldest.ListObjects("Table1")
Set rgtb = tb.Range
Set rgtb = rgtb.Resize(rgtb.Rows.Count + rgsource.Rows.Count)
tb.Resize rgtb
rgsource.Copy rgdest
End Sub