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
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 host - 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
1951
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
2 février 2025
698
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
1951
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
2 février 2025
698
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
1951
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
2 février 2025
698
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
1951
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
2 février 2025
698
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
1951
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
2 février 2025
698
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
1951
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
2 février 2025
698
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
1951
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
2 février 2025
698
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
--