regrouper les données de plusieurs fichiers en un seul fichier et sur un onglet

khephrens

XLDnaute Occasionnel
Bonjour,
Je m’adresse à vous pour résoudre ce petit problème
Chaque mois, J’ai plusieurs fichiers pour lesquels j’aimerais regrouper les données en un seul fichier et sur un onglet
En sachant que :

Les fichiers à regrouper se trouvent dans le même dossier. Tous les dossiers mois après mois se trouvent dans le même répertoire.

Les fichiers ont toujours le même format :
o même nombre de colonne (7)
o même nom de colonne. les colonnes sont dans le même ordre
o Il n’y a qu’un onglet sur chaque fichier qui porte le même nom d’onglet en l’occurrence « hors antenne »
o Le nombre de ligne dans chaque fichier peut être différent d’un mois sur l’autre.

Peut-on créer une macro qui fasse ce travail automatiquement
Ci-joint deux fichiers exemple à regrouper
Je vous remercie par avance pour votre aide précieuse. :)
Bonne journée à tous
 
Dernière modification par un modérateur:

khephrens

XLDnaute Occasionnel
Re : regrouper les données de plusieurs fichiers en un seul fichier et sur un onglet

bonjour Paf et JJ1
Paf désolé pour cet oubli de confidentialité des fichiers

JJ1 merci infiniement pour cette macro qui fonctionne tres bien pour ce que je veux faire. Toutefois le fichier "recap" reprend, semble t il, les entêtes de colonnes de chaque fichier. Peux-t-on enrichir la macro pour que ces entêtes n'apparaissent qu'une fois en début de colonne du fichier récap??

JJ1,si cela ne vous prend pas trop de temps, pouvez-vous m'expliquer avec des commentaires ce à quoi correspond ent les lignes de code? cela m'aiderait beaucoup dans la compréhention et dan la progression :) merci encore et bravo

Sub Compilation()
Dim Temp As String
Dim Ligne As Long
Temp = Dir(ActiveWorkbook.Path & "\*.xls")
Application.DisplayAlerts = False
Do While Temp <> ""
If Temp <> "Recap.xls" Then
Workbooks.Open ActiveWorkbook.Path & "\" & Temp
Workbooks(Temp).Sheets(1).Range("A1").CurrentRegion.Copy
Workbooks("Recap.xls").Sheets(1).Activate
Ligne = Sheets(1).Range("A65536").End(xlUp).Row + 1
Range("A" & CStr(Ligne)).Select
ActiveSheet.Paste
Workbooks(Temp).Close
End If
Temp = Dir
Loop
Range("A1").Select
Application.DisplayAlerts = True
End Sub
 

khephrens

XLDnaute Occasionnel
Re : regrouper les données de plusieurs fichiers en un seul fichier et sur un onglet

Bonjour à tous
merci JJ pour ton aide


Postulat

Les fichiers à regrouper et le fichier "compil" se trouvent dans le même dossier. Tous les dossiers mois après mois se trouvent dans le même répertoire.


dans le fichier "compil" :

1 . Les fichiers se regroupent bien en feuil1 en cliquant sur le bouton "compiler"
2 . en cliquant sur le bouton "décaler" les données se décalent de la colonne H à la colonne G quand celle ci est vide
3 . le bouton "effacer" comme son nom l'indique effacent toute la page pour une réutilisation éventuelle.:D
au final il reste des cellules vides en colonne G

j'ai une petite demande supplémentaire à tous :). j'aimerais que les données de la colonne G puissent être copiées dans l'onglet "adresses" sans les cellules vides et si possible rechercher les doublons et les éliminer.
l’objectif étant de faire un fichier adresse mail

Ci-joint les fichiers exemple
Je vous remercie par avance pour votre aide précieuse.
Bonne journée à tous
 

Pièces jointes

  • compil.xlsm
    24.4 KB · Affichages: 58
  • L3I - Ministre.xls
    14.5 KB · Affichages: 46
  • L3I - Retraite.xls
    13.5 KB · Affichages: 47
  • raynald .xls
    11 KB · Affichages: 55
  • compil.xlsm
    24.4 KB · Affichages: 69
  • compil.xlsm
    24.4 KB · Affichages: 72

Staple1600

XLDnaute Barbatruc
Re : regrouper les données de plusieurs fichiers en un seul fichier et sur un onglet

Bonjour à tous


