Jointure de plusieurs fichiers en un seul

lmc71

XLDnaute Occasionnel
Bonjour à tous, le Forum

J'utilise la macro ci-dessous pour relier le résultat de 12 fichiers en un seul. Cela fonctionne avec un petit bémol.

Mes 12 fichiers représentent les 12 mois, ils portent les nom suivants : 1 Déc, 2 Janv, 3 Fév et ainsi de suite jusqu'à 12 Nov. La macro me recopie bien toutes les 12 lignes voulues, mais dans un ordre qui n'est pas celui désiré.

Tous les fichiers ont le même formatage et se trouvent dans le même dossier.

Je ne comprend pas pourquoi cette macro ne reprend pas l'ordre logique du nom des fichiers, voici son ordre 1-3-4-2-5--6-7-8-9-10-11-12.

Y a-t-il un code particulier pour obliger cette macro à recopier l'ordre voulu des résultats ?

Merci d'avance
Amicalement:eek:


Sub recup_Bellegarde()
Range("c10").Select 'sélectionner la cellule de début
Chemin = "D:\cELINE HONORAIRES\Honoraires\Bellegarde\HO macro\" 'saisir le chemin complet du dossier où se trouvent les fichiers
Fichier = Dir(Chemin & "*.xls") ' Premier fichier
Do While Fichier <> ""
Workbooks.Open Filename:=Chemin & Fichier
Range("Donnée").Copy
ThisWorkbook.Activate
Selection.PasteSpecial Paste:=xlPasteValues
Windows(Fichier).Activate
Application.CutCopyMode = False
ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Activate
Range("c65536").End(xlUp).Offset(1, 0).Select
Fichier = Dir ' Fichier suivant
Loop
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Jointure de plusieurs fichiers en un seul

Bonsoir Imc71,

Je ne comprend pas pourquoi cette macro ne reprend pas l'ordre logique du nom des fichiers
Il n'y a pas d'ordre "logique" des fichiers pour la fonction Dir (ni pour moi d'ailleurs :confused: )

Puisque vous connaissez les noms de vos 12 fichiers, vous pouvez les indiquez dans une constante. Le code suivant n'a pas été testé:
Code:
Sub recup_Bellegarde()
Const MesFichiers = "1 Déc,2 Janv,3 Fév,4 Mars,5 Avr,6 Mai,7 Juin,8 Juil,9 Aout,10 Sept,11 Oct,12 Nov,13 Déc"
Dim Chemin As String, Fichier as string, S

Range("c10").Select 'sélectionner la cellule de début
Chemin = "D:\cELINE HONORAIRES\Honoraires\Bellegarde\HO macro\" 

For Each S In Split(MesFichiers, ",")
  Fichier=Chemin & S & ".xls"
  Workbooks.Open Filename:=Fichier
  Range("Donnée").Copy
  ThisWorkbook.Activate
  Selection.PasteSpecial Paste:=xlPasteValues
  Windows(Fichier).Activate
  ActiveWorkbook.Close savechanges:=False
  ThisWorkbook.Activate
  Range("c65536").End(xlUp).Offset(1, 0).Select
Next S
End Sub

  • Bien vérifier vos noms de fichiers et l'ordre désiré dans la constante MesFichiers
  • Ne pas inclure d'espace inutile (qui ne ferait pas partie intégrante du nom des fichiers) dans la constante
  • Modifier éventuellement l'extension des fichiers dans l'instruction Fichier=Chemin & S & ".xls"

Edit 23h22 : Modif code
 
Dernière édition:

lmc71

XLDnaute Occasionnel
Re : Jointure de plusieurs fichiers en un seul

Bonjour à Tous
Merci Mapomme de ta rapidité

J'ai essayé la macro, mais elle se bloque à la ligne Workbooks.Open Filename:=Fichier

J'ai renommé tous les fichiers comme suit, en supprimant les espaces, mais ça ne change rien.
Const MesFichiers = "1Déc,2Janv,3Fév,4Mars,5Avril,6Mai,7Juin,8Juil,9Aout,10Sept,11Oct,12Nov"

A+
Amicalement
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Jointure de plusieurs fichiers en un seul

(re) Bonsoir lmc71,

Ce n'est pas les fichiers qu'il faut renommer, mais mettre les noms des fichiers à traiter (sans leur extension) dans la constante texte "MesFichiers" et dans l'ordre dans lequel ces fichiers doivent être traités.
Si ces fichiers ont une extension différente de .xls, il faudra changer cette extension dans le code pour l'adapter à tes fichiers.
 

lmc71

XLDnaute Occasionnel
Re : Jointure de plusieurs fichiers en un seul

Bonjour
Merci Mapomme

Effectivement, j'avais omis que les fichiers portaient l'extension xlsm. J'ai apporté la modif.

J'ai lancé la macro voici son action : Elle ouvre le premier fichier, sélection et copie les valeurs voulues dans le fichier CIBLE, mais laisse ouvert ce fichier SOURCE, reste en mode sélection sur les valeurs à copier de ce fichier et se bloque à la ligne Windows(Fichier).Activate.

Tous les fichiers sont fermés au lancement de la macro.

Je travaille sous Excel 2007 et sur une feuille protégée.

Merci de ton aide précieuse.
Amicalement:)
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Jointure de plusieurs fichiers en un seul

