copier des données entre plusieurs classeurs

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

superbog

XLDnaute Occasionnel
Bonjour,

Je souhaite relier des classeurs excel entre eux de la façon suivante:

j'ai trois classeurs VM.xlsx, BB.xlsx, EP.xlsx qui sont sur le même modèle de base (seules les données sont différentes):

id date titre précision durée

ces fichiers sont mis à jour régulièrement.

je souhaiterai les regrouper automatiquement dans un 4ème classeur TPglobal.xlsx avec le même modèle de base (id, date, titre, précision, durée).

Mais je souhaite pouvoir faire ça automatiquement ou via un bouton macro de sorte que chaque nouvelle ligne entrée dans l'un des trois fichiers d'origine vienne se placer dans la première ligne vide disponible du fichier TP.

On pourrait créer une colonne supplémentaire avec une case à cocher qui permettrait de savoir que la ligne a déjà été recopiée. La macro cocherait automatiquement les lignes qu'elle prend en charge

J'avoue être un peu perdu.

Merci d'avance de votre aide
 

Pièces jointes

Re : copier des données entre plusieurs classeurs

Le plus simple consisterait à concevoir à chaque fois completement ton globla sur la base du contenu des 3 fichiers.
Est ce que cela peut te convenir?
Quand tu cliques sur ton bouton, le fichier global serait vidé puis nouvellement rempli des données des trois fichiers.
Dis moi si ok, et je te fais un essai.
Sinon c'est un peu plus compliqué mais faisable également
(mettre en italique, ou autre, une ligne qui a été mis dans le bilan)
Lorsque tu cliques sur le bouton, tu ne traites que ce qui n'est pas en italique
 
Re : copier des données entre plusieurs classeurs

je préfere la seconde solution (ne pas vider le fichier). C'est pour ça que je proposais une colonne supplémentaire avec case à cocher (ou autre) qui permettrai de déterminer ce qui a déjà été traité précédemment).

merci
 
Re : copier des données entre plusieurs classeurs

Donc, pour la démo, mettre tous les fichiers joints dans un repertoire d:\bilan
Le bouton actualiser est dans le fichier bilan
Seules les lignes qui ne sont pas en italiques dans chacun des 3 fichiers seront ajoutées au listing.
Dis moi ce que tu en penses.
A+
Fred
 

Pièces jointes

Re : copier des données entre plusieurs classeurs

Bonsoir le fil, bonsoir le forum,

Peut-être comme ça :
Code:
Option Explicit
 
Sub Macro1()
Dim co(0 To 2) As String 'déclare le tableau de variables co (Classeur Onglet)
Dim x As Byte 'déclare la variable x (incrément)
Dim cs As Workbook 'déclare la variable cs (Classeur Source)
Dim os As Worksheet 'déclare la variable os (Onglet Source)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
 
