XL 2013 copier coller sans écraser les lignes précédentes

JEREM82

XLDnaute Nouveau
Bonjour à tous,

Je chercher à copier une ligne d'un tableau et la coller dans un autre tableau sans écraser les lignes précédentes. J'ai fait des cherches et j'ai élaboré un bout de code mais qui ne fonctionne pas
Pouvez vous m'aider?


Dim ligne_destination As Integer
ligne_destination = Destination.Cells(Rows.Count, 1).End(xlUp).Row + 1


ActiveWindow.ScrollWorkbookTabs Sheets:=4
Sheets("TRIAGE").Select
Selection.Copy
Application.WindowState = xlNormal
Windows("BD.xlsx").Activate
Sheets("ABB").Select


ligne_destination.Select


Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.WindowState = xlNormal
Windows("essai copier coller.xlsm").Activate
Windows("PLANIF INTERS 2022 V1 RESEAU.xlsm").Activate
ActiveWindow.ScrollWorkbookTabs Sheets:=-4
End Sub
 
Dernière modification par un modérateur:

Robert

XLDnaute Barbatruc
Bonjour Jerem, bonjour le forum,

À adapter et à placer dans le classeur source.

Si les deux classeurs sont ouverts, essaie comme ça :
VB:
Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set CS = ThisWorkbook 'définit le classeur source CS (Celui qui contient ce code)
Set OS = CS.worSheets("TRIAGE") 'définit l'onglet source OS
Set CD = Workbooks("BD.xlsx") 'définit le classeur destination CD
Set OD = CD.Worksheets("ABB") 'définit l'onglet destination OD
Set DEST = OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
OD.Rows(TA_Ligne).Copy 'copie la ligne à réciser (je n'ai pas compris ton code pour cela)
DEST.PasteSpecial (xlPasteValues) 'colle les valeurs dans DEST
End Sub
 
Dernière édition:

JEREM82

XLDnaute Nouveau
Bonjour Jerem, bonjour le forum,

À adapter et à placer dans le classeur source.

Si les deux classeurs sont ouverts, essaie comme ça :
VB:
Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set CS = ThisWorkbook 'définit le classeur source CS (Celui qui contient ce code)
Set OS = CS.worSheets("TRIAGE") 'définit l'onglet source OS
Set CD = Workbooks("BD.xlsx") 'définit le classeur destination CD
Set OD = CD.Worksheets("ABB") 'définit l'onglet destination OD
Set DEST = OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
OD.Rows(TA_Ligne).Copy 'copie la ligne à réciser (je n'ai pas compris ton code pour cela)
DEST.PasteSpecial (xlPasteValues) 'colle les valeurs dans DEST
End Sub
Bonjour Robert et merci,

Le code fonctionne très bien, je souhaiterai par contre copier les cellules OS de A2 à J2 et non pas toute la ligne.
Pouvez vous m'aider?

Merci
 

Robert

XLDnaute Barbatruc
Bonjour le fil, bonjour le forum,

@Jerem, ça donnerait ça :

VB:
Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set CS = ThisWorkbook 'définit le classeur source CS (Celui qui contient ce code)
Set OS = CS.worSheets("TRIAGE") 'définit l'onglet source OS
Set CD = Workbooks("BD.xlsx") 'définit le classeur destination CD
Set OD = CD.Worksheets("ABB") 'définit l'onglet destination OD
Set DEST = OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
OS.Range("A2:J2").Copy DEST 'Option1 copie/colle
'DEST.Resize(1, 10).Value = OS.Range("A2:J2") 'option2 : récupère uniquement les valeurs
End Sub

@Bruno
Mais p... Tu es carrément flippant toi ! C'est Poutine qui te fait croire qu'être psychorigide à ce point c'est bien ?
Hé David ! Modère tes modérateurs par pitié. Ils vont faire fuir les participants !... Os court... Ha laide... Elpe...
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil


Une autre façon de faire, qui passe par l'Array
VB:
Sub Copier_sans_Copier()
Dim ValeursSeules
ValeursSeules = Cells(1).CurrentRegion.Value
Workbooks("Classeur3").Sheets(1).Cells(Rows.Count, 1).End(3)(2).Resize(UBound(ValeursSeules, 1), UBound(ValeursSeules, 2)).Value = ValeursSeules
End Sub
Condition de test
Deux classeurs ouverts (non enregistrés): Classeur2 et Classeur3
Le code est dans le Classeur2
Il y a des données sur la feuille1 de Classeur 2 et la macro est stockée et lancée dans le Classeur2.
(avec des classeurs enregistrés et ouverts, il faudra adapté ainsi : Workbooks("Classeur3.xlsm")
NB: Je propose cette syntaxe car dans le message introductif cette option du collage
Paste:=xlPasteValues
indique qu'on ne colle que les valeurs seules.
 

Discussions similaires

Réponses
2
Affichages
827

Statistiques des forums

Discussions
298 792
Messages
1 971 814
Membres
203 483
dernier inscrit
mel77