VBA : copy/paste value dans une autre feuille

Bonjour à tous,

J'avais déjà fait une demande pour un problème similaire mais cette fois-ci je souhaite copier coller des valeurs uniquement (sans les formules) dans un autre sheet en utilisant un boutton VBA.

J'ai essayé deux méthodes avec "destinatations" et avec "worksheets" sans succès.

Peut-etre que quelqu'un ici aura facilement la réponse.

Bonne soirée,

BW

Ps: vous trouverez en pj mon excel avec les "explications détaillées" de ce que je veux faire

12exemple2710.xlsm (10.12 Ko)

Bonjour

Avec ce code :

Sub test()
Dim dlg As Integer

With Sheets("sheet2")
    dlg = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("A" & dlg + 1) = Sheets("sheet1").Range("A2").Value
    .Range("B" & dlg + 1) = Sheets("sheet1").Range("B2").Value
    .Range("C" & dlg + 1) = Sheets("sheet1").Range("C2").Value
    .Range("D" & dlg + 1) = Sheets("sheet1").Range("D2").Value
End With
End Sub

Si ok -->

Cordialement

Bonjour à tous,

les 4 en même temps :

Sub test()
    Dim dlg As Long
    dlg = .Range("A" & Rows.Count).End(xlUp).Row
    Worksheets("sheet2").Range("A" & dlg + 1).Resize(, 4) = Worksheets("sheet1").Range("A2:D4").Value
End Sub

eric

Hello, merci pour votre réponse. J'aimerai bien utiliser la version de Eric étant donné que dans mon vrai fichier j'ai beaucoup plus de ligne. Cependant, cela ne marche pas avec ma formule. J'ai une erreur sur dlg.Range :'' Invalid or unqualified reference''.

Bonjour

Ou avez vu

dlg.Range

dlg est le numéro de ligne vous ne pouvez donc pas lui affecter une instruction derrière

A+

Cependant, cela ne marche pas avec ma formule. J'ai une erreur sur dlg.Range :'' Invalid or unqualified reference''.

pas facile de vous dire au vu de votre explication
Que ce soit la proposition d'Eric ou la mienne cela revient au même. C'est juste que la proposition d'Eric est plus simple voire rapide

Desole, j'ai ecris trop vite lors de ma reponse. C'est bien sur dlg = .Range que j'ai une erreur

vous avez effectué le test dans le fichier joint ?

Bonjour Dan,

Yes j'ai également testé dans le fichier en pj sans succès...

Je vais surement partir sur votre méthode.

Merci

BW

Bonjour,

j'avais été un peu vite dans la modif de la proposition de Dan et oublié un bout :

Sub Button3_Click()
    Dim dlg As Long
    dlg = Worksheets("sheet2").Range("A" & Rows.Count).End(xlUp).Row
    Worksheets("sheet2").Range("A" & dlg + 1).Resize(, 4) = Worksheets("sheet1").Range("A2:D2").Value
End Sub

qu'on peut aussi écrire :

Sub Button3_Click()
    Worksheets("sheet2").Range("A" & Worksheets("sheet2").Range("A" & Rows.Count).End(xlUp).Row + 1).Resize(, 4) = Worksheets("sheet1").Range("A2:D2").Value
End Sub

ou :

Sub Button3_Click()
    With Worksheets("sheet2")
        .Range("A" & .Range("A" & Rows.Count).End(xlUp).Row + 1).Resize(, 4) = Worksheets("sheet1").Range("A2:D2").Value
    End With
End Sub

eric

Top merci beaucoup pour vos réponses. Mon problème résolu.

Néanmoins, pour avoir une compréhension globale du code, je me demandais dans le cas où j'ai plusieurs lignes à copier (sheet1) que je souhaite coller dans le sheet 2, il me suffit de modifier from "Range("A2:D2").Value" to "Range("A2:D3").Value mais ca ne marche pas. Si vous avez une réponse à cela ça m'intéresse sinon encore merci pour votre aide et bon dimanche :)

Bonjour,

Il faut modifier plage source et destination.
Version pour plusieurs lignes, 2 ou plus.
Laisser une ligne vide en dessous et colonne E vide.

Sub Button3_Click()
    Dim nblig As Long
    nblig = [A1].CurrentRegion.Rows.Count - 1
    With Worksheets("sheet2")
        .Range("A" & .Range("A" & Rows.Count).End(xlUp).Row + 1).Resize(nblig, 4) = Range("A2:D2").Resize(nblig).Value
    End With
End Sub

eric

OK c'est clair, merci encore pour votre assistance.

@Dan - Vu que vous êtes modérateur du site, je pensais qu'il serait bien de mettre en place un système de "don" (à discrétion de l'auteur du post) pour remercier les personnes qui ont contribué à l'aider. Je ne sais pas si c'est quelque chose qui se fait déjà ailleurs mais je pense que tout "travail/aide" mérite quelque chose.

Tu sais, on fait ça par que ça nous plait de nous bouger les neurones, le paiement est un merci.
Si le site t'a plu, tu peux prendre l'option premium pour la durée qui te va : https://www.excel-pratique.com/fr/compte/premium-avantages?stats=forum_ab
eric

Bonjour,

Désolé pour le retard mais vous avez la réponse d'Eriic.

@Dan - Vu que vous êtes modérateur du site, je pensais qu'il serait bien de mettre en place un système de "don" (à discrétion de l'auteur du post) pour remercier les personnes qui ont contribué à l'aider. Je ne sais pas si c'est quelque chose qui se fait déjà ailleurs mais je pense que tout "travail/aide" mérite quelque chose.

Le forum est et reste un lieu d'aide et d'échange gratuit accessible à tout qui veux apprendre ou proposer des solutions.
Un simple respect des règles décrites dans la charte et un merci à ceux qui contribuent à la résolution d'une demande est déjà grandement apprécié.

Il n'a, à ce jour, jamais été dans le projet d'instaurer un système de don qui, d'ailleurs, pourrait prendre des orientations diverses et à terme pourraient être non appréciées.

Si un demandeur souhaite effectivement faire un don, il lui est loisible de contacter la personne qui l'a aidée en MP pour en discuter.

Cordialement

Désolé pour ma réponse tardive...Je n'avais pas vu les notifications de vos réponses.

Je n'avais pas connaissance de l'option premium même si mon idée première était plus de remercier directement la/les personnes qui m'ont aider à résoudre mon problème.

Merci encore et bon week-end

Rechercher des sujets similaires à "vba copy paste value feuille"