Regroupement de plusieurs bases de données excel en un fichier sans doublon

JulienA

XLDnaute Nouveau
Bonjour à tous,

Voilà maintenant quelques jours que je cherche des solutions sur multiples forums et je réalise des tests mais tout cela sans succès.

J'ai plus d'une centaine de petits fichiers Excel (Base de données par pays ou par société ou par activité).
Tous ces fichiers ont la même trame (Même nombre et intitulé de colonnes)
Tous ces fichiers sont dans un même dossier "OLD"
J'aimerais tous les regrouper dans un seul fichier avec 2 onglets : France et Export
De plus il y a beaucoup de doublons.

Quelle méthode ou quelle macro pourrais-je utiliser pour accomplir ma mission ?

Merci par avance pour votre aide.

Julien
 

Pièces jointes

  • Synthèse BDD.xlsx
    10.2 KB · Affichages: 45
  • MAROC COMPLETE.xlsx
    29.5 KB · Affichages: 51
  • BASE ARCHITECTES.xlsx
    30 KB · Affichages: 62
Dernière édition:

Misange

XLDnaute Barbatruc
Re : Regroupement de plusieurs bases de données excel en un fichier sans doublon

Bonjour
Merci de supprimer très très vite ces fichiers qui contiennent des données non anonymes. Comme indiqué clairement dans la charte, il est indispensable que les classeurs postés sur XLD ne contiennent aucune données personnelles ou d'entreprises.
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Regroupement de plusieurs bases de données excel en un fichier sans doublon

Bonjour
Merci de supprimer très très vite ces fichiers qui contiennent des données non anonymes. Comme indiqué clairement dans la charte, il est indispensable que les classeurs postés sur XLD ne contiennent aucune données personnelles ou d'entreprises.

Bonjour

En effet les données ne paraissaient pas du tout bidons

J'ai supprimé les classeurs

Merci de reposter avec des données bidons des totos, des adresses fictives des mails ficitifs etc

Bonne journée
 

Zdz16

XLDnaute Occasionnel
Re : Regroupement de plusieurs bases de données excel en un fichier sans doublon

Bonjour;

Il est important avant tout d'avoir une idée sur la clé unique que tu veux garder.
La solution probable est de créer dans ces fichiers cette clé unique et de les mergés ensemble et ensuite enlever les doublons
Attention toute de même à la définition de la clé. Si c'est mal fait tu risque de perdre des données. Donc avant de supprimer les doublons sauvegarde ton fichier (resultat du merge avnat suppression des doublons).
Si c'est ok, il suffit ensuite de supprimer la colonne clé.

cordialement
 

Misange

XLDnaute Barbatruc
Re : Regroupement de plusieurs bases de données excel en un fichier sans doublon

Bonsoir
Mets tous les classeurs avec les données à consolider dans un dossier (ici test).
Hors de ce dossier, mets ce code dans le classeur recevant les données consolidées.

Code:
Option Explicit
Sub ConsoliderLesClasseurs()
Dim Chemin As String, Classeur As String
Dim TousClasseurs() As String
Dim NbLign As Long, NbClasseurs As Long
Dim ClasseurDépart As Workbook
Dim FeuilleDest As Worksheet
Dim PlageDépart As Range
Dim CalcMode As Long

    
With Application
    CalcMode = .Calculation
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    .EnableEvents = False
End With

'Si la feuille de destination n'est pas la première, adaptez
Set FeuilleDest = ThisWorkbook.Sheets(1)

' chemin du dossier contenant les Classeurs à consolider.
Chemin = "E:\www\test"

' Ajout d'un \ à la fin du chemin
If Right(Chemin, 1) <> "\" Then
    Chemin = Chemin & "\"
End If

' Sortie si il n'y a pas de classeur excel dans le dossier indiqué
Classeur = Dir(Chemin & "*.xl*")
If Classeur = "" Then
    MsgBox "Pas de classeur excel dans ce dossier"
    GoTo SortiePropre
    Exit Sub
End If

