XL 2016 VBA Recopie de valeurs de cellules d'une feuille vers une autre à la suite

safranien

XLDnaute Occasionnel
Bonjour à tous

je sollicite votre aide pour 2 points bloquants. Je cherche à recopier les valeurs de cellules non contiguës d'une feuille à une autre. Je n'arrive pas à sélectionner lesdites cellules non contiguës aussi je suis obligé dans un endroit de la feuille source d'aller reprendre le contenu de ces cellules pour les avoir côte à côte et j'utilise ensuite cette plage dans mon code. Si j'écris Worksheets(Source).Range("B3,C3,E6,EZ4,EZ5").Copy ça ne marche pas.
Ensuite, j'arrive à faire une copie de cette plage vers une autre feuille mais pas directement un copier / coller valeur.

Ceci étant, une fois la copie faite, je passe à une autre liste via menu déroulant, j'actualise les données et je relance le code pour recopier les données vers l'autre feuille à la suite des précédentes copiées.

Je précise que mon fichier est volontairement en lecture seule et qu'il s'actualise seulement lorsque je clique sur un bouton.

J'espère que vous pourrez m'aider à améliorer tout ça.

Bonne soirée

VB:
Sub Recopie()


Dim Source As String
Dim Cible As String
Dim Derlig As Long
Cible = "Recopie"
Source = "Graphs"
Derlig = Worksheets(Cible).Range("A" & Rows.Count).End(xlUp).Row + 1
'Copie des valeurs

With Worksheets(Cible)

Worksheets(Source).Range("FZ1:GF1").Copy .Range("A" & Derlig)
.Range("A2:G600").Value = .Range("A2:G600").Value


End With

End Sub
 

Robert

XLDnaute Barbatruc
Bonsoir Safranien, bonsoir le forum,

je ne comprends pas bien le rapport entre ton énoncé et ton code...
Peut-être comme ça :

VB:
Sub Recopie()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OC As Worksheet 'déclare la variable OC (Onglet Cible)
Dim LI As Long 'déclare la variable LI (LIgne)
Dim TB(1 To 5) As Variant 'déclare la variable TB (TaBleau)

Set OS = Worksheets("Graphs") 'définit l'onglet source OS
Set OC = Worksheets("Recopie") 'définit l'onglet cible OC
LI = OC.Range("A" & Rows.Count).End(xlUp).Row + 1 'définit la première ligne vide LI de la colonne A de l'onglet cible OC
TB(1) = OS.Range("B3").Value 'définit TB(1)
TB(2) = OS.Range("C3").Value 'définit TB(2)
TB(3) = OS.Range("E6").Value 'définit TB(3)
TB(4) = OS.Range("EZ4").Value 'définit TB(4)
TB(5) = OS.Range("EZ5").Value 'définit TB(5)
OC.Cells(LI, "A").Resize(1, 5) = TB 'renvoie le tableau TB dans la cellule redimensionnée ligne LI colonne A
End Sub
 

safranien

XLDnaute Occasionnel
Bonsoir Robert

merci beaucoup pour ta réponse rapide rapide, super ! Désolé de ne pas avoir été assez clair dans mon énoncé. En tout cas, ton code semble fonctionner parfaitement. Je ferai plus d'essais demain car j'ai d'autres idées en tête.

Je comprends le code dans son ensemble mais suis vraiment incapable de pondre ça moi-même snif

Il n'y a que le 1 de .Resize(1, 5) que je n'arrive pas à comprendre. Que signifie-t-il stp ?

Merci encore et bonne soirée.
 

Robert

XLDnaute Barbatruc
Re,

La cellule est redimensionnée de (X lignes, Y colonnes), Resize (1, 5) signifie que l'on prend la cellule de départ et on la redimensionne à 1 ligne et 5 colonnes. Par exemple Range("A1").Resize(1, 5) équivaut à Range("A1 : D1")... Range("A1").Resize(2, 5) équivaut à Range("A1 : D2"), (espaces à cause des émoticônes)
 

Discussions similaires

Haut Bas