VBA : Copier valeur de cellules dans une autre feuilles

Résolu/Fermé
Max49 - 24 mars 2014 à 10:39
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 24 mars 2014 à 14:46
Bonjour,

Je débute depuis peut en VBA et j'essaye
Je souhaiterais copier les valeurs d'une range dans une autre range mais dans une autre feuille. J'ai trouvé plusieurs solutions pour répondre à mon problème, j'ai tout d'abord utiliser cette trame pour faire mon copier coller :

Worksheets("Hebdo").Activate
Range(Cells(lig1, col), Cells(lig - 1, col + 2)).Select
Range(Cells(lig1, col), Cells(lig - 1, col + 2)).Copy

ActiveWorkbook.Sheets("GR1").Activate
ActiveWorkbook.Sheets("GR1").Range(Cells(5, 1), Cells(14, 3)).Select
ActiveWorkbook.Sheets("GR1").Paste

Cette trame me convenait parfaitement jusqu'à ce que je modifie la mise en forme de mon tableau excel de manière à imprimer mes tableaux remplis automatiquement. Je me retrouve dans à copier des valeurs de cellules taille 22 et à les coller dans des cellules qui sont censés être écrite taille 11.
Pour cela j'ai lu sur ce forum qu'il est plus simple pour effectuer cette action de copier coller en ne copiant que les valeurs et non la cellule entière en utilisant la manière suivante :

Range("A1:C5").value = Range("D6:G11").value

Appliquer à mon problème cela donne ceci :

Sheets("GR1").Range("A5:C14").Value = Sheets("Hebdo").Range(Cells(lig1, col), Cells(lig - 1, col + 2)).Value

lig et col étant 2 variables integer qui sont préalablement définis.

Cependant ce code ne fonctionne pas, cela me met un message d'erreur.

J'ai lu également qu'il existait une méthode avec .PasteSpecial mais je ne sais pas m'en servir.

Est-ce que quelqu'un aurait une solution

Cordialement

Max

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 24/03/2014 à 11:39
Bonjour,
apparemment tes surfaces ne sont pas identiques
A5:C14 comporte 2 lignes
donc
Sheets("GR1").Range("A5:C14") = Sheets("Hebdo").Range(Cells(lig, col), Cells(lig +2, col + 2)).Value
ou
Range(Cells(lig-1, col), Cells(lig +1, col + 2)).Value

remarque
tu avais 3 variables Lig1, Lig et col...
il n'est pas néessaire d'indiquer .value das les cellules cibles



Michel
0