Macro copier/coller

Bonjour,

Je souhaiterai copier/coller toujours les mêmes lignes d'un onglet modèle et venir les ajouter avec le code suivant après la dernière utilisée. Mai mon code ne fonctionne pas... Pouvez-vous m'aider ? Merci par avance

Sub Copier_coller()

'

' Copier_coller Macro

' Copie colle sous la dernière ligne utilisée de l'onglet Notation

'

'

Range("A2:L7").Select

Selection.Copy

Sheets("Notation").Select

DernLigne = Range("A" & Range(Rows.Count).End(xlUp).Row + 1).Select

ActiveSheet.Paste

End Sub

Bonjour Gpilard, bonjour le forum,

La regle d'or en VBA c'est déviter autant que tu le peux les Select ou autre Activate qui ne font que ralentir l'exécution du code et sont source de platages !...

Quand tu copies/colles sur deux onglets différent il faut toujours spécifier l'onglet avant la plage (Range). La syntaxe est :

OngletSource.Range("Ta_plage_source").Copy OngletDestination.Range("Ta_cellule_destination")

Aucun Select !...

J'utilise très souvent des variables qui rallongent le code mais ont le mérite de la rendre plus lisible :

Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set OS = Worksheets("Feuil1") 'définit l'onglet source OS (à adapter à ton cas)
Set OD = Worksheets("Notation") 'définit l'onglet destination OD (à adapter à ton cas)
'définit la cellule de destination DEST (A1 si A1 est vide, sinon, la première cellule vide de la colonne A de l'onglet OD)
If OD.Range("A1") = "" Then Set DEST = OD.Range("A1") Else Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
OS.Range("A2:L7").Copy DEST 'copie la plage A2:L7 de l'onglet source et la colle dans DEST
End Sub

Merci pour votre réponse très rapide, qui fonctionne parfaitement !!!

Seulement, et j'ai oublié de préciser j'ai des formules dans mon anglet 'Modèle' de la ligne A2 à L7 et quand ça copie/colle ça ne retient pas les formules. C'est faisable à partir de ce code d'ajouter la prise en compte des formules quand on vient copier/coller.

Si c'est possible, merci bcp d'avance.

Sub BASCULE()

'

' BASCULE Macro

'

Dim OS As Worksheet 'déclare la variable OS (Onglet Source)

Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)

Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set OS = Worksheets("Modèle") 'définit l'onglet source OS (à adapter à ton cas)

Set OD = Worksheets("Notation") 'définit l'onglet destination OD (à adapter à ton cas)

'définit la cellule de destination DEST (A1 si A1 est vide, sinon, la première cellule vide de la colonne A de l'onglet OD)

If OD.Range("A2") = "" Then Set DEST = OD.Range("A2") Else Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)

OS.Range("A2:L7").Copy DEST 'copie la plage A2:L7 de l'onglet source et la colle dans DEST

End Sub

Re,

Désolé mais ce code copie avec les formules. Je ne comprends pas où se situe ton problème. Envoie le fichier pour qu'on vérifie...

Oup's c'est moi... j'ai du faire une mauvaise manip' ca fonctionne très bien.

Un grand merci pour ton aide!!!

Rechercher des sujets similaires à "macro copier coller"