Coller dans 1 seul fichier des données issus de plusieurs fichie
Résolu/Fermé
Lalou83
Messages postés
3
Date d'inscription
mardi 9 septembre 2014
Statut
Membre
Dernière intervention
9 septembre 2014
-
Modifié par Lalou83 le 9/09/2014 à 15:17
Lalou83 - 18 sept. 2014 à 14:58
Lalou83 - 18 sept. 2014 à 14:58
Bonjour,
Après avoir essayé (en vain) de faire la macro, je me tourne vers vous.
Je souhaiterais mettre en place une macro qui devra sélectionner des données dans plusieurs fichiers qui auront le même format et avec un nom de fichier similaire sauf à la fin : « Time sheet_2014_xxx» pour les concaténer et les coller dans un seul fichier nommé "KPI_2014".
Les données des colonnes B jusqu'à AF dans l'onglet « TOT » des fichier time sheet devront être copiées et coller dans l'onglet « Data » du fichier « KPI_2014 » à partir de la ligne 5. Pour retrouver une même tâche dans un fichier, utiliser l'identifiant unique : CA + CO
Merci par avance pour votre aide précieuse
Après avoir essayé (en vain) de faire la macro, je me tourne vers vous.
Je souhaiterais mettre en place une macro qui devra sélectionner des données dans plusieurs fichiers qui auront le même format et avec un nom de fichier similaire sauf à la fin : « Time sheet_2014_xxx» pour les concaténer et les coller dans un seul fichier nommé "KPI_2014".
Les données des colonnes B jusqu'à AF dans l'onglet « TOT » des fichier time sheet devront être copiées et coller dans l'onglet « Data » du fichier « KPI_2014 » à partir de la ligne 5. Pour retrouver une même tâche dans un fichier, utiliser l'identifiant unique : CA + CO
Merci par avance pour votre aide précieuse
A voir également:
- Coller dans 1 seul fichier des données issus de plusieurs fichie
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Fichier iso - Guide
11 réponses
Lalou83
Messages postés
3
Date d'inscription
mardi 9 septembre 2014
Statut
Membre
Dernière intervention
9 septembre 2014
9 sept. 2014 à 15:29
9 sept. 2014 à 15:29
Voici le lien pour voir le fichier "Time sheet" : https://www.cjoint.com/?0IjpCks8KQV
Voici le lien pour voir le fichier "KPI_2014 : https://www.cjoint.com/?0IjpFlT4j6u
Voici le lien pour voir le fichier "KPI_2014 : https://www.cjoint.com/?0IjpFlT4j6u
Lalou83
Messages postés
3
Date d'inscription
mardi 9 septembre 2014
Statut
Membre
Dernière intervention
9 septembre 2014
Modifié par Lalou83 le 9/09/2014 à 15:33
Modifié par Lalou83 le 9/09/2014 à 15:33
Il y aura donc environ une dizaine de fichier time sheet dont les données seront concaténées dans un seul fichier : KPI.
Voici la table de correspondance :
Cellules de la time sheet A coller dans le fichier «KPI _2014»
Colonne B Colonne A
Colonne C Colonne B
Colonne D Colonne C
Colonne E Colonne D
Colonne F Colonne E
Colonne G Colonne F
Colonne H Colonne G
Colonne I Colonne H
Colonne J Colonne I
Colonne K Colonne J
Colonne L Colonne K
Colonne M Colonne L
Colonne N Colonne M
Colonne O Colonne N
Colonne P Colonne O
Colonne Q Colonne P
Colonne R Colonne Q
Colonne S Colonne R
Colonne T Colonne S
Colonne U Colonne T
Colonne V Colonne U
Colonne W Colonne V
Colonne X Colonne W
Colonne Y Colonne X
Colonne Z Colonne Y
Colonne AA Colonne Z
Colonne AB Colonne AA
Colonne AC Colonne AB
Colonne AD Colonne AC
Colonne AE Colonne AD
Colonne AF Colonne AE
Voici la table de correspondance :
Cellules de la time sheet A coller dans le fichier «KPI _2014»
Colonne B Colonne A
Colonne C Colonne B
Colonne D Colonne C
Colonne E Colonne D
Colonne F Colonne E
Colonne G Colonne F
Colonne H Colonne G
Colonne I Colonne H
Colonne J Colonne I
Colonne K Colonne J
Colonne L Colonne K
Colonne M Colonne L
Colonne N Colonne M
Colonne O Colonne N
Colonne P Colonne O
Colonne Q Colonne P
Colonne R Colonne Q
Colonne S Colonne R
Colonne T Colonne S
Colonne U Colonne T
Colonne V Colonne U
Colonne W Colonne V
Colonne X Colonne W
Colonne Y Colonne X
Colonne Z Colonne Y
Colonne AA Colonne Z
Colonne AB Colonne AA
Colonne AC Colonne AB
Colonne AD Colonne AC
Colonne AE Colonne AD
Colonne AF Colonne AE
thev
Messages postés
1965
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
3 mars 2025
708
10 sept. 2014 à 23:04
10 sept. 2014 à 23:04
ci-dessous macro
Sub consolidation()
'................... constantes ..........................................................
id_fichier_time_sheet = "*time_sheet_2014*"
i_time_sheet_ligne_deb = 3
i_kpi_ligne_deb = 5
'...................assignations feuille/colonnes fichier KPI et chemin .................
chemin_kpi = ActiveWorkbook.Path & "\"
Set sh_kpi = ActiveWorkbook.Sheets(1)
Set id_kpi = sh_kpi.Range("B:E")
Set récap_weeks_kpi = sh_kpi.Range("F:I")
Set weeks_kpi = sh_kpi.Range("K:AH")
'...................traitement..........................................................
nom_fichier_time_sheet = chemin_kpi & id_fichier_time_sheet
nom_fichier = chemin_kpi & Dir(chemin_kpi)
Do Until nom_fichier = chemin_kpi
If LCase(nom_fichier) Like LCase(nom_fichier_time_sheet) Then
'...... ouverture fichier time_sheet
On Error Resume Next
Application.DisplayAlerts = False
Workbooks.Open Filename:=nom_fichier
If Err.Number <> 0 Then MsgBox "erreur ouverture fichier " & nom_fichier
'...... assignation colonnes fichier time_sheet
Set id_time_sheet = Range("G:J")
Set récap_weeks_time_sheet = Range("C:F")
Set weeks_time_sheet = Range("K:AH")
'...... récupération ligne fichier time_sheet
i_time_sheet_ligne_fin = ActiveSheet.UsedRange.Rows.Count
For i_time_sheet_ligne = i_time_sheet_ligne_deb To i_time_sheet_ligne_fin
If Columns("B").Rows(i_time_sheet_ligne).Value = Empty Then Exit For
'...... recherche ligne fichier KPI correspondant à ceele du fichier time_sheet
GoSub rech_kpi_ligne
'...... copie colonnes B et G à J
sh_kpi.Columns("A").Rows(i_kpi_ligne).Value = Columns("B").Rows(i_time_sheet_ligne).Value
id_kpi.Rows(i_kpi_ligne).Value = id_time_sheet.Rows(i_time_sheet_ligne).Value
'...... cumul colonnes C à F
i = 0
For Each champ In récap_weeks_time_sheet.Rows(i_time_sheet_ligne).Columns
i = i + 1
récap_weeks_kpi.Rows(i_kpi_ligne).Columns(i) = récap_weeks_kpi.Rows(i_kpi_ligne).Columns(i) + champ.Value
Next
'...... cumul colonnes K à AH
i = 0
For Each champ In weeks_time_sheet.Rows(i_time_sheet_ligne).Columns
i = i + 1
weeks_kpi.Rows(i_kpi_ligne).Columns(i) = weeks_kpi.Rows(i_kpi_ligne).Columns(i) + champ.Value
Next
Next
ActiveWorkbook.Close
End If
nom_fichier = chemin_kpi & Dir()
Loop
'...................fin traitement ..........................................................
Exit Sub
'********************* sous-procédure ***************************************************************
rech_kpi_ligne:
i_kpi_ligne_fin = sh_kpi.UsedRange.Rows.Count
For i_kpi_ligne = i_kpi_ligne_deb To i_kpi_ligne_fin
If id_kpi.Rows(i_kpi_ligne).Columns(1) = Empty Then Exit For
If id_time_sheet.Rows(i_time_sheet_ligne).Columns(2).Value = id_kpi.Rows(i_kpi_ligne).Columns(2).Value _
And id_time_sheet.Rows(i_time_sheet_ligne).Columns(3).Value = id_kpi.Rows(i_kpi_ligne).Columns(3).Value Then
Exit For
End If
Next
Return
'***************************************************************************************************
End Sub
--
Sub consolidation()
'................... constantes ..........................................................
id_fichier_time_sheet = "*time_sheet_2014*"
i_time_sheet_ligne_deb = 3
i_kpi_ligne_deb = 5
'...................assignations feuille/colonnes fichier KPI et chemin .................
chemin_kpi = ActiveWorkbook.Path & "\"
Set sh_kpi = ActiveWorkbook.Sheets(1)
Set id_kpi = sh_kpi.Range("B:E")
Set récap_weeks_kpi = sh_kpi.Range("F:I")
Set weeks_kpi = sh_kpi.Range("K:AH")
'...................traitement..........................................................
nom_fichier_time_sheet = chemin_kpi & id_fichier_time_sheet
nom_fichier = chemin_kpi & Dir(chemin_kpi)
Do Until nom_fichier = chemin_kpi
If LCase(nom_fichier) Like LCase(nom_fichier_time_sheet) Then
'...... ouverture fichier time_sheet
On Error Resume Next
Application.DisplayAlerts = False
Workbooks.Open Filename:=nom_fichier
If Err.Number <> 0 Then MsgBox "erreur ouverture fichier " & nom_fichier
'...... assignation colonnes fichier time_sheet
Set id_time_sheet = Range("G:J")
Set récap_weeks_time_sheet = Range("C:F")
Set weeks_time_sheet = Range("K:AH")
'...... récupération ligne fichier time_sheet
i_time_sheet_ligne_fin = ActiveSheet.UsedRange.Rows.Count
For i_time_sheet_ligne = i_time_sheet_ligne_deb To i_time_sheet_ligne_fin
If Columns("B").Rows(i_time_sheet_ligne).Value = Empty Then Exit For
'...... recherche ligne fichier KPI correspondant à ceele du fichier time_sheet
GoSub rech_kpi_ligne
'...... copie colonnes B et G à J
sh_kpi.Columns("A").Rows(i_kpi_ligne).Value = Columns("B").Rows(i_time_sheet_ligne).Value
id_kpi.Rows(i_kpi_ligne).Value = id_time_sheet.Rows(i_time_sheet_ligne).Value
'...... cumul colonnes C à F
i = 0
For Each champ In récap_weeks_time_sheet.Rows(i_time_sheet_ligne).Columns
i = i + 1
récap_weeks_kpi.Rows(i_kpi_ligne).Columns(i) = récap_weeks_kpi.Rows(i_kpi_ligne).Columns(i) + champ.Value
Next
'...... cumul colonnes K à AH
i = 0
For Each champ In weeks_time_sheet.Rows(i_time_sheet_ligne).Columns
i = i + 1
weeks_kpi.Rows(i_kpi_ligne).Columns(i) = weeks_kpi.Rows(i_kpi_ligne).Columns(i) + champ.Value
Next
Next
ActiveWorkbook.Close
End If
nom_fichier = chemin_kpi & Dir()
Loop
'...................fin traitement ..........................................................
Exit Sub
'********************* sous-procédure ***************************************************************
rech_kpi_ligne:
i_kpi_ligne_fin = sh_kpi.UsedRange.Rows.Count
For i_kpi_ligne = i_kpi_ligne_deb To i_kpi_ligne_fin
If id_kpi.Rows(i_kpi_ligne).Columns(1) = Empty Then Exit For
If id_time_sheet.Rows(i_time_sheet_ligne).Columns(2).Value = id_kpi.Rows(i_kpi_ligne).Columns(2).Value _
And id_time_sheet.Rows(i_time_sheet_ligne).Columns(3).Value = id_kpi.Rows(i_kpi_ligne).Columns(3).Value Then
Exit For
End If
Next
Return
'***************************************************************************************************
End Sub
--
Thev,
C'est à ce niveau là que je dois changer qqch ?
'...................traitement..........................................................
nom_fichier_time_sheet = chemin_kpi & id_fichier_time_sheet
nom_fichier = chemin_kpi & Dir(chemin_kpi)
Je dois mettre le chemin pour que la macro recupere automatiquement les différents fichiers "time-sheet" ?
C'est à ce niveau là que je dois changer qqch ?
'...................traitement..........................................................
nom_fichier_time_sheet = chemin_kpi & id_fichier_time_sheet
nom_fichier = chemin_kpi & Dir(chemin_kpi)
Je dois mettre le chemin pour que la macro recupere automatiquement les différents fichiers "time-sheet" ?
thev
Messages postés
1965
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
3 mars 2025
708
15 sept. 2014 à 10:32
15 sept. 2014 à 10:32
Si le répertoire des fichiers time_sheet n'est pas celui où se trouve le fichier KPI2014, il faut effectivement définir le chemin absolu des fichier.s Exemple :
chemin_kpi = "C:\Users\Utilisateur\Documents\" (ne pas oublier "\" à la fin)
nom_fichier_time_sheet = chemin_kpi & id_fichier_time_sheet
nom_fichier = chemin_kpi & Dir(chemin_kpi)
--
chemin_kpi = "C:\Users\Utilisateur\Documents\" (ne pas oublier "\" à la fin)
nom_fichier_time_sheet = chemin_kpi & id_fichier_time_sheet
nom_fichier = chemin_kpi & Dir(chemin_kpi)
--
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
thev
Messages postés
1965
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
3 mars 2025
708
16 sept. 2014 à 11:54
16 sept. 2014 à 11:54
ci-joint fichier rectifié
https://www.cjoint.com/?3Iql2TSvCPJ
--
https://www.cjoint.com/?3Iql2TSvCPJ
--
Merci beaucoup Thev,
je viens d'essayer le fichier : j'ai ouvert le fichier rectifié, j'ai fait macro => exécuter et rien ne se passe. Comment-ca se fait ?
je viens d'essayer le fichier : j'ai ouvert le fichier rectifié, j'ai fait macro => exécuter et rien ne se passe. Comment-ca se fait ?
thev
Messages postés
1965
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
3 mars 2025
708
16 sept. 2014 à 18:50
16 sept. 2014 à 18:50
Il doit y avoir un souci au niveau de la syntaxe du chemin où se trouvent tes fichiers time_sheet
"C:\Users\alaffont\Desktop\Macro\dossier_timesheets\"
Tu peux dérouler l'exécution de la macro pas à pas via la touche F8. Si l'instruction : Do Until nom_fichier = chemin_kpi n'est pas exécutée, cela signifie que le chemin n'existe pas ou qu'il n'y a aucun fichier dans ce chemin.
Pour vérifier si c'est bien le problème, il te suffit
1)de mettre un des fichiers time_sheet dans le même répertoire que celui de KPI_2014
2) de mettre en commentaire l'instruction :
'chemin_kpi = "C:\Users\alaffont\Desktop\Macro\dossier_timesheets\"
--
"C:\Users\alaffont\Desktop\Macro\dossier_timesheets\"
Tu peux dérouler l'exécution de la macro pas à pas via la touche F8. Si l'instruction : Do Until nom_fichier = chemin_kpi n'est pas exécutée, cela signifie que le chemin n'existe pas ou qu'il n'y a aucun fichier dans ce chemin.
Pour vérifier si c'est bien le problème, il te suffit
1)de mettre un des fichiers time_sheet dans le même répertoire que celui de KPI_2014
2) de mettre en commentaire l'instruction :
'chemin_kpi = "C:\Users\alaffont\Desktop\Macro\dossier_timesheets\"
--
merci bcp
T'es trop fort, effectivement là ça marche. Par contre, j'avais bien le fichier time_sheet dans un autre dossier mais avec un trigramme différent. Par contre, la macro ne selectionne qu'un fichier time sheet alors qu'il y a n fichiers time sheets avec comme je disais en haut le même nom sauf à la fin où c'est le trigramme (xxx) de la personne concernée => Time_sheet_2014_xxx.
Pour cela je dois déclarer tous les trigrammes dans la partie constantes ?
T'es trop fort, effectivement là ça marche. Par contre, j'avais bien le fichier time_sheet dans un autre dossier mais avec un trigramme différent. Par contre, la macro ne selectionne qu'un fichier time sheet alors qu'il y a n fichiers time sheets avec comme je disais en haut le même nom sauf à la fin où c'est le trigramme (xxx) de la personne concernée => Time_sheet_2014_xxx.
Pour cela je dois déclarer tous les trigrammes dans la partie constantes ?
thev
Messages postés
1965
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
3 mars 2025
708
17 sept. 2014 à 16:31
17 sept. 2014 à 16:31
Ce n'est pas nécessaire.
id_fichier_time_sheet = "*time_sheet_2014*"
La recherche se fait avec l'instruction LIKE "*time_sheet_2014*". Les 2 astérisques indiquent n'importe quelle chaine de caractères avant ou après la chaine "time_sheet_2014"
Par ailleurs, l'emploi de la fonction Lcase qui convertit en minuscule permet une comparaison avec l'instruction LIKE sans tenir compte de la casse.
l
--
id_fichier_time_sheet = "*time_sheet_2014*"
La recherche se fait avec l'instruction LIKE "*time_sheet_2014*". Les 2 astérisques indiquent n'importe quelle chaine de caractères avant ou après la chaine "time_sheet_2014"
Par ailleurs, l'emploi de la fonction Lcase qui convertit en minuscule permet une comparaison avec l'instruction LIKE sans tenir compte de la casse.
l
--
ah ok, merci pour ta réponse
je viens de tester. J'ai dans mon dossier le fichier KPI 2014 et 3 fichiers times sheet. Le premier fichier se copie très bien, le deuxième il n'y a que la première ligne qui se copie et le 3 ème fichier, il y a seulement la dernière ligne qui se copie. Pourtant, j'ai bien fait attention à l'identifiant unique : CA + CO
...
je viens de tester. J'ai dans mon dossier le fichier KPI 2014 et 3 fichiers times sheet. Le premier fichier se copie très bien, le deuxième il n'y a que la première ligne qui se copie et le 3 ème fichier, il y a seulement la dernière ligne qui se copie. Pourtant, j'ai bien fait attention à l'identifiant unique : CA + CO
...
thev
Messages postés
1965
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
3 mars 2025
708
18 sept. 2014 à 08:56
18 sept. 2014 à 08:56
Le format des 3 fichiers est-il bien identique ? joins-moi les 3 fichiers times sheet
--
--
thev
Messages postés
1965
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
3 mars 2025
708
18 sept. 2014 à 10:20
18 sept. 2014 à 10:20
ci-joint version rectifiée
https://www.cjoint.com/?3IskwUdvVPR
--
https://www.cjoint.com/?3IskwUdvVPR
--