Copier valeur d'une feuille vers 1ère ligne vide d'une autre

Bonjour à tous, et par avance merci pour votre aide envers un débutant.

J'ai pas mal recherché à droite et à gauche, mais je n'ai pas réussi à adapter comme je le souhaite du code pour effectuer mes besoins. Du coup, mon faible niveau m'oblige à venir vous embêter.

Voici l'état actuel de mon fichier :

Je dispose sur ma 1ère feuille (f_creation) d'un bouton, qui fait une copie conforme d'une feuille masquée (cette feuille dispose elle même d'un bouton (appelons-le "bouton1") . Je dispose d'une autre feuille titrée "suivi".

Je souhaite que lorsque l'on appuie sur "bouton1", plusieurs cellules (non côte à côte) soient copiées, et collées dans la 1ère ligne vide de la feuille "suivi".

J'ai presque réussi en utilisant le code suivant :

With Worksheets("suivi")
    ActiveSheet.Range("O7").Copy .Cells(.Rows.Count, "A").End(xlUp)(2)
End With

et en faisant ça pour chaque cellule à copier, mais le problème c'est que ça copie la formule (ici en O7) et non la valeur.

Comment puis-je résoudre ce problème ou dois-je utiliser un autre code ?

Si besoin de précisions ou de clarté n'hésitez pas,

Merci beaucoup d'avance,

Cordialement,

Valentin

Merci de ta réponse et pour ton lien qui est effectivement intéressant.

Néanmoins j'ai essayé de bidouiller le bout de code que j'avais posté (vu qu'il fonctionne mis à part qu'il copie la formule et non la valeur, en plus il est court donc dans l'idéal ça m'arrange) en m'inspirant de ton lien avec les "PasteSpecial" mais ça ne fonctionne pas

Re,

Tu n'es peut-être pas obligé de faire un copier/coller ?

Disons que tu veux que Feuil2 cellule C1 = Feuil1 cellule D1

Dans le module de la feuille 1:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Feuil2").Range("C1").Value = Sheets("Feuil1").Range("D1").Value
End Sub

Cordialement,

26valen.xlsm (14.77 Ko)

Bonjour le forum,

Valen, je te propose d'ajouter .Value à la fin de ta formule:

With Worksheets("suivi")
    ActiveSheet.Range("O7").Copy .Cells(.Rows.Count, "A").End(xlUp).Value
End With

En fait il faut un copier/coller car la fiche crée sera supprimée à terme (plus exactement remplacée par une rotation de 10 maximum).

Du coup il faut que les valeurs soient "fixées", avec la contrainte de le faire dans la 1ère ligne vide de "suivi".

Bonjour KAK,

Merci de ton aide, je viens de tester mais j'ai en erreur : "La méthode Copy de la classe Range a échoué."

Valen,

la formule essaie le code ci-desssous.

    With Worksheets("suivi")
    ActiveSheet.Range("O7").Copy .Cells(.Rows.Count, "A").End(xlUp)(2)

    ActiceSheet.Range("O7").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

     Application.CutCopyMode = False
    End With

J'ai fait un copier coller de la cellule "O7"

KAK,

Le code fonctionne dans le sens où je n'ai pas d'erreur renvoyée, mais c'est toujours la formule qui est copiée.

EDIT : C'est bon KAK j'ai trouvé, en fait ton code fixait la valeur dans la fiche principale mais APRES avoir copié la formule dans "suivi". J'ai inversé le codé, du coup c'est bon, ton code "fixe" la valeur dans la fiche principale, puis copie la valeur dans le "suivi". Du coup problème résolu pour ce point, seule chose quand même, ça continue de conserver la casse de la cellule source ainsi que les mises en forme conditionnelles, savez vous comment régler ça ? sinon tant pis ce n'est pas hyper important non plus, c'est juste du confort visuel

Valen,

Pour la mise en forme, il faut remplacer "O7" par la cellule de destionation dans le code ci-dessous:

ActiceSheet.Range("O7").Select
Rechercher des sujets similaires à "copier valeur feuille 1ere ligne vide"