co(0) = "BB" 'définit la première variable du tableau co
co(1) = "EP" 'définit la deuxième variable du tableau co
co(2) = "VR" 'définit la troisième variable du tableau co
For x = 0 To 2 'boucle 1 : sur toutes les variables du tableau co
    Set cs = Workbooks(co(x) & ".xlsx") 'définit le classeur source
    Set os = cs.Sheets(co(x)) 'définit l'onglet source
    With os 'prend en comple l'onglet source du classeur source
        For Each cel In .Range("A2:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row) 'boucle 2 : sur toutes les cellules éditées cel de la colonne A
            If cel.Interior.ColorIndex <> 3 Then 'condition si la cellule n'a pas l'intérieur coloré de rouge
                Set dest = Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
                cel.EntireRow.Copy dest 'copie et la colle dans la cellule de destination
                cel.Interior.ColorIndex = 3 'colore la ligne de rouge
            End If 'fin de la condition
        Next cel 'prochaine cellule cel de la boucle 2
    End With 'fin de la pris en compte de l'onglet source du classeur source
Next x 'prochaine variavle de la boucle 1
End Sub

Il faut que tous les classeurs soient ouverts...
 
Re : copier des données entre plusieurs classeurs

merci FRED tes macros
ça marche mais ça met automatiquement les cellules suivantes en italique donc après elles ne sont pas reprises lors de l'action suivante.
en outre l'italique n'est pas très visible. Il faudrait je pense préférer soit utiliser une colonne en plus avec une inscription quand la synchro a été faite.
qu'en pensez vous
 
Dernière édition:
Re : copier des données entre plusieurs classeurs

"..ça marche mais ça met automatiquement les cellules suivantes en italique donc après elles ne sont pas reprises lors de l'action suivante...."
En effet, l'objectif étant de ne pas les retraiter si déjà traitées non?
Tu peux en effet ajouter une colonne de gestion. Moi je n'en mettrai pas pour alléger

Tu peux remplacer l'italique par le graspar ex. (Selection.Font.Bold = True) ou mettre le fond avec une couleur de ton choix etc...
As tu encore besoin de moi?
A+
Fred
 
Re : copier des données entre plusieurs classeurs

merci Fred

en fait il y a un problème c'est que l'italique se met même sur les lignes vide de sorte que lorsqu'on entre une nouvelle ligne, elle est en italique et il faut donc l'enlever pour que la macro puisse fonctionner
je ne sais pas comment corriger cela
 
Re : copier des données entre plusieurs classeurs

Donc, pour la démo, mettre tous les fichiers joints dans un repertoire d:\bilan
Le bouton actualiser est dans le fichier bilan
Seules les lignes qui ne sont pas en italiques dans chacun des 3 fichiers seront ajoutées au listing.
Dis moi ce que tu en penses.
A+
Fred

je reviens vers toi Fred car malgré mes efforts, je n'ai pas réussi à modifier la macro pour y ajouter un 4ème fichier (VM.xlsx). Je ne comprends pas pourquoi, peux tu m'aider

merci d'avance
 
Re : copier des données entre plusieurs classeurs

modif faite dans le fichier joint
Dis moi
Fred


quand je tente de l'appliquer rien ne se copie, on arrive à la dernière cellule de la feuille avec une fenêtre erreur d'exécution '1004'

quand on clique sur débogage voici la ligne surlignée

ActiveCell.Offset(1, 0).Range("A1").Select

que dois je faire? je n'ai pas trouvé

merci d'avance
 
Re : copier des données entre plusieurs classeurs

Bonsoir le fil, bonsoir le forum,

Peut-être comme ça :
Code:
Option Explicit
 
Sub Macro1()
Dim co(0 To 2) As String 'déclare le tableau de variables co (Classeur Onglet)
Dim x As Byte 'déclare la variable x (incrément)
Dim cs As Workbook 'déclare la variable cs (Classeur Source)
Dim os As Worksheet 'déclare la variable os (Onglet Source)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
 
co(0) = "BB" 'définit la première variable du tableau co
co(1) = "EP" 'définit la deuxième variable du tableau co
co(2) = "VR" 'définit la troisième variable du tableau co
For x = 0 To 2 'boucle 1 : sur toutes les variables du tableau co
    Set cs = Workbooks(co(x) & ".xlsx") 'définit le classeur source
    Set os = cs.Sheets(co(x)) 'définit l'onglet source
    With os 'prend en comple l'onglet source du classeur source
        For Each cel In .Range("A2:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row) 'boucle 2 : sur toutes les cellules éditées cel de la colonne A
            If cel.Interior.ColorIndex <> 3 Then 'condition si la cellule n'a pas l'intérieur coloré de rouge
                Set dest = Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
                cel.EntireRow.Copy dest 'copie et la colle dans la cellule de destination
                cel.Interior.ColorIndex = 3 'colore la ligne de rouge
            End If 'fin de la condition
        Next cel 'prochaine cellule cel de la boucle 2
    End With 'fin de la pris en compte de l'onglet source du classeur source
Next x 'prochaine variavle de la boucle 1
End Sub

Il faut que tous les classeurs soient ouverts...

bonsoir

il semble que ce code ne fonctionne pas si ce sont des fichiers xls et pas xlsx, même en modifiant la macro en ce sens, que puis je faire?

merci d'avance
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour