XL 2010 Copie/Coller avec vba

kadelmalin

XLDnaute Occasionnel
Bonjour le forum,
Comment faire un copie/coller avec vba, j'ai essayé toutes les options Type Paste ça me revoie #REF . Par exemple dans le classeur ci-joint je voudrais copier la plage G1:G21 dans la feuille 2
 

Pièces jointes

  • ClasTst.xlsx
    11.2 KB · Affichages: 18

Lone-wolf

XLDnaute Barbatruc
Bonsoir kadelmalin,

avec un fichier en xlsx c'est impossible d'exécuter une macro. Sauvegarde-le en xls ou xlsm.

Si c'est juste cette plage, alors : Feuil1.Range("g1:g21").Copy Feuil2.Range("g1").

Pour une copie à la suite: Feuil1.Range("g1:g21").Copy Feuil2.Range("g" & Rows.Count).End(xlUp)(2).
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Kadel,

Tu as écrit : « je voulais éviter la boucle »

Je te propose le fichier ci-dessous ; c'est le mieux que j'ai réussi
à faire sans boucle, avec des formules obtenues par liaison.

Même utilisation : Ctrl e

soan
 

Pièces jointes

  • ClasTst.xlsm
    19.7 KB · Affichages: 4

soan

XLDnaute Barbatruc
Inactif
Re,

Tu as écrit : « Ce sont les formules qui doivent être copiées et non les valeurs. »

Je n'ai pas compris, car la macro de copier/coller avec liaison
mets bien des formules et non des valeurs :

En A1 : =Feuil1!G1 ➯ 1S
En A2 : =Feuil1!G2 ➯ 2S
En A3 : =Feuil1!G3 ➯ 3S
...
En A22 : =Feuil1!G22 ➯ 22S

Cette copie avec liaison ne marche pas pour mettre la formule initiale =E1&A1
Donc tu fais bien de choisir la solution avec la boucle. ;)


soan
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Kadel,

Tu as écrit ton post juste avant que j'allais mettre cet ajout :

Je mets quand même ici mon précédent code VBA, en tant qu'exemple
d'un copier / coller avec liaison :
VB:
Option Explicit

Sub CpyData()
  Dim dlg&: Application.ScreenUpdating = 0: Worksheets("Feuil2").Select
  With Worksheets("Feuil1")
    dlg = .Cells(Rows.Count, 7).End(3).Row: If dlg = 1 And .[G1] = "" Then Exit Sub
    .Range("G1:G" & dlg).Copy: [A1].Select: ActiveSheet.Paste , True
    Application.CutCopyMode = 0: Selection.Resize(1).Select
  End With
End Sub
Pour ActiveSheet.Paste , True je rappelle que lorsque le paramètre Link (True)
est spécifié, ce n'est pas possible de mettre le paramètre Destination (ici A1).

Il faut donc sélectionner la cellule A1 avant le ActiveSheet.Paste !

----------------------------------------------------------------------------------------------

Puisque tu en as fini avec ce problème, je te laisse « Marquer comme solution »,
sur le post qui contient le fichier du code VBA avec boucle ; clique sur ce lien :



C'est bizarre : le lien va sur le post #5, ce qui est correct, mais l'image du lien
ne correspond pas du tout ! moi, sur mon PC, j'ai cette image :

Image.JPG

soan
 
Dernière édition:

kadelmalin

XLDnaute Occasionnel
Bonjour Soan,
J'ai finalement trouvé d'où venait l'erreur. La colonne à copier se trouvait à l'intérieur d'une plage qui elle aussi était sujette à copier. La plage était ainsi : A100:S100 et la cellule O100. j'ai donc coupé en 3 tranches soit : A100:N100 puis O100 et P100:S100 et ça a marché !
 

Discussions similaires

Réponses
15
Affichages
523
Réponses
56
Affichages
1 K

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia