VBA copier coller en valeur

Bonjour à tous,

Un problème sans doute simple à résoudre, je veux copier coller des colonnes fixes dans un autre classeur mais les copier coller en Valeur car dans mon classeur "données" ce sont des formules

voici mon code

Worksheets("Feuil2").Range("A1").ClearContents
Application.Calculation = xlCalculationManual

Worksheets("données").Range("C1:C200").Copy Worksheets("Feuil2").Range("A1")
Worksheets("données").Range("D1:D200").Copy Worksheets("Feuil2").Range("B1")
Worksheets("données").Range("E1:E200").Copy Worksheets("Feuil2").Range("C1")
Worksheets("données").Range("F1:F200").Copy Worksheets("Feuil2").Range("D1")

Worksheets("Feuil2").Select
Range("A1:D200").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending

End Sub

Mais bien sur içi ça copie collie les formules ce qui n'est pas ce que je recherche

Merci de votre aide

Bonjour Gsolti,

Je te propose d'essayer ce code VBA (à tester) :

With Worksheets("Feuil2")
  .[A1].ClearContents: Application.Calculation = -4135
  [données!C1:C200].Copy: .[A1].PasteSpecial -4163
  [données!D1:D200].Copy: .[B1].PasteSpecial -4163
  [données!E1:E200].Copy: .[C1].PasteSpecial -4163
  [données!F1:F200].Copy: .[D1].PasteSpecial -4163
  Application.CutCopyMode = 0: .[A1:D200].Sort [A1], 1
  Application.Calculation = -4105
End With

dhany

Bonjour,

Une autre interprétation de la chose.

Sub XXX()
    With Worksheets("Feuil2")
        .Cells.ClearContents
        .Range("A1:D200").Value = Worksheets("données").Range("C1:F200").Value
        .Range("A1:D200").Sort key1:=.Cells(1), order1:=xlAscending
    End With
End Sub

Ca marche nikel dhany même si je ne comprends pas les -4135 et -4163 celà correspond à quoi ?

Merci encore

Aussi un autre probleme, ma procédure me renvoie une erreur 1004 sans indiquer de ligne en jaune. Elle fait bien ce que je veut jusqu'au tri.

Je précise que mon classeur est à la base en mode calcul manuel et que je doit donc activer le calcul sur la "feuil2" qui me sert de traitement.

Enfin avant que vous tourniez de l'oeil ^^, mes déclaration du début sont au cas ou et bien sur que je les supprimeraient par la suite (ou que je les renommerait) si j'en ai pas besoin

Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim Count As Variant
Dim debut As Variant
Dim b As Variant
Dim etat As Variant

Worksheets("Feuil2").Range("A1").ClearContents
Application.Calculation = xlCalculationManual

With Worksheets("Feuil2")
  .[A1].ClearContents: Application.Calculation = -4135
  [données!C1:C200].Copy: .[A1].PasteSpecial -4163
  [données!D1:D200].Copy: .[B1].PasteSpecial -4163
  [données!E1:E200].Copy: .[C1].PasteSpecial -4163
  [données!F1:F200].Copy: .[D1].PasteSpecial -4163
  Application.CutCopyMode = 0: .[A1:D200].Sort [A1], 1
  Application.Calculation = -4105
End With

Worksheets("Feuil2").Activate
ActiveSheet.Calculate
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending

End Sub

Merci encore

Merci Jean Eric tu viens de résoudre mon probleme

Mais pourquoi mon code ne marchait pas ?? Je pourrais ainsi progresser en comprenant mon erreur

Gsolti a écrit :

Ça marche nickel dhany même si je ne comprends pas les -4135 et -4163 cela correspond à quoi ?

  • 4135 : idem que xlCalculationManual
  • 4105 : idem que xlCalculationAutomatic
  • 4163 : idem que xlPasteValues

dhany

Rechercher des sujets similaires à "vba copier coller valeur"