Copier coller sur un autre onglet

Bonjour le forum

Voilà après avoir bien regardée les questions qui ont été déjà posées je n'arrive pas à trouver une solution à mon problème.

J'ai fait une VBA pour copier coller valeur sur plusieurs onglets, hélas j'ai une erreur d’exécution 1004 , est ce que vous savez pourquoi ?

Je mets en pièce jointe le test

Merci

14classeur1.xlsm (20.40 Ko)

Bonjour,

Les instructions "Select" sont parfaitement inutiles, chez moi ta procédure fonctionne écrite ainsi :

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
    Range("D2:D4").Copy
    Range("F2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Sheets("Feuil2").Range("D2:D4").Copy
    Range("E2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Sheets("Feuil1").Activate
    Application.CutCopyMode = False
End Sub

Bonjour,

Une autre proposition.

Cdlt.

Private Sub CommandButton1_Click()
    Range("F2:F4").Value = Range("D2:D4").Value
    With Sheets("Feuil2")
        .Range("E2:E4").Value = .Range("D2:D4").Value
    End With
End Sub

Bonjour à tous,

hélas j'ai une erreur d’exécution 1004 , est ce que vous savez pourquoi ?

Le code de Pedro est excellent.

Mais si tu tiens à comprendre l'erreur 1004 de ton fichier ... c'est que le code, de ton fichier, est dans la "Feuil1" et tu veux sélectionner des objets dans la "Feuil2".

Si tu avais placé ton code dans un Module, il n'y aurait pas eu d'erreur.

Les "Select" proviennent de l'enregistrement automatique ... ce qui peut parfois être intéressant pour connaître des mots clés et du code.

Mais, il faut ensuite éliminer les select comme le démontre les codes de Pedro et de Jean-Eric.

ric

Autre précision utile, le code de Jean-Eric est moins gourmand et plus simple à comprendre. Je m'explique :

Je suppose que ta macro est inspirée de ce que tu ferais en tant qu'utilisateur pour reporter les valeurs, à savoir :

  • -> Je sélectionne les données à reporter (instruction "Select")
  • -> Je copie (instruction "Selection.Copy")
  • -> Je sélectionne l'endroit où coller (nouvelle instruction "Select")
  • -> Je fais un collage spécial pour ne conserver que les valeurs ( "Selection.PasteSpecial")

Sauf que l'intérêt d'une macro n'est pas de mimer un utilisateur :

  • -> Pas besoin de voir les donner à traiter (donc pas besoin de se trouver sur la bonne feuille à chaque fois,, ni "Activate" ni "Select" du moment que l'on précise sur quoi on travail)
  • -> Pas besoin de les sélectionner (pas de "Select")
  • -> Pas besoin de charger en mémoire tous les éléments (valeurs + formules + mise en forme...) pour ne garder que les valeurs

Au final, le plus simple (et le plus "light" en code et en ressources) est donc de dire à VBA : ICI tu mets la valeur contenue LA-BAS !

ahhhhh j'ai compris, merci beaucoup pour cette information, je pensais que je devais toujours détailler au maximum.

Dans tout les cas merci à vous 4 j'ai intégré le code de Jean Éric et ça fonctionne à merveille (et dire que ça fait une semaine que je cherche sur les forums la solution...)

Quitte à me répéter merci encore messieurs

Et bonne journée

Au nom de tous...

ric

Je confirme elle fonctionne à merveille :

Private Sub CommandButton1_Click()

If MsgBox("ATTENTION LE FICHIER VA METTRE À JOUR LES N-1 SUR 4 ONGLETS POUR CLÔTURE ? PENSER À ACTIVER L'ENSEMBLE DES CALCULS MACROS", vbOKCancel, _

"MISE À JOUR N-1 POUR CLÔTURE") = vbCancel Then Exit Sub

Application.ScreenUpdating = False

Range("H12:H56").Value = Range("G12:G56").Value

Range("M12:M56").Value = Range("L12:L56").Value

With Sheets("Calculateur")

.Range("Q41:Q67").Value = .Range("P41:P67").Value

.Range("Q74:Q166").Value = .Range("P74:P166").Value

.Range("Q173:Q265").Value = .Range("P173:P265").Value

.Range("Q272:Q364").Value = .Range("P272:P364").Value

.Range("Q371:Q463").Value = .Range("P371:P463").Value

.Range("Q470:Q562").Value = .Range("P470:P562").Value

.Range("Q569:Q661").Value = .Range("P569:P661").Value

.Range("Q668:Q760").Value = .Range("P668:P760").Value

.Range("Q767:Q859").Value = .Range("P767:P859").Value

.Range("Q866:Q958").Value = .Range("P866:P958").Value

End With

With Sheets("Recap Atelier")

.Range("K13:K184").Value = .Range("J13:J184").Value

End With

With Sheets("DAD")

.Range("J7:M9").Value = .Range("F7:I9").Value

.Range("J17:M19").Value = .Range("F17:I19").Value

.Range("J23:M40").Value = .Range("F23:I40").Value

.Range("J49:M51").Value = .Range("F49:I51").Value

.Range("J55:M72").Value = .Range("F55:I72").Value

.Range("J81:M83").Value = .Range("F81:I83").Value

.Range("J87:M104").Value = .Range("F87:I104").Value

.Range("J113:M115").Value = .Range("F113:I115").Value

.Range("J119:M136").Value = .Range("F119:I136").Value

.Range("J145:M147").Value = .Range("F145:I147").Value

.Range("J151:M168").Value = .Range("F151:I168").Value

.Range("J177:M179").Value = .Range("F177:I179").Value

.Range("J183:M200").Value = .Range("F183:I200").Value

.Range("J209:M211").Value = .Range("F209:I211").Value

.Range("J215:M232").Value = .Range("F215:I232").Value

.Range("J241:M243").Value = .Range("F241:I243").Value

.Range("J247:M264").Value = .Range("F247:I264").Value

.Range("J273:M275").Value = .Range("F273:I275").Value

.Range("J279:M296").Value = .Range("F279:I296").Value

End With

End Sub

Je vous remercie encore, je vais gagner du temps et surtout ça va m'empêcher de faire une bêtise

Rechercher des sujets similaires à "copier coller onglet"