khephrens
Comme te l'a suggérer Paf il est urgent de supprimer les pièces jointes de ton premier message !
(et de les remplacer par des fichiers anonymisés
NB: Je ne comprends pas qu'étant inscrit depuis 2007, tu puisses encore ignorer ce point de la charte !!!

PS: Cela est moins urgent si tu me dis que ces données sont librement accessibles sur les sites gouvernementaux français.
(ce qui ne semble pas être le cas sauf erreur de ma part)
Cabinet du ministre de l'Intérieur - Ministère de l'Intérieur - Service-public.fr
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : regrouper les données de plusieurs fichiers en un seul fichier et sur un onglet

Re

En attendant l'anonymisation des PJ par le demandeur ou leur modération,
voici ma contribution "vbaistique" à la question (en passant par un Array)
NB: PREALABLE :La ligne d'entête sur la feuille 1 (A1:K1) du classeur compil.xlsm est déjà remplie manuellement
(avec les données de la feuille 2 par un copier/coller)
PS: test OK sur mon PC.

Code:
Sub CompilationII()
Dim Temp$, sWBK As Workbook, arTb, x&, y&, dl&
Dim f As Worksheet
Set f = ThisWorkbook.Sheets(1)
Temp = Dir(ActiveWorkbook.Path & "\*.xl*")
'Pour éviter le scintillement pendant la procédure
Application.ScreenUpdating = False
'Pour effacer les lignes avant de les copier.
f.Rows("2:" & Rows.Count).Clear
Do While Temp <> ""
    If Temp <> "compil.xlsm" Then
    Set sWBK = Workbooks.Open(ActiveWorkbook.Path & "\" & Temp)
     With sWBK
        With .Sheets(1)
            arTb = .Range(.Cells(2, "A"), .Cells(Rows.Count, "K").End(3))
        End With
        x = UBound(arTb, 1): y = UBound(arTb, 2)
        dl = f.Cells(Rows.Count, 1).End(3).Row + 1
        f.Range(f.Cells(dl, "A"), f.Cells(dl, "K")).Resize(x, y) = arTb
        Erase arTb
       .Close False
    End With
End If
Temp = Dir
Loop
Application.ScreenUpdating = True
End Sub
 
Dernière édition:

khephrens

XLDnaute Occasionnel
Re : regrouper les données de plusieurs fichiers en un seul fichier et sur un onglet

merci staple
la macro fonctionne parfaitement
celle que j'avais posté également
mais la question était dans mon message suivant que tu n'as peut etre pas lu !
je vous la réécris :

"j'ai une petite demande supplémentaire à tous . j'aimerais que les données de la colonne G puissent être copiées dans l'onglet "adresses" sans les cellules vides et si possible rechercher les doublons et les éliminer.
l’objectif étant de faire un fichier adresse mail"

ce que je souhaite en fait c'est que depuis la macro compilation on puisse arriver a une liste d'adresse sans doublon ni cellules vides.
l'objectif étant d'envoyer un emailing depuis cette liste.. voilà vous savez tout
je reste à votre disposition
PS : je debute en VBA et des commentaire dans les macro c'a m'aiderait bcp à progresser , Merci :eek:
khephrens
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : regrouper les données de plusieurs fichiers en un seul fichier et sur un onglet

Re


Voici une macro pour ce dernier point
(code obtenu avec l’enregistreur de macros..., puis un peu nettoyé par mes soins)
la macro ci-dessous s borne à faire :
les données de la colonne G puissent être copiées dans l'onglet "adresses" sans les cellules vides et si possible rechercher les doublons et les éliminer
Code:
Sub Macro1()
Dim f As Worksheet
Set f = Sheets("adresses")
Sheets("Feuil1").Columns("G:G").Copy f.Range("G1")
f.Columns("G:G").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.DisplayAlerts = False
f.Range(f.Cells(1, "G"), f.Cells(Rows.Count, "G").End(3)).RemoveDuplicates Columns:=1, Header:=xlYes
Application.DisplayAlerts = True
End Sub

PS: Pour moi un membre inscrit sur le forum depuis 2007 n'est plus un débutant ;)
(ou alors c'est qu'il n'a pas utilisé Excel depuis 7 ans! ;) )
 
Dernière édition:

khephrens

XLDnaute Occasionnel
Re : regrouper les données de plusieurs fichiers en un seul fichier et sur un onglet

:) en effet je redécouvre excel que j' ai du abandonner depuis tout ce temps
merci de m'avoir consacré ce temps
une petite dernière chose svp
la macro que vous m'avez envoyé pour les cellules vides et les doublons ne peut elle pas être intégrée à la macro "compil"?
merci pour ce boulot je vous en suis reconnaissant en tout cas
 

Staple1600

XLDnaute Barbatruc
Re : regrouper les données de plusieurs fichiers en un seul fichier et sur un onglet

Re

khephrens
Un débutant (titillé par son esprit curieux) serait susceptible de faire ce genre chose ;)
(le même débutant impétueux aurait de lui-même renommé la macro Macro1 avec le nom de son choix)
Code:
Sub MacroRegroupement()
CompilationII
Macro1
End Sub

PS: Ce n'est là qu'un gentil et amical titillement d'un ex-débutant en envers le néo-débutant que tu affirmes être ;)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 273
Messages
2 086 700
Membres
103 372
dernier inscrit
BibiCh