Copier/Coller plusieurs classeurs via VBA [Résolu/Fermé]

Signaler
Messages postés
143
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
5 septembre 2020
-
Messages postés
16242
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 octobre 2020
-
Bonjour,

Une question un peu compliquée. J'ai 4 classeurs parfaitement identiques nommés classeur1, classeur2, classeur3, classeur4. Dans mon 5ème classeur, dans ma feuille "Synthèse Globale", j'aimerais pouvoir développer une macro qui permettrai de copier/Coller les colonnes de C à E contenu dans l'onglet "Saisie" de chaque classeur. J'aimerais que les copier/Coller se fassent les uns à la suite des autres, par exemple la macro commence à copier/coller les colonnes de C à E de l'onglet "Saisie" du classeur1, puis quand on arrive à la ligne où les valeurs contenues dans ces colonnes sont nulles (ou plutôt cellule vide), la macro lance le copier/coller des colonnes C à E de l'onglet "Saisie" du classeur2... et ainsi de suite jusqu'au classeur4.
J'espère avoir été assez claire dans mes explications. Je ne sais pas du tout si une telle macro peut être développée.

Merci beaucoup pour votre aide,

5 réponses

Messages postés
16242
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 octobre 2020
3 048
Bonjour,
Où se trouvent les 4 classeurs et le 5°: dans le m^me dossier ?
et sont les seuls dans le ou les dossiers concernés?

Edit 14:03h
suffixes: xls, xlsx, xlm, xlsm des 4 ?
Michel
Messages postés
143
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
5 septembre 2020

RE,
Les 5 classeurs se trouvent dans le même dossier nommé "Suivi des temps CIR" ils sont tous au format xlsm.

Merci
Messages postés
143
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
5 septembre 2020

RE,
Les 5 classeurs se trouvent dans le même dossier nommé "Suivi des temps CIR" ils sont tous au format xlsm.

Merci
Messages postés
16242
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 octobre 2020
3 048
Re
ci dessous un code non testé, donc...
Option Explicit
'------
Sub compiler_CaE()
Dim Chemin As String, Fich As String
Dim Derlig As Integer, Ligvide As Long, Tampon

'fige le défilement de l'écran
Application.ScreenUpdating = False

Chemin = ThisWorkbook.Path
ChDir Chemin
Fich = Dir("*.xlsm")
While Fich <> "" And Fich <> "classeur5.xlsm"
Workbooks.Open Filename:=Fich 'ouvre le classeur
With Sheets("saisie")
Derlig = .Columns("C:E").Find(what:="*", searchdirection:=xlPrevious).Row
Tampon = .Range("C1:E" & Derlig) 'mémorise les données à compiler dans classeur5
End With
Workbooks(Fich).Close

With ThisWorkbook.Sheets("Synthèse Globale")
Ligvide = .Columns("C:E").Find(what:="", after:=Range("C:" & .Cells.Rows.Count)).Row
Cells(Ligvid, "C").Resize(UBound(Tampon), 3) = Tampon
End With

'affecte le fichier suivant (utilisation du joker " * " utilisé pour la def du 1° fichier)
Fich = Dir
Wend

Sheets("Synthèse Globale").Activate
MsgBox "compilation terminée"
End Sub


pour bien faire pourrais tu mettre en pièce jointe un des classeurs source et me donner les nom exact du classeur5 et des classeurs source
je restitue actuellement dans les colonnes C-E du classeur 5
dans l'attente, d'avance merci; Je repasse dans 1h - 1h30

pour mettre en Pj
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le lien proposé dans le message de réponse
Dans l'attente

Michel
Messages postés
143
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
5 septembre 2020

Voici le lien demandé https://www.cjoint.com/?0EDpgKcHZbD
Mes classeurs sources s'appellent respectivement: classeur1.xlsm, classeur2.xlsm, classeur3.xlsm, et classeur4.xlsm. Mon classeur destinataire s'appelle "Base de données.xlsm"
Merci
Messages postés
16242
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 octobre 2020
3 048
Messages postés
143
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
5 septembre 2020
>
Messages postés
16242
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 octobre 2020

Super, ça marche nickel! Merci beaucoup !
Messages postés
143
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
5 septembre 2020
>
Messages postés
16242
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 octobre 2020

La macro marche très bien lorsque je travail sur mon bureau, par contre lorsque je copie/colle le dossier sur le réseau ça ne marche plus, y a t ' il une raison particulière ?
Messages postés
16242
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 octobre 2020
3 048
Je ne suis pas en réseau donc...
regarde quand m^me si le classeur en réseau a les macros activées ou si l'administrateur n'a pas bloqué les macros et/ou scripts vb par sécurité
Messages postés
143
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
5 septembre 2020
>
Messages postés
16242
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 octobre 2020

Non toutes les macros sont bien activées. Ca semble venir du chemin, la macro n'ouvre pas les classeurs sources, il n'y a aucun message d'erreur qui s'affiche, mais elle ne recopie rien.
Messages postés
16242
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 octobre 2020
3 048
bonjour
écris le chemin vers le serveur au lieu de thisworkbook.path...
mais c'est qu'une idée car étant en monoposte, je ne te suis d'aucune utilité--> si l'idée n'est pas concluante, relance une autre discussion sur ta préoccupation ou vois ça avec l'administrateur du serveur...
Messages postés
15
Date d'inscription
jeudi 28 mai 2015
Statut
Membre
Dernière intervention
5 novembre 2015

Tu dois pouvoir t'en sortir avec ce type d'instruction.
pour l'ouverture du classeur :
Workbooks.Open Filename:=ThisWorkbook.Path & "\nom_du_classeur"
la fermeture avec l'instruction workbooks("nom_du_classeur").close False

et ensuite pour les copier coller workbook("nom_du_classeur").sheets("nom_de_l'onglet").range(column(3), column(5)).copy

et un .paste derrière à l'endroit ou tu le veux.
Messages postés
143
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
5 septembre 2020

D'accord merci, mais j'ai oublié de préciser que je suis vraiment très débutante... Est ce que vous pourriez me détailler un peu plus tout ca ? j'ai du mal à comprendre comment faire pour que les copier/coller se fassent les uns à la suite des autres.
Merci