'on remplit un array (tableau VBA) avec le nom des Classeurs
NbClasseurs = 1
Do While Classeur <> ""
    ReDim Preserve TousClasseurs(1 To NbClasseurs)
    TousClasseurs(NbClasseurs) = Classeur
    Classeur = Dir()
    NbClasseurs = NbClasseurs + 1
Loop

' Boucle sur tous les classeurs stockés dans l'array

For NbClasseurs = LBound(TousClasseurs) To UBound(TousClasseurs)
'ce code est conçu pour des données se situant toujours en feuille 1
'des classeurs et commençant en A1 avec une ligne de titre
'si ce n'est pas le cas, adapter
    NbLign = FeuilleDest.Range("A1").CurrentRegion.Rows.Count
    Set ClasseurDépart = Workbooks.Open(Chemin & TousClasseurs(NbClasseurs))
    Set PlageDépart = ClasseurDépart.Worksheets(1).Range("A1").CurrentRegion
    If Not PlageDépart Is Nothing Then
        If PlageDépart.Rows.Count + NbLign >= FeuilleDest.Rows.Count Then
            MsgBox ("Le nombre de lignes à importer est trop important")
            ClasseurDépart.Close savechanges:=False
            GoTo SortiePropre
            ThisWorkbook.Close savechanges:=False
        Else
            'on ne copie pas la première ligne du tableau
            PlageDépart.Offset(1, 0).Resize(PlageDépart.Rows.Count - 1, PlageDépart.Columns.Count).Copy _
            Destination:=FeuilleDest.Range("A" & NbLign + 1)
            ClasseurDépart.Close savechanges:=False
        End If
    End If
Next NbClasseurs
SortiePropre:
With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = CalcMode
End With
End Sub

Pour ce qui est doublons, une fois que tu as fini d'importer, données/outils de données/supprimer les doublons
 
Dernière édition:

Zdz16

XLDnaute Occasionnel
Re : Regroupement de plusieurs bases de données excel en un fichier sans doublon

Bonjour;

Une clé unique est un identifiant unique d'un enregistrement données.
En plus claire et par exemple, si tu as des données de type clients (Nom, adresses, etc...). Tu peux leurs affecter un identifiant unique. Ainsi, il suffit d'utiliser cet identifiant pour consulter afficher, modifier les données qu'ils s'y rapportent.
Dans ton cas, la clé n'existe pas, donc il faut la construire. Pour cela tu pourrait concatener des données (des colonnes que tu choisit, et qui à ton avis sont différents d'une ligne à une autre).
Par exemple, supposant que tu as dans chaque feuille, le nom, la ville, le code postal. Tu créé une colonne qui est le resultat de la concaténation de ces colonnes que tu appelerai 'Clé'. Tu fais cela pour tout tes fichiers.
Ensuite tu merges tes fichiers contenant la clé. et tu supprime les doublons en se basant sur la colonne clé.
Cordialement
 

Misange

XLDnaute Barbatruc
Re : Regroupement de plusieurs bases de données excel en un fichier sans doublon

Bonjour Zdz16
Je ne pense pas que ce que tu suggères soit ce qui préoccupe Julien. Il ne s'agit pas de rapatrier des données d'un tableau dans un autre en comparant les données par un point commun (nom, référence...) mais de copier coller les uns en dessous des autres des éléments d'une base de données répartie sur plusieurs classeurs. En tous cas c'est comme cela que je comprends la question et que j'ai essayé d'y répondre.
 

Zdz16

XLDnaute Occasionnel
Re : Regroupement de plusieurs bases de données excel en un fichier sans doublon

Bonjour Missange;

C'est bien ce que j'ai compris. Bien evidemment l'action n'est à réalisée qu'une fois et si l'opération est à refaire chaque fois c'est sur qu'il y a un souci de conception dès le départ. Mais loin de moi de juger, c'est simplement un idée comme une autre. Dans tous les cas c'est ce que j'aurai fait et en plus je ferai de sorte qu'une clé deviendrai permanante de sorte à faire les contrôles de doublon à la saisie.

Cordialement
 

Discussions similaires

M
Réponses
9
Affichages
449
Maikales
M

Statistiques des forums

Discussions
311 720
Messages
2 081 897
Membres
101 833
dernier inscrit
sandra25