Bonjour

Merci Mapomme
J'ai lancé la macro voici son action : Elle ouvre le premier fichier, sélection et copie les valeurs voulues dans le fichier CIBLE, mais laisse ouvert ce fichier SOURCE, reste en mode sélection sur les valeurs à copier de ce fichier et se bloque à la ligne Windows(Fichier).Activate.
Effectivement j'ai sans doute fait une grossière erreur, essayez de remplacer:
Windows(Fichier).Activate
par:
Windows(S & ".xlsm").Activate
 

lmc71

XLDnaute Occasionnel
Re : Jointure de plusieurs fichiers en un seul

Bonjour à Tous

Merci Mapomme

Entre nous l'erreur est humaine, mais ce n'est pas " une grossière" erreur.
Elle fonctionne très bien.

Peux-tu m'éclairer sur le code suivant.

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="scsj", UserInterfaceOnly:=True 'Enlève et remet le mot de passe

Elle se trouve dans une macro de "masque les lignes" de mes fichiers SOURCE. Quand j'utilise ta macro pour recopier les valeurs, automatiquement la feuille sur laquelle elle recopie les valeurs se trouve protéger par le mot de passe.
Ce n'est pas un mal en soit, mais elle n'est pas protégée au départ.
Une simple explication car je suis un nul et les termes, c'est de l'hébreu pour moi.
Merci grandement pour ta solution:cool:
A+
Amicalement
 

lmc71

XLDnaute Occasionnel
Re : Jointure de plusieurs fichiers en un seul

Re-Bonjour

Je viens "t’embêter" mais tu es trop compétant. C'est toujours au sujet de ta macro.

Voila ce qui se passe, Je veux l'utiliser pour copier une autre valeur des mêmes fichiers. Je mets les deux macros en copie avec les modifications que j'ai apporté à la 2ème
1ère macro qui fonctionne très bien et recopie les 12 valeurs

Sub recup_Bellegarde_Refait()

Const MesFichiers = "1Déc,2Janv,3Fév,4Mars,5Avril,6Mai,7Juin,8Juil,9Aout,10Sept,11Oct,12Nov"
Dim Chemin As String, Fichier As String, S

Range("c10").Select 'sélectionner la cellule de début
Chemin = "D:\cELINE HONORAIRES\Honoraires\Bellegarde\HO macro\"

For Each S In Split(MesFichiers, ",")
Fichier = Chemin & S & ".xlsm"
Workbooks.Open Filename:=Fichier
Range("Donnée").Copy
ThisWorkbook.Activate
Selection.PasteSpecial Paste:=xlPasteValues
Windows(S & ".xlsm").Activate
ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Activate
Range("c65536").End(xlUp).Offset(1, 0).Select
Next S
End Sub

2ème macro qui ouvre le 1er fichier et recopie la valeur et se bloque au 2ème fichier à la ligne Selection.PasteSpecial Paste:=xlPasteValues



Sub recup_Bellegarde_Paie_1Mens()
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="scsj", UserInterfaceOnly:=True


Const MesFichiers = "1Déc,2Janv,3Fév"
Dim Chemin As String, Fichier As String, R

Range("S3").Select 'sélectionner la cellule de début
Chemin = "D:\cELINE HONORAIRES\Honoraires\Bellegarde\HO macro\"

For Each R In Split(MesFichiers, ",")
Fichier = Chemin & R & ".xlsm"
Workbooks.Open Filename:=Fichier
Range("Paie").Copy
ThisWorkbook.Activate
Selection.PasteSpecial Paste:=xlPasteValues
Windows(R & ".xlsm").Activate
ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Activate
Range("c65536").End(xlUp).Offset(1, 0).Select
Next R

End Sub

Comme tu peux le voir, j'ai changé le S pour un R, je n'ai gardé que trois fichiers et modifier " Donnée" pour " Paie" dans Range Copy.

Je ne sais pas pourquoi elle ne fonctionne pas et vu ma compétence, je ne comprend pas.

Merci encore une fois et excuse de te mettre à contribution.
Amicalement
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Jointure de plusieurs fichiers en un seul

Bonsoir lmc71,

Code:
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="scsj", UserInterfaceOnly:=True

Tu as activé la protection du contenu des cellules ( Contents:=True ). Essaye de remplacer le True par False ( Contents:=False)
 

lmc71

XLDnaute Occasionnel
Re : Jointure de plusieurs fichiers en un seul

Bonsoir Mapomme
Merci pour la réponse
En ce qui concerne la macro de la protection qu'elle soit activée ou pas, cela ne change rien. De plus, je l'ai incorporée dans la 1ère macro et ça fonctionne. J'ai mis False en lieu et place de True, mais toujours le blocage au même endroit.

Je ne saisis pas le problème.
A+

Amicalement
 

Discussions similaires

Réponses
4
Affichages
546

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS