Copier coller valeur sans les formules

Bonjour à tous.

Est-il possible de réécrire plus simplement ce code. Pour le moment,il marche, mais je suppose qu'on peut faire simple. Si possible, je suis preneur.

Private SA As Worksheet
Private CA As Worksheet
Private QA As Worksheet
Private TA As Worksheet
Sub Bilan_Tr1()
Application.ScreenUpdating = False
    Set SA = Worksheets("Z1")
    Set CA = Worksheets("Z2")
    Set QA = Worksheets("Z3")
    Set TA = Worksheets("Z4")
    Set BL = Worksheets("BILAN")

     ''ZONE 1''''
    SA.Range("B3").Copy
    BL.Range("B6").PasteSpecial Paste:=xlPasteValues
    SA.Range("E3").Copy
    BL.Range("F7").PasteSpecial Paste:=xlPasteValues
    SA.Range("C4:E4").Copy
    BL.Range("G7").PasteSpecial Paste:=xlPasteValues
    SA.Range("H3").Copy
    BL.Range("N7").PasteSpecial Paste:=xlPasteValues
    SA.Range("F4:H4").Copy
    BL.Range("O7").PasteSpecial Paste:=xlPasteValues
    SA.Range("I4").Copy
    BL.Range("V7").PasteSpecial Paste:=xlPasteValues
    SA.Range("C7:N7").Copy
    BL.Range("C6").PasteSpecial Paste:=xlPasteValues
    SA.Range("C10:N10").Copy
    BL.Range("O6").PasteSpecial Paste:=xlPasteValues

      ''ZONE 2''''
    CA.Range("B3").Copy
    BL.Range("B8").PasteSpecial Paste:=xlPasteValues
    CA.Range("E3").Copy
    BL.Range("F9").PasteSpecial Paste:=xlPasteValues
    CA.Range("C4:E4").Copy
    BL.Range("G9").PasteSpecial Paste:=xlPasteValues
    CA.Range("H3").Copy
    BL.Range("N9").PasteSpecial Paste:=xlPasteValues
    CA.Range("F4:H4").Copy
    BL.Range("O9").PasteSpecial Paste:=xlPasteValues
    CA.Range("I4").Copy
    BL.Range("V9").PasteSpecial Paste:=xlPasteValues
    CA.Range("C7:N7").Copy
    BL.Range("C8").PasteSpecial Paste:=xlPasteValues
    CA.Range("C10:N10").Copy
    BL.Range("O8").PasteSpecial Paste:=xlPasteValues

      ''ZONE 3''''
    QA.Range("B3").Copy
    BL.Range("B10").PasteSpecial Paste:=xlPasteValues
    QA.Range("E3").Copy
    BL.Range("F11").PasteSpecial Paste:=xlPasteValues
    QA.Range("C4:E4").Copy
    BL.Range("G11").PasteSpecial Paste:=xlPasteValues
    QA.Range("H3").Copy
    BL.Range("N11").PasteSpecial Paste:=xlPasteValues
    QA.Range("F4:H4").Copy
    BL.Range("O11").PasteSpecial Paste:=xlPasteValues
    QA.Range("I4").Copy
    BL.Range("V11").PasteSpecial Paste:=xlPasteValues
    QA.Range("C7:N7").Copy
    BL.Range("C10").PasteSpecial Paste:=xlPasteValues
    QA.Range("C10:N10").Copy
    BL.Range("O10").PasteSpecial Paste:=xlPasteValues
End Sub

NB: Il est à noter que j'ai une dizaine de feuilles dans lesquelles je souhaite récupérer les valeur et les coller sur ma feuille (BILAN).

cordialement

Bonjour SOME,

On peut déjà faire une première optimisation

Sub Bilan_Tr1()
  Dim ShtS As Worksheet
  Dim Bl As Worksheet
  ' Définir la feuille BILAN
  Set Bl = Worksheets("BILAN")
   ''ZONE 1''''
  ' Définir la feuille source
  Set ShtS = Worksheets("Z1")
  ' Inscrire directement les valeurs
  Bl.Range("B6").Value = Shts.Range("B3").Value
  Bl.Range("F7").Value = Shts.Range("E3").Value
  Bl.Range("G7").Resize(0, 3).Value = Shts.Range("C4:E4").Value
  ' Etc... à modifier

    ''ZONE 2''''
  ' Définir la feuille source
  Set ShtS = Worksheets("Z2")
  ' Inscrire les valeurs
  Bl.Range("B8").Value = Shts.Range("B3").Value
  Bl.Range("F9").Value = Shts.Range("E3").Value
  ' Etc... à modifier

    ''ZONE 3''''
  ' Définir la feuille source
  Set ShtS = Worksheets("Z3")
  ' Inscrire les valeurs
  Bl.Range("B10").Value = Shts.Range("B3").Value
  Bl.Range("F11").Value = Shts.Range("E3").Value
  ' Etc ...
End Sub

A+

je join un fichier test

14some-test.xlsm (32.40 Ko)

Re,

Voir avec le code donné et à compléter

A+

Bsr BrunoM.

N'est il pas possible de faire une boucle étant donné que les données à récupérer ont le même emplacement dans les quatre feuilles ?

Sinon ce que vous avez proposé marche bien.

Je reviens vers vous.

le code adapté dans mon application originale, signalé une erreur d'exécution 91

Erreur d'exécution '91':
"variable objet ou variable de bloc with non définie."

Bonjour,

Comment est le code adapté ?
Quelle ligne est surlignée ?

Soyez plus explicite dans vos demandes SVP

A+

Je suis revenu sur le fichier joint que j'ai posté pour procéder à l'exécution du code en appuyant sur le le bouton F8 du clavier. Le code se surligne au niveau de

BL.Range("B6").Value = SA.Range ("B3"). Value 

et Quand je pose le curseur sur cette ligne, il est écrit ceci :

BL.Range("B6").Value = <variable objet ou variable de bloc with non définie>

Re,

Ecoutez, je pense qu'il n'est pas compliqué de comprendre le code que j'ai donné et de remplacer celui existant

Pour ce message, vous avez certainement oubliez les premières lignes, puisque "BL" est tout en majuscule, alors que...

  Dim Bl As Worksheet
  ' Définir la feuille BILAN
  Set Bl = Worksheets("BILAN")

A+

Ré,

Franchement, j'ai bien vérifié. J'ai copié et coller votre code sur le fichier test aussi mais, il s'arrête toujours

Bl.Range("B6").Value = SA.Range ("B3"). Value

j'ai corrigé aussi les lettre(Bl),

j'ai défini la feuille ("BILAN")

mais cela ne marche toujours pas.

Re,

Merci de joindre votre fichier SVP

A+

Ré,

Fichier joint

Re,

Je viens de voir ma coquille désolé

Je définit une feuille

  ' Définir la feuille source
  Set ShtS = Worksheets("Z1")

Vous auriez pu vous demander à quoi elle servait

Ceci dit avec votre fichier test, cela m'a permis d'en trouver une autre avec Resize()

Sub Bilan_Tri()
  Dim ShtS As Worksheet
  Dim BL As Worksheet

  ' Définir la feuille BILAN
  Set BL = Worksheets("BILAN")

   ''ZONE 1''''
  Set ShtS = Worksheets("Z1")
  BL.Range("B6").Value = ShtS.Range("B3").Value
  BL.Range("F7").Value = ShtS.Range("E3").Value
  BL.Range("G7").Resize(1, 3).Value = ShtS.Range("C4:E4").Value
  ' Etc...

    ''ZONE 2''''
  Set ShtS = Worksheets("Z2")
  BL.Range("B8").Value = ShtS.Range("B3").Value
  BL.Range("F9").Value = ShtS.Range("E3").Value
  ' Etc...

    ''ZONE 3''''
  Set ShtS = Worksheets("Z3")
  BL.Range("B10").Value = ShtS.Range("B3").Value
  BL.Range("F11").Value = ShtS.Range("E3").Value
  ' Etc...
End Sub

A+

Ça marche mais il y'a encore un petit soucis. Toutes les données ne sont pas copiées sur ma feuille ("BILAN).

Au niveau de

BL.Range("C6"). Value = ShtS.Range ("C7:N7")
BL.Range("O6"). Value = ShtS.Range ("C10:N10")

les valeurs ne s'importent pas. Et quand je mets le curseur au niveau de

BL.Range("C6"). 
BL.Range("O6"). 

on met = vide.

Je ne comprends pas pourquoi ?

Re,

Pourquoi mettre un espace entre Range(). et Value !?

Il va falloir vous former à VBA Value est une propriété de l'objet Range donc tout se touche

De plus lorsqu'il s'agit du contenue de plusieurs cellules, il faut un Resize() comme dans mon exemple

A+

Ok. Merci bien pour votre aide.🙏🙏🙏

TOUT MARCHE CORRECTEMENT

Le problème était le (Resize) que j'oubliais.

Je suis un débutant en VBA.

By. Cordialement

Re,

Nous l'avons tous été "débutant"

Mais ce langage m'a plus tout de suite, je me suis donc autoformé (peut-être déformé) tout de suite

Certes cela demande du courage, car c'est après les journées normales de boulot et souvent même le week-end

On a rien sans rien

Rechercher des sujets similaires à "copier coller valeur formules"