Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

macro pour recopier sur chaque feuille à partir de la dernière l ig

6 réponses
Avatar
Françoise
bonsoir à tous,

je veux faire une macro qui puisse recopier une série de cellules d'un
fichier vers chaque feuille (chaune porte un nom différent) d'un autre
fichier à partir de la dernière ligne de celle-ci

quelqu'un peut il m'aider à dire ce début de macro ?

d'avance merci pour votre aide

6 réponses

Avatar
francois.forcet
Salut Françoise
Soit le Classeur1.xls Feuil1 les données à recopier (plage A1 à C5)
dans les Feuilles du Classeur2.xls
Le code :

For i = 1 To Workbooks("Classeur2.xls").Sheets.Count
Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A1", "C5").Copy
Workbooks("Classeur2.xls").Sheets(i).Range("A1")
Next

A actualiser :

Classeur1.xls du nom du classeur des données source
Feuil1 du nom de l'onglet source
Range ("A1", "C5") de la plage des données à recopier
Classeur2.xls du nom du classeur de destination
Range("A1") de la première cellule de recopie dans l'onglet de
destination

Celà devrait te convenir

Dis moi !!!!
Avatar
francois.forcet
Rebonjours Françoise

Si tu souhaites réaliser la recopie à partir de la 1° ligne vide de
chaque feuille ce code modifié fera l'affaire :

For i = 1 To Workbooks("Classeur2.xls").Sheets.Count
Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A1", "C5").Copy
Workbooks("Classeur2.xls").Sheets(i).Range("A" &
Workbooks("Classeur2.xls").Sheets(i).Range("A1").SpecialCells(xlLastCell).Of fset(1,
0).Row)
Next
Attention les lignes :

Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A1", "C5").Copy
Workbooks("Classeur2.xls").Sheets(i).Range("A" &
Workbooks("Classeur2.xls").Sheets(i).Range("A1").SpecialCells(xlLastCell).Of fset(1,
0).Row)

doivent être mis bout à bout et non l'une en dessous de l'autre

Je ne peux pas compte tenu de leur longueur les présenter différement

Fais des essais et dis moi !!!!
Avatar
Françoise
Bonjour François,

merci de ton aide, c'est presque bon !

En fait j'ai fait un test sur une zone à copier avec la macro suivante issue
de ton exemple :
=== Sub copie_ref()
'
For i = 1 To Workbooks("CODE_BARRE_EAN13_TRAVAIL(1).xls").Sheets.Count
Workbooks("reference 13 mai.xls").Sheets("REFERENTIEL").Range("C453",
"C547").Copy
Workbooks("CODE_BARRE_EAN13_TRAVAIL(1).xls").Sheets(i).Range("A414").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:úlse, Transpose:úlse
Next
'
End Sub
==== Cela copie bien sur ma première feuille, mais j'ai un blocage pour accéder à
la suivante dont voici le rapport d'erreur de VBA lorsque je mets un espion
sur la ligne :

dans le détail de Sheets, à la ligne "visible" il met :
" impossible de lire la propriété Visible de Variant "

j'ai en tout 27 feuilles portant chacune un nom différent
Vois tu où est le problème ?
d'avance merci de ton aide


Salut Françoise
Soit le Classeur1.xls Feuil1 les données à recopier (plage A1 à C5)
dans les Feuilles du Classeur2.xls
Le code :

For i = 1 To Workbooks("Classeur2.xls").Sheets.Count
Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A1", "C5").Copy
Workbooks("Classeur2.xls").Sheets(i).Range("A1")
Next

A actualiser :

Classeur1.xls du nom du classeur des données source
Feuil1 du nom de l'onglet source
Range ("A1", "C5") de la plage des données à recopier
Classeur2.xls du nom du classeur de destination
Range("A1") de la première cellule de recopie dans l'onglet de
destination

Celà devrait te convenir

Dis moi !!!!



Avatar
francois.forcet
Rebonjour Françoise

As tu des onglets cachés dans le fichier de recopie ???
Tu peux faire des essais avec un classeur vierge
Recopier 1 à 1 tes onglets relancer la macro afin de cerner ceux qui
posent un PB
Et me donner le résultat

Tu peux aussi me transmettre ton document par l'intermédiaire de ce
site :

http://www.cijoint.fr/index.php

Donnes moi le lien pour le récupérer afin que je l'étudie

Dans l'attente de te lire
Avatar
francois.forcet
Rebonjour Françoise

En relisant ton code s'inspirant du mien je viens de m'apercevoir que
tu n'as pas eu la même approche
Dans ta démarche tu as mal utilisé cette instruction :


Workbooks("CODE_BARRE_EAN13_TRAVAIL(1).xls").Sheets(i).Range("A414").Select

Il faut mettre ainsi :

Workbooks("CODE_BARRE_EAN13_TRAVAIL(1).xls").Sheets(i).Select
Range("A414").Select

Mais je te propose plutôt de mettre à la place de :

Workbooks("CODE_BARRE_EAN13_TRAVAIL(1).xls").Sheets(i).Range("A414").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats,
Operation:= _
xlNone, SkipBlanks:úlse, Transpose:úlse

ceci :

Workbooks("CODE_BARRE_EAN13_TRAVAIL(1).xls").Sheets(i).Range("A414").PasteSp ecial
Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:úlse, Transpose:úlse

Celà devrait mieux fonctionner

Dis moi !!!!
Avatar
Françoise
Merci François,

Ca marche super bien !
j'essaierai la version avec "dernière ligne" plus tard, car je dois passer à
d'autres activités, et n'ai pas le temps de le faire maintenant

en attendant encore merci pour ton aide précieuse
@+


Rebonjour Françoise

En relisant ton code s'inspirant du mien je viens de m'apercevoir que
tu n'as pas eu la même approche
Dans ta démarche tu as mal utilisé cette instruction :


Workbooks("CODE_BARRE_EAN13_TRAVAIL(1).xls").Sheets(i).Range("A414").Select

Il faut mettre ainsi :

Workbooks("CODE_BARRE_EAN13_TRAVAIL(1).xls").Sheets(i).Select
Range("A414").Select

Mais je te propose plutôt de mettre à la place de :

Workbooks("CODE_BARRE_EAN13_TRAVAIL(1).xls").Sheets(i).Range("A414").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats,
Operation:= _
xlNone, SkipBlanks:úlse, Transpose:úlse

ceci :

Workbooks("CODE_BARRE_EAN13_TRAVAIL(1).xls").Sheets(i).Range("A414").PasteSpecial
Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:úlse, Transpose:úlse

Celà devrait mieux fonctionner

Dis moi !!!!