Copier une plage de cellule ( range) sur un autre fichier excel [Fermé]

Signaler
Messages postés
8
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
20 septembre 2013
-
Messages postés
319
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
27 mars 2020
-
Bonjour je m'adresse à vous les spécialiste ou amateur du visual basic
j'ai un petit problème, j'ai 11 fichier excel chacun contient plusieur feuille mais j'utilise qu'une seul feuille par fichier
je veux avoir un nouveau fichier excel qui regroupe une plage de cellule de chaque fichier sur un seul tableau, mais j'arrive pas à copier la plage de chaque fichier pour la coller dans le fichier d'arrivée, j'ai essayé plusieurs code mais comme je suis débutant, j'arrive pas à le faire.
j'ai juste réussi à faire avec plusieurs feuille d'un seul fichier et à coller les plages de chaque feuilles sur un tableau que j'ai crée sur une autre feuille du méme fichier

si quelqu'un à déjà eu comme ce problème et il sait comment le résourdre merci de m'aider :)

Cordialement

11 réponses

Messages postés
16261
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
25 octobre 2020
3 051
Re,
Pourquoi Pastespecial ?
Si tu ne recopies que des données, ci dessous un principe à adapter

Sub Main()
Application.ScreenUpdating = False
fichier = Array("AA", "BB", "CC", "DD")
zone = Array("A3:A78", "B3:B78", "C3:C78", "D3:D78")
For cptr = 0 To 3
copier fichier(cptr), zone(cptr)
Next
End Sub

Sub copier(classeur, plage)
ThisWorkbook.Sheets(1).Range(plage) = Workbooks(classeur & ".xls").Sheets("Manufacturing").Range("A1:A82").Value
End Sub


Il y a beaucoup mieux et rapide, mais comme tu ne veux pas répondre aux questions ni communiquer un classeur source , on va en rester là :o)
en espérant quand m^me que ça marche(travail à l'aveugle)...

Michel
5
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
16261
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
25 octobre 2020
3 051
Bonjour,

Il faudrait que tu nous en dise +

Ou sont tes 11 fichiers source (chemin) ?
quel est le nom de la feuille contenant les plages à copier ?
les plages ont elles une structure identique et un nombre de lignes identique ?
quelle est la version Excel ?

le mieux serait de nous fournir un exemplaire d'une source
pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse


Messages postés
319
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
27 mars 2020
14
Bonjour

As-tu essaie à contourner le problème
en copiant tes différentes feuilles dans un seul classeur, et après avoir regroupées tes données , les supprimer?

Puisse que tu sais le faire dans un casseur.

Iama
Messages postés
8
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
20 septembre 2013

Je te remercie pour ta réponse.
je t'envoie le code c'est mieux à mon avis.
j'ai trouvé la solution tout à l'heure, la je cherche une façon de le faciliter avec une boucle mais je sais pas le faire.

pour les lignes ils sont identiques pour les 11 fichiers à chaque fois, par contre sa peut changer si je travaille avec d'autres 11 fichiers tout dépend de la nomenclature du produit.

Mon code contient 11 fonction à chaque fois je dois changer la plage ou je dois coller les données et aussi le nom du fichier ou je fais le copier des plages de données.


Sub CopierColler2()
With Workbooks("AA.xls").Worksheets("Manufacturing").Range("A1:A82").Copy
End With
Range("E1:E82").PasteSpecial
End Sub
______________________________________________________________
Sub CopierColler3()
With Workbooks("AT.xls").Worksheets("Manufacturing").Range("A1:A82").Copy
End With
Range("F1:F82").PasteSpecial
End Sub
______________________________________________________________
Sub CopierColler4()
With Workbooks("ED.xls").Worksheets("Manufacturing").Range("A1:A82").Copy
End With
Range("G1:G82").PasteSpecial
End Sub
______________________________________________________________


je t'ai mi que les 3 premières fonction parce que c'est long pour les 11.

Merci

Cordialement
Messages postés
8
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
20 septembre 2013

c'est pas question que je veux pas communiquer les fichiers c'est juste long à faire sa 11 fois, je t'envoie sa alors et merci :)
Messages postés
8
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
20 septembre 2013

vérifie stp si ta recu les lfichiers
Messages postés
16261
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
25 octobre 2020
3 051
as tu regardé le principe que je t'ai fourni pour éviter de créer tes 11 macros?

Michel
Messages postés
8
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
20 septembre 2013

non pas encore ton code est logique mais sur mon fichier par exemple AA comment je fais pour sélectionner la feuille manufacturing parceque sur ton code ta choisi les fichiers que je vais utiliser mais pas les feuilles tu as directement sélectioné les plages, tu vois ce que je veux dire ?
Messages postés
16261
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
25 octobre 2020
3 051
non
Messages postés
8
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
20 septembre 2013

je t'ai envoyé les fichiers oar exemple quand tu ouvre le fichier excel AA tu va voir qu'il contient plusieurs feuilles et moi j'en ai besoin que de la 2 feuille manufacturing donc comment je fais pour copier la plage de données que je veux sur cette feuille et pas dans les autres
et c'est pareil pour tt les autres fichiers.
Messages postés
16261
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
25 octobre 2020
3 051
Lorsque tu écris

With Workbooks("AA.xls").Worksheets("Manufacturing").Range("A1:A82").Copy
End With
Range("E1:E82").PasteSpecial

cela veut dire que tu copies la plage A1:A82 de la feuille "manufacturing" du fichier AA dans E1:E82 de la feuille active du classeur qui regroupe les données des 11 fichiers ?

si oui, c'est ce que fait la macro paramétrée qui t'évite d'écrire les 11 macos
Sub copier(classeur, plage)

mais , bien sûr, il faut que les classeurs AA, AT.... soient ouverts , chose que je ne peux pas savoir!!!
Michel
Messages postés
8
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
20 septembre 2013

et le 1 code que tu as mis il sert à quoi enfaîte ?
Sub Main()
Application.ScreenUpdating = False
fichier = Array("AA", "BB", "CC", "DD")
zone = Array("A3:A78", "B3:B78", "C3:C78", "D3:D78")
For cptr = 0 To 3
copier fichier(cptr), zone(cptr)
Next
End Sub
Messages postés
16261
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
25 octobre 2020
3 051
Réflèchis un peu!

ce code va incrémenter successivement les noms des classeurs source et la plage de destinations
et il appelle la macro paramétrée qui va effectuer la recopie

fais une maquette en utilisant le pas à pas (touche F8) et tu comprendras

Bon WE
Messages postés
8
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
20 septembre 2013

ton code coince